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



