Java的发展史
20世纪90年代,硬件领域出现了单片式计算机系统
91年,sun(Stanford University Network,斯坦福大学网络公司)成立Green项目小组开发oak语言,其中包括帕特里克、詹姆斯高斯林等人。
96年1月,SUN公司正式发布了Java的第一个开发工具包(JDK1.0)
Java语言平台
J2SE:标准版,主要为开发普通桌面应用程序,也是其他两者的基础
J2EE:企业版,是为开发企业环境下的应用程序提供一套解决方案
J2ME:小型版,主要是指移动设备或者嵌入式设备开发
JVM,JRE,JDK
什么是跨平台
平台指的是操作系统(如:windows,Linux,mac等)
跨平台:Java程序可以在任意操作系统上运行,一次编写到处运行
原理:实现跨平台需要依赖Java的虚拟机JVM(Java Virtual Machine)
图解原理:
Java程序
windows
Linux
Mac
Mac版jvm
win版jvm
Linux版jvm
JVM是Java虚拟机,Java程序需要运行在虚拟机上,不同平台有自己的虚拟机,因此Java语言可以跨平台,不同的平台有自己的虚拟机,因此Java语言可以跨平台
JRE包括Java虚拟机(JVM)和Java程序所需要的核心类库等
如果想要运行一个开发好的程序,计算机中只需要安装JRE即可。
JDK
JDK是提供给Java开发人员使用的,其中包含了Java的开发工具包,也包括了JRE,所以安装了JDK,就不用再单独安装JRE了。
JDK包含JRE和Java开发工具
三者的关系
JDK>JRE>JVM(包含的关系)
常用dos命令:
dir,cd,cd..,javac,java,java -version,win+r,win+e,win+d,cd\,cls,exit
安装配置JDK
这里面主要是对环境变量的控制,设置JAVA_HOME
注释:
单行注释:// 注释内容
多行注释:/*... 注释内容....*/
文本注释:/**.. 注释内容....*/
这种注释可以用来自动地生成文档。在JDK中有个javadoc的工具,可以由源文件生成一个HTML文档。使用这种方式注释源文件的内容,显得很专业,并且可以随着源文件的保存而保存起来。也就是说,当修改源文件时,也可能对这个源代码的需求等一些注释性的文字进行修改,那么,这时候可以将源代码和文档一同保存,而不用再另外创建一个文档。
文档注释位置
(1)类注释。类注释用于说明整个类的功能、特性等,它应该放在所有的“import”语句之后,在class定义之前。
这个规则也适用于接口(interface)注释。
(2)方法注释。方法注释用来说明方法的定义,比如,方法的参数、返回值及说明方法的作用等。方法注释应该放在它所描述的方法定义前面。
(3)属性注释。默认情况下,javadoc只对公有(public)属性和受保护属性(protected)产生文档——通常是静态常量。
(4)包注释。类、方法、属性的注释都直接放到Java的源文件中,而对于包的注释,无法放到Java文件中去,只能通过在包对应的目录中添加一个package.html的文件来达到这个目的。当生成HTML文件时,package.html文件的<BODY>和</BODY>部分的内容将会被提取出来当做包的说明。关于包注释,后面还会有更进一步的解释。
(5)概要注释。除了包注释外,还有一种类型的文档无法从Java源文件中提取,就是对所有类文件提供概要说明的文件。同样的,也可以为这类注释单独新建一个HTML文件,这个文件的名字为“overview.html”,它的<BODY>和</BODY>标记之间的内容都会被提取。
·@author:作者。
·@version:版本。
·@docroot:表示产生文档的根路径。
·@deprecated:不推荐使用的方法。
·@param:方法的参数类型。
·@return:方法的返回类型。
·@see:用于指定参考的内容。
·@exception:抛出的异常。
·@throws:抛出的异常,和exception同义
关键字
被Java语言赋予特殊含义的单词
组成关键字的字母全部都是小写
语法格式
常量和变量
常量是指在程序执行的过程中,其值不可以发生改变的量
变量的本质是内存中的一小块区域。在程序执行的过程中其值可以发生改变的量
变量的定义格式
数据类型 变量名 = 初始化值
数据类型
无论是内存还是硬盘,计算机存储设备的最小信息单元叫“位(bit)”,我们又称之为“比特位”,通常用小写的字母b表示。而计算机最小的存储单元叫“字节(byte)”,通常用大写的字母B表示,字节是由连续的8个位组成的。
1B=8bit
1KB=1024B
……
Java是一种强类型的语言
Java的数据类型分为:
基本数据类型:
整型:byte(1),short(2),int(4),long(8)
浮点型:float(4),double(8)
字符型:char(2)
布尔型:boolean(1)
引用数据类型:
类(class)
接口(interface)
数组([])
标识符
由字母、下划线、美元符号和数字组成
这里的字符采用的是unicode字符集,所以包括云纹大小写字母,中文字符,数字字符等
注意事项:数字不能开头
不能是Java的关键字
命名规则:
见名知意
包名:全部小写,一般是域名倒过来
类或者接口:首字母大写,驼峰原则
方法或者变量名:第一个单词小写,从第二个开始首字母大写
常量所有字母大写,如果是多个单词,则需要在每个单词下面用下划线链接
变量的注意事项:
变量未赋值,不能直接使用
变量只在它所在的作用域有效
类型转换
隐式转换
byte,short,char-->int -->long-->float-->double
强制转换
(目的类型)=(目的类型)需要被转换的类型;
运算符
对常量和变量进行操作的符号就称为运算符
表达式
用运算符把常量和变量连接起来的符合java语法的式子就可以成为表达式
算数运算符
+,-,*,/,%,
++,--
对于++和--单独运算,在前和在后没有区别,都是对自身进行运算。
但是在表达式中在前,表示先自我进行运算,再参与表达式运算,在后则是先参与表达式运算,再对自身进行运算。总结:“前自”
赋值运算符
+=,-=,*=,/=,%=,==
这里需要说明,两个符号,隐藏了强制类型转换
如:byte a=10;
a+=20;=》a=(byte)(a+20)
而a=a+20;却会报错,是因为默认20是int类型,类型不匹配,而上面却不会报错
关系运算符
>,<,>=,!=
说明:关系运算符的结果本身就是一个布尔值
逻辑运算符
&,|,^,!
&&,||
双目具有短路性,当前前面的表达式已经具有决定性的结果时,后面的表达式不在执行,实际开发中,多使用短路的
三目运算符
表达式 ?表达式1:表达式2
判断表达式1的值是否为真,为真执行表达式1,否则执行表达式2
键盘录入
Scanner in=new Scanner(System.in);
需要导入包,调用是使用构造方法构造(实例化)一个对象,用对象调用其方法。
控制流程语句
顺序结构
没有特定的语法,按照代码的先后顺序,一次执行。
在Java的主方法内部,实际上就是顺序执行的
选择结构
if语句
if(关系表达式){
语句体;
}
循环结构
for
for(初始化条件;判断条件;控制条件语句){
循环体语句;
}
while
初始化语句;
while(判断条件语句){
循环体语句;
控制条件语句;
}
do…while
初始化语句
do{
循环体语句;
控制条件语句;
}while(判断条件语句)
三种循环的区别
Do…while循环至少会执行一次
for和while循环只有在条件成立的时候才会去执行循环体
for和while循环的区别
控制条件语句的那个变量,在佛如循环结束后,就不能在被访问到了,而while循环结束后还可以继续使用,如果想继续使用推荐使用while,否则推荐使用while,原因是for结束后,该变量就从内存中消失,能够提高内存的使用效率。
while循环主要针对不确定循环次数的循环。
巧用while和for循环的死循环。
多重选择
Switch
switch(表达式){ //表达式的取值是byte,short,int,char,
//JDK5以后可以是枚举,JDK7以后可以是String
Case 表达式值1://case后面根的值与表达式进行比较的值
语句体1;
break;
…..
default:
语句体n+1;
break;
}
中断控制语句
break和continue
break的使用场景
在选择结构switch语句中和循环语句中
离开使用场景是没有意义的,break的作用是跳出单层循环。
coutinue的场景
在循环语句中使用,离开使用场景是没有意义的
break和continue的区别
break退出当前循环
coutinue结束的是本次循环
Random
产生随机数
用法:
//构造一个对象
Random s=new Random();
//获取随机数
Int number = s.nextInt(10);//获取0-10之间的随机数,包括0,但是不包括10.
数组
理解
数组是存储多个同一类型变量的容器,且这多个变量的数据类型要保持一致。
概念
数组是存储同一种数据类型多个元素的容器。
数组既可以存储基本的数据类型,也可以存储引用数据类型。
数组的定义格式
格式1:数据类型[] 数组名;
格式2:数据类型 数组名[];
这两种定义完以后,数组中是没有任何元素的
Java中的数组必须要先初始化然后才能使用
所谓的初始化:就是为数组中的数组元素分配内存空间,并为每个数组元素赋值。
动态初始化:
数据类型[] 数组名=new 数据类型[数组长度];
Int[] arr=new int[3];
动态初始化,只指定长度,由系统给出初始化值
静态初始化:
数据类型[] 数组名={1,2,3};//直接将元素放进去
静态初始化,给出初始化值,有系统决定长度。Java的发展史
20世纪90年代,硬件领域出现了单片式计算机系统
91年,sun(Stanf