📄 01_corejava_basic.txt
字号:
唐亮老师:
课程项目:
网上机票订票系统.
课程安排
基本语法
面向对象语法
高级编程接口
图形界面
多线程
I/O流
网络编程
jdk5.0的新特性
推荐书籍
不同的人的层次不同,所以推荐的书要因人而异.
到书店着本书看20分钟以上.
到书店发现了那么多的书,就会产生一种学习的紧迫感.然后想自己要多长时间看完什么什么书,最后一般是买回去也不看.
大学教材是大学的教授为了评职称写的书.
推荐:
jdk学习笔记 林信良
java面向对象编程 孙卫琴
基础偏差:
java2全方位学习 朱仲杰
有一定的java基础:
核心技术卷一卷二 sun为了能够系统的学习.
java编程思想 希望熟悉java底层的人看的.
Java版本 java Edition
JAVASE
用来作应用程序开发
JAVAEE
用来完成企业级开发,分布式的大型应用
JAVAME
小型应用程序
java早先是应用在嵌入式的应用的.sun也是希望能够整合所有家电厂商.
微软:希望能够在家电上使用的统一的平台.
这是个发展的趋势,希望可以给家电来进行编程和控制.
1995年1月发布了java,先今已经占据了50%的编程市场
1972年推出的c语言
80年代中期推出的c++语言
2000年左右就已经在
为什么发展的这么快
1.硬件性能的提升是很重要,
c++和java比,java最大的缺陷是性能.c++由于是面向机器的,它的性能很高的.
java由于有了jvm的作了中间的转换,所以java性能比较低.但是硬件是在不断的提升带来的性能.
java的优势在他的编程效率.比C++要高的多.
所以java的编程是很简单的.
语言的终极发展方向:
自然语言来完成编程.
人工知能和语音识别是最热门的两个课题.
语音识别很简单,但现在真正要解决的是语意的识别.
2.web互联网 applet flash 1995-1999 2000cn
java和c++的对比
sun给java定义的时候下了十一个定语.
1.简单
和c++相比是简单的多,java取出了很多让人迷惑的地方.
2.安全
针对c++,很多c++程序崩溃的原因,指针使用的错误.往往把有效的数据做更改.
c++申请的空间,需要自己释放,这些原因都会导制c++的崩溃.
java中的jvm帮助你回收对象资源,
3.跨平台
c++,源文件-->编译-->目标码(机器码)-->连接-->可执行文件.
c++编译的过程已经加入了所在平台的信息.
在windows平台和liunx平台的编译过程是不同的,所以c++是源码跨平台.
c++源码就涉及到了版权的问题.
java, 源文件-->编译-->字节码(不是机器码)-->装载JVM-->载jvm支持下运行.
java的编译过程没有加入机器平台的信息,这个字节码的格式是sun自己定义的.
java同样一个源码,不论载那个平台去编译得到的字节码都是一样的.
java的跨平台更深入了一个层次.
java在jvm的层次上不跨平台.如果要运行java语言那么需要一个和底层操作系统相关的jvm来解释字节码文件,然后让操作系统来执行它.
java虚拟机jvm屏蔽掉底层操作系统的差异.
java的概念
JDK
java 开发工具包,提供了api,文档,等等.
JRE
java 运行环境,只负责去运行.
JVM
java 虚拟机,解释字节码文件.它不能单独下载,它嵌入在JRE里面
这三个都是软件.
在http://java.sun.com网站上可以找到.java1.5.0_06版本
要根据操作系统平台来下载.
JDK目录内容
JAVA_HOME内容:
.../jre/ java的完整的jre
.../bin/ java的一些可执行文件,编译执行调试要用的命令
.../jre/lib/rt.jar 里面装有字节码(字节码文件)
java开发环境的搭建:
liunx 下环境搭建:
vi .bash_profile
JAVA_HOME = /opt/jdk1.5.0_06
PATH = $PATH:$JAVA_HOME/bin:.
CLASSPATH = .(字节码文件搜索路径)
export JAVA_HOME CLASSPATH PATH
source .bash_profile 只在当前shell有效,要注销一次.
java程序
1.源文件是个普通文本格式文件,扩展名为.java
2.一个Java源文件中可以定义多个class但是最多只能有一个class用public修改,并且该public的class,类名必须和文件名一致.
3.一个可运行的java应用程序,有且只有一个main()方法,并且main方法的签名是固定的,它是整个程序的入口方法.
java找寻字节码:
1.
2.
3.
编译:
javac
编译完后,我们定义了多少个类就会有多少个字节码文件.
运行:
java
主方法执行之后的结果.
加载的过程:
jvm在磁盘找.class文件,加载到内存的过程.
查找过程:
1.在当前目路下的同一个包里面找.
2.在jre/lib/xxx.jar文件.rt.jar是java的开发人员给我们建立的.
3.在classpath里面去找.
jvm在查找的过程中会自动的去查找这个
注意:常常我们自己写的类的类名回合jdk给我们提供的类名相同,这个时候jvm也就无法正确的加载我们想要的类型到jvm,程序也就出现了错误.
当然如果我使用全限定名.
package 包
它是用来管理组织我们不同的类的一些结构(目录),
如果要把所有类放在同一个目录下,那么就很容易出现同名的问题.
java中的包结构,等同于目录结构.
编译好之后,是我们源文件的包结构对应的是字节码放在那个目录下.
包的命名是有些约定俗成的规范
包名:开头com.tarena.Hello//所属公司
下来 .abs //项目名
数据原型 .model// 模块名
.submodel//子模块
做显示 .view//显示名
映射到目录
com/tarena/abs/model
com/tarena/abs/model/submodel
com/tarena/abs/view
如果我们按照这样的规范来命名包,最终所有不同的java代码都不会冲突.
加包之后需要注意的地方:
带有包的编译:
javac -d .
1.把编译好的源字节码文件放在指定的目录下.
2.如果源文件声明了包,使用-d选项,系统将会自动的在目标目录下按照包结构生成子目录.
带有包的运行:
如果直接的去运行类名,那么就出现了问题,
一旦你的程序加了包,那么这个类所属的下面就要加入包名.
java 后面要运行的类,就要指定他所属的包名.
并且还要保证,在执行运行命令的时候,必须是在com的所在的上一级目录.
classpath的含义
javac -d d:\corejava 文件名.java
创建一个d:\corejava目录.
然后在corejava目录下就有了com目录.
然后如果在当前目录下去运行,那么就找不到了.
如果希望我们的java命令在任何地方都能运行刚刚放的程序,那么就应当在classpath里面加上要查找的位置.
重要命令
important java commands
javadoc//自动文档生成工具
用来生成程序文档.
利用javadoc把源文件里加的一些注释生成一个文档.
以一个文件为例.用/** */这种文档注释.可以用javadoc把文档提取出来.
文档注释
可以加在类的前面
可以加在属性的前面
可以加在方法的前面
javadoc -d d:\doc String.java 把String.java文件中的文档注释生成提示文档.
jar//
操作归档文件jar文件的操作.
创建,更新,展开
创建归档文件,java程序开发好之后,最终给用户使用的时候,我们交给用户的是字节码,源码可以不用给,最终都是完成com/....,最终把整个com目录发送过去.
最好是把所有的内容都打包成一个.jar文件.最后只用传送一个文件.
以后要使用第三方厂商提供的软件包的时候,我们怎样来使用这些提供的类.
jar文件里面可以直接的使用jar文家里面提供的内容.
只要我的classpath能找到这个jar文件,就可以使用里面包含的类了.
创建
jar -cvf //c:create v:visable f:file文件名(创建的jar文件的名字,自己指定)
jar -cvf abc.jar (要压缩的目录)//com子目录.
class ....abc.jar
java Hello
运行jar文件里面有main方法的类.
java -classpath abc.jar Hello
jar文件的名字也算一级目录.
import
告诉编译器,使用的类是那个包下的类.
jar import package
string system 是放在java.lang包下面的.
如果要使用String 那么就应该要import java.lang.*;
java.lang包下面所有的类,可以不经到如直接使用.只有一个包是这样的.就因为这个包下的类太常使用了.
lang == language的缩写,语言包.
java.awt;javax.swing;图形开发
java.io;做输入输出的.
java.net;做网络开发的.
java.util;提供了一些工具.
这些包的分类,在以后的学习会一一的讲解.
书上的第一章已经完成了.
回忆开发过程.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -