复习
第一章 概述
发展与历史与现状
历史:1990 sun公司启动green计划
1992 创建Java
1994 James Gosling参加硅谷大会,通过java编写的浏览器WebRunner演示了java的功能,并震惊世界
1995 sun公司发布jdk第一个版本
2009 oracle收购sun公司
现状:是世界上最卓越的企业应用于移动应用之一
发展:安卓、物联网、云计算、大数据
Java特点
Java特点一共有十一个分别是:简单的 面向对象的 分布式的 解释的 安全的 高效的 结构中立的 动态的 多线程的 可移植的 健壮的
Java运行机制
编译性:将一些高级语言编译成一些特定平台使用的机器码
解释性:对源程序解释成特定平台使用的机器码并且立即执行
源文件---通过javac编译---》生成.class文件(字节码)---Java解释执行---》平台机器码
Java两大机制
JVM Java虚拟机
GC Java垃圾回收机制
第二章 数据类型和运算符
Java的注释 单行注释 //,多行注释/*...*/,文档注释/**...*/
Java标识符
标示符:所谓标示符就是给程序中类、方法、变量命令的符号。
标识符的命名规则:要以字母,下划线,美元符号开头,后面可以跟上字母,下划线,美元符号,数字等
注:不能使用Java关键字,保留字,直接量作为标识符,不能有空格,长度不受限制
Java关键字(48),保留字(两个goto,const),直接量(三个false,true,null)
注:Java关键字,保留字,直接量都是小写,并且严格区分大小写
Java数据类型
基本数据类型 引用数据类型
基本数据类型(整数类:byte,short,int,long 浮点类:float,double 字符类:char 布尔类:boolean)
引用数据类型(数组 类 接口)
Java数据类型转换
自动类型转换:由大数据类型转换成小数据类型
例如:int a=10 double b=a;
强制类型转换:由大数据类型转换成小数据类型
例如:double a=10 int b=(int)a;
注,强制类型转换不可以乱用
int a = 233;
byte b = (byte)a;//强制类型转换,结果是(-23)因为byte范围是-128到127损失精度
数据类型从大到小分为
Byte->short(char)->int->long->float->double
注:boolean不能进行数据类型转换
Java运算符
算术运算符+ - * / %
加 减乘 除 取模(取余)
关系运算符> >= < <= == !=
大于大于等于 小于 小于等于 等于 不等
关系表达式得到的结果是true或false
自增自减运算符 ++ --
自增 自减
逻辑运算符&& || ! ^ & |
与 或 非 异或 与 或
位运算符& | ^
位运算符用于整数之间的位运算,将两个整数转换成2进制来运算
& 按位求与 (两个1就为1 ,其他都为0)
| 按位求或 (有一个1就为1)
^ 异或 (两个相同为0 不同为1)
赋值运算符=
注意将 =和==区分开来。=是赋值 ==是判断是否相等
第三章 流程控制与数组
流程控制的三种结构
顺序结构 分支结构 循环结构
顺序结构:自上而下的运行;
分支结构:根据逻辑判断,有选择的执行其中某部分的代码;
循环结构:分局逻辑判断,重复的执行某代码块,
分支结构
If else分支
单分支:if(表达式){
代码块
}
二路分支:if(表达式){
代码块
}else{
代码块
}
说明:
如果表达式的值为true,则执行代码块1,
如果表达式的值为false,则执行代码块2.
多路分支:if(表达式){
代码块
}else{
代码块
}else if(表达式)。。。{
代码块
}else if(表达式){
代码块
}
说明:
如果表达式1的值为true,则执行代码块1,如果表达1的值为false,则判断表达式2
如果表达式2的值为true,则执行代码块2,如果表达式2的值为false,则判断表达式3
如果表达式3的值为true,则执行代码块3,如果表达式3的值为false,则判断表达式4
…….
…….
如果都不成立,则进入else中执行代码块n。
Switch分支
语法:
switch(表达式){
case 值1:代码块1;
break; //break不是必须的,根据情况而定
case 值2:代码块2;
break;
……
…...
……
default:代码块n; //default可有可无
}
注意: JDK6中表达式的类型只能为byte short int char
JDK7中表达式的类型只能为byte short int char String
说明:
根据switch后面表达式的值,去依次和case后面的值匹配,遇到匹配的就从这个case进入,执行后面的代码块,不再判断后面的case、default标签的值是否匹配,他会一直往下执行,直到遇到break才会停止。如果没有遇到匹配的,就执行break后面的代码块。
循环结构
For循环
语法:
for(表达式1;表达式2;表达式3){
循环体;
}
说明:
表达式1:初始化变量
表达式2:循环条件
表达式3:循环增量
首先执行表达式1–》判断表达式2,如果表达式2成立,则执行循环体,循环体执行完成后,执行表达式3。执行完3,又判断表达式2是否成立….依次循环,直到表达式2不成立循环截止。
While循环
语法:
while(循环条件){
代码块/循环体;
}
说明:
首先判断循环条件是否为true,如果为true则进入循环体执行,执行完成后自动回到前面再次判断循环条件,如果为true则进入循环体执行,执行完成后又回到前面再次判断,依次循环,直到循环条件为false则循环结束。
do...while循环
语法:
do{
代码块/循环体;
}while(循环条件);
说明:
首先进入循环体执行,执行完成后判断循环条件是否成立,如果条件成立回到前面再次执行循环体,执行完成又判断循环条件是否处理,如果条件成立回到前面执行循环体,依次循环,直到循环条件不成立,则循环截止。
While和do...while的区别
总结: while是先判断,再执行
do…while先执行,后判断
do…while至少执行一次。
循环的控制 break、continue 的区别
break语句除了可以用在switch语句中,还可以用在循环体中。在循环体中遇见break语句,立即结束循环,跳到循环外,执行循环结构后面的语句 。break语句用于结束整个循环。
continue语句用于结束本次循环,即在循环体中遇见continue语句,则循环体中continue语句后面的语句不会执行,接着进行下一次循环的判定。
数组
数组是所有编程语言中一种最常用的数据结构,它用来存储多个相同类型的数据。
下标:数组的下标是从零开始的
int[] a = {55,66,85,32,75};
55 ------------ a[0]
66 ------------ a[1]
85 ------------ a[2]
32 ------------ a[3]
75 ------------ a[4]
Length是输出数组的长度
数组内存的分析
栈:基本数据类型的变量值,引用数据类型的地址值
堆:引用数据类型的真实值