编译运行过程:
编译期:.java源文件,经过编译,生成.class字节码文件
运行期:JVM加载.class并运行.class(0和1)
特点:跨平台、一次编程到处使用
JVM:java虚拟机
加载.class并运行.class
JRE:java运行环境
除了包含JVM以外还包含了运行java程序所必须的环境
JDK:java开发工具包
除了包含JRE以外还包含了开发java程序所必须的命令工具
运行java程序的最小环境为JRE
开发java程序的最小环境为JDK
变量
存数的,代词,指代的就是里面的那个数
声明:-------相当于在银行开了个帐户
初始化/第一次赋值:-----相当于给帐户存钱
使用:----使用的是帐户里面的钱
对变量的使用就是对它所存的那个数的使用,变量在用之前必须声明并初始化
命名:
只能包含字母、数字、_和$符,不能以数字开头
严格区分大小写
不能使用关键字
允许中文命名,但不建议,建议"英文的见名知意"、“小驼峰命名法”
八种基本数据类型
byte,short,int,long,float,double,boolean,char
int:整型,4个字节,-231 ~231-1
整数直接量默认为int类型,但不能超出范围,若超范围则发生编译错误
两个整数相除,结果还是整数,小数位无条件舍弃(不会四舍五入)
运算时若超范围,则发生溢出(溢出不是错误,但是需要避免)
long:长整型,8个字节,-263 ~263-1
长整型直接量需在数字后加L或l
运算时若有可能溢出,建议在第1个数字后加L
double:浮点型,8个字节,-263 ~263-1
浮点数直接量默认为double型,若表示float需在数字后加F或f
double和float型数据参与运算时,有可能会发生舍入误差,精确场合不能使用
boolean:布尔型,1个字节
只能存储true或false
char:字符型,2个字节,0 - 2^16-1;
采用Unicode字符集编码格式,一个字符对应一个码,表现的形式是字符char,但本质上是码int(0到65535之间)
Java中的char类型由两个字节即十六位来表示,因为是无符号数,所以为2的16次方,
ASCII码:‘a’—97 ‘A’—65 ‘0’—48
字符型直接量必须放在单引号中,有且仅有一个字符
特殊符号需通过来转义
类型间的转换
基本类型由小到大依次为:
byte----short----int----long----float----double
char----
两种方式:
自动/隐式类型转换:小类型到大类型
强制类型转换:大类型到小类型
语法:(要转换成为的数据类型)变量
注意:强转有可能发生溢出或丢失精度
两点规则:
整数直接量可以直接赋值给byte,short,char,但不能超出范围
byte,short,char型数据参与运算时,系统一律自动将其转换为int再运算
运算符
运算的符号
算术:+,-,,/,%,++,–
关系:>,<,>=,<=,==,!=
逻辑:&&,||,!
赋值:=,+=,-=,=,/=,%=
字符串连接:+
条件/三目:(布尔表达式)?true:false
分支结构
基于条件执行某语句
if结构:
if(布尔表达式)
{
//如果布尔表达式为true将执行的语句
}
if…else结构:
if(布尔表达式){
//如果布尔表达式的值为true
}else{
//如果布尔表达式的值为false
}
if…else if结构:
if(布尔表达式 1){
//如果布尔表达式 1的值为true执行代码
}else if(布尔表达式 2){
//如果布尔表达式 2的值为true执行代码
}else if(布尔表达式 3){
//如果布尔表达式 3的值为true执行代码
}else {
//如果以上布尔表达式都不为true执行代码
}
switch…case结构:switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。
switch(expression){
case value :
//语句
break; //可选
case value :
//语句
break; //可选
//你可以有任意数量的case语句
default : //可选
//语句
}
优点:效率高、结构清晰
缺点:只能对整数判断相等
break:跳出switch
switch可以作用于byte,short,int,char,String,枚举类型
循环
反复多次执行一段相同或相似的代码
循环三要素:
循环变量的初始化
循环的条件(以循环变量为基础)
循环变量的改变(向着循环的结束变)
循环变量:在整个循环过程中所反复改变的那个数
循环结构:
while结构:先判断后执行,有可能一次都不执行
while( 布尔表达式 ) {
//循环内容
}
do…while结构:先执行后判断,至少执行一次
do {
//代码语句
}while(布尔表达式);
for循环:应用率高,循环结构变得更加简单
for(初始化; 布尔表达式; 更新) {
//代码语句
}
增强 for 循环:主要用于数组
for(声明语句 : 表达式)
{
//代码句子
}
声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块,其值与此时数组元素的值相等。
表达式:表达式是要访问的数组名,或者是返回值为数组的方法。
跳出循环
break:跳出循环
continue:跳过循环体中剩余语句而进入下一次循环
嵌套循环:
循环中套循环,常常多行多列时使用,一般外层控制行,内层控制列
执行过程:外层循环走一次,内层循环走所有次
建议:嵌套层数越少越好,能用一层就不用两层,能用两层就不用三层
break只能跳出当前一层循环
数组
是一种数据类型(引用类型)
相同数据类型元素的集合
定义:
初始化:给数组中的元素做初始化
访问:访问的是数组中的元素
通过(数组名.length)可以获取数组的长度(元素的个数)
通过下标/索引来访问数组中的元素
下标从0开始,最大到(数组的长度-1)
遍历/迭代:从头到尾挨个走一遍
方法
方法:函数、过程
封装一段特定的业务逻辑功能
尽可能的独立,一个方法只干一件事
方法可以被反复多次调用
减少代码重复,有利于代码复用,有利于代码维护
定义方法:五要素
修饰词 返回值类型 方法名(参数列表) {
方法体--------------具体的业务逻辑功能实现
}
调用方法:
无返回值:方法名(有参传参);
有返回值:数据类型 变量 = 方法名(有参传参);
return:
return 值; //1)结束方法的执行 2)返回结果给调用方 ----------用在有返回值方法中
return; //1)结束方法的执行-----------------用在无返回值的方法中
形参:形式参数,定义方法时的参数为形参
实参:实际参数,调用方法时的参数为实参
数组方法
复制:
System.arraycopy(a,1,b,0,4);
//灵活性好 //a:源数组 //1:源数组的起始下标 //b:目标数组 //0:目标数组的起始下标 //4:要复制的元素个数
int[ ] b = Arrays.copyOf(a,6);
//灵活性差 //a:源数组 //b:目标数组 //6:目标数组的长度(元素个数) //---若目标数组长度>源数组长度,则末尾补默认值 //---若目标数组长度<源数组长度,则将末尾的截掉
排序:
Arrays.sort(arrays); //升序排列(从小到大)



