java开发环境
- Java编译运行过程分为编译器和运行期
1.1 编译器:Java源文件经过编译生成 .class字节码文件。
1.2 运行期:JVM加载 .class并允许 .class
Java的特点
一次编程到处使用、跨平台
名词解释
- JVM:Java虚拟机
加载 .class并允许 .class - JRE:Java运行的最小环境
包含JVM和运行Java系统类库 - JDK:Java开发的最小环境
包含JRE和编译、运行等命令工具
Eclipse:IBM公司开发的、免费的、开源的、不需要安装仅需解压即可
注释:解释性文本
- 单行注释://
- 多行注释:/* */
- 文档注释:/** */ 用在类和方法上
变量
- 存数的,代词,指代的就是它所存的哪个数
- 初始化:第一次赋值
- 使用
3.1 对变量的使用就是对它所存的哪个数的使用
3.2 变量的使用必须与数据类型相匹配
3.3 变量在使用之前必须声明并初始化 - 命名
4.1 只能包含数字、字母、- 和 $,并且不能以数字开头
4.2 严格区分大小写
4.3 不能使用关键字
4.4 可以中文命名,但不建议,建议 英文的见名知意 使用 驼峰命名法
基本数据类型
也叫原始数据类型
-
int:整型 ,4字节 2147483647到 -2147483648
1.1 直接量默认为0
1.2 两个整数相除,结果还是整数
1.3 整数运算时,若超范围则发生溢出,溢出时需要避免的 -
long:长整型,8字节 9223372036854775807到 -9223372036854775808
2.1 长整型的直接量需要在后面加l或L 默认为0L
2.2 运算时若有可能发生溢出,建议在第一个数字后加L -
double:双精度浮点型, 8字节 1.7976931348623157E308到 4.9E-324
3.1 直接量默认值为0.0D
3.2 在参与运算时,有可能会出现舍入误差 -
float:单精度浮点型 4字节 3.4028235E38到 1.4E-45
4.1 直接量后面需要加F或f 默认为0.0F -
boolean:布尔型 1字节 默认为false
5.1 只能赋值为true或 false -
char:字符型 2字节 0到 65535
6.1 采用Unicode字符集编码,每个字符都有一个对应的码,表现得形式为字符char,但本质上是int 在单引号中,只有一个 ‘a’=97,‘A’=65 ‘0’=48 特殊得字符用 / 来进行转义 -
byte:字节型 1字节 -128到 127
-
short:短整型 2字节 -32768到 32767
基本数据类型间的转换
- 数据类型从小到大依次为:
byte,short,int,long,float,double |
---|
char(和short平级) |
-
两种方式
2.1 自动类型转换:小类型到大类型
2.2 强制类型转换:大类型到小类型
(要转换成为的数据类型)变量
例:(int)a
强转有可能溢出或丢失精度 -
两点规则
3.1 整数直接量可以直接赋值给byte,short,char但是不可以超出他们的范围
3.2 byte,short,char型数据参与运算时,先一律转换为int再运算
运算符
-
算术运算符: +,-,*,/,%,++,–
1.1 余数为0叫做整除
1.2 ++,–
1.2.1 单独使用就是加1或减1
1.2.2 写在变量表示在使用这个变量之前加1或减1
1.2.3 写在变量之后表示这个变量使用完之后再加1或减1 -
关系运算符:>,<,>=,<=,==,!=, boolean
-
逻辑运算符:&&(与),||(或),!(非)
3.1 短路与:前false后不运行
3.2 短路或: 前true后不运行 -
赋值运算符:=,+=,-=,*=,/=,%=
-
字符串连接运算符:+
-
条件/三目运算符:boolean ? 数1:数2
6.1 条件为true运行数1
6.2 条件为false运行数2
分支结构
- if 结构:1条路
- if…else 结构:2条路
- if…else if 结构:多条路
- switch…case 结构:多条路
4.1 优点:效率高,结构清晰
4.2 缺点:整数,相等
4.3 从java7开始,switch语句的条件可以是spring型的
4.3 break: 跳出switch
循环结构
循环:反复执行一段相同或相似的代码
循环三要素:
-
循环变量的初始化
-
循环的条件(以循环变量为基础)
-
循环变量的改变(向着循环的结束变)
循环变量:再整个循环过程中所反复改变的哪个数 -
while:先判断后执行,有可能一次都不执行
-
do…while:先执行后判断,至少执行一次
要素1和要素3相同时,首选do…while -
for:应用率高,与次数相关的循环
-
break:跳出循环
-
continue:跳过循环体中剩余语句而进入下一次循环
三种循环结构的更佳适用情况: -
while:当…
-
do…while:直到…
-
for:与次数相关的
嵌套循环
- 循环中套循环,一般多行多列时使用,外层控制行,内层控制列
- 执行规则:外层循环走一次,内层循环走所有次
- 建议:嵌套循环层次越少越好,能用一层就不用两层,超过三层表示设计有问题
- break:只能跳出一层循环
- 使用标识符,可以指定从哪里开始下一次循环
- 程序=算法+数据结构
6.1 算法:解决问题的流程/步骤(顺序,分支,循环)
6.2 数据结构:将数据按照某种特定的结构来保存
设计良好的/合理的数据结构会导致好的算法
数组
-
相同数据类型元素的集合
-
是一种数据类型(引用类型)
-
数组的声明:
3.1 int[] arr = new int[10] 声明一个整型的数组arr,里面包含10个元素 -
数组的初始化
int[] arr = new int[4]; //0,0,0,0
int[] arr = {1,2,3,4}; //1,2,3,4
int[] arr = new int[]{1,2,3,4}; //1,2,3,4
int[] arr;
arr = new int[]{1,2,3,4}; -
数组的访问
5.1 通过 (数组名.length) 可以获取数组的长度(数组元素的个数)
5.2 通过下标/索引来访问数组中的元素,下标从0开始,最大到(数组名.length-1) -
数组的遍历:通过for循环
-
数组的复制
7.1 System.arraycopy(a,1,a1,0,4);
把a数组中下标从0到4的元素复制到a1数组中从下标1开始复制
7.2 int[] a1 = Arrays.copyOf(a,6);
把a数组中的前6个元素复制到a1中
a=Arrays.copyOf(a,a.length+1); //数组的扩容
7.3 数组的排序
Arrays.sort(arr); //从小到大排序