一.Java语言的重要特点
1. 面向对象的(opp)
2. 健壮的
3. 跨平台性的(一个编译好的.class文件可以在多个系统下运行)
4. 解释性语言
二、Java核心机制-Java虚拟机
1. JVM基本介绍
(1)全称:Java virtual machine(Java虚拟机)
(2)JVM是一个虚拟的计算机,具有指令集并使用不同的存储区域。负责执行指令、管理数据、内存、寄存器,包含在JDK中
(3)对于不同的平台,有不同的虚拟机
(4)实现“一次编译,到处运行”
2. JDK基本介绍
(1)全称:Java development kit(Java开发工具包)
(2)
JDK=JRE+JAVA的开发工具
【Java,javac,javadoc,javap】
(3)JDK包含了Java开发工具,也包括了JRE
3. JRE基本介绍
(1)全称:Java runtime environment(Java运行环境)
(2)
JRE=JVM+Java的核心类库
(3)包括Java虚拟机和Java核心类库。若要运行开发好的Java程序,只需安装JRE即可
三、Java开发快速入门
1. 运行原理
2. 注意事项
(1)源文件以.java为扩展名,基本组成部分是类
(2)Java程序执行入口为main()方法,其固定格式为:public static void main(String[] args){…}
(3)Java语言严格区分大小写
(4)源文件中最多包含一个public类,其他类个数不限
(5)文件名必须为public类类名
(6)可将main方法写在非public类中,指定运行非public类,这样入口方法就为非public的main方法
四、Java转义字符
在控制台,输入tab键,可以实现命令补全
\t:一个制表位,实现对齐的功能
\n:换行符
\\:一个\
\":一个"
\':一个'
\r:一个回车
五、注释
1. 注释类型
(1)单行注释 //(2)多行注释/*
/(3)文档注释/
* */
2. 细节
(1)多行注释里不允许有多行注释嵌套
六、代码规范
- tab默认整体向右移动,shift+tab整体向左移
- 运算符和=两边习惯各加一个空格
- 行宽度不超过80字符
七、变量
1. 概念
变量相当于内存中一个数据存储空间
2. 使用注意事项
(1)变量表示内存中的一个存储区域,类型不同,占用空间大小不同
(2)变量必须先声明再使用
(3)变量三要素:变量名+值+数据类型
(4)程序中+的使用:左右两边都为数值型时,做加法运算;左右两边有一方为字符串时,则做拼接运算
3. 数据类型
(1)基本数据类型:数值型【byte,short,int,long,float,double】,字符型【char】,布尔型【boolean】
(2)引用类型:【类,接口,数组】
4. 整数类型
类型 | 占用存储空间 |
---|---|
byte | 1字节 |
short | 2字节 |
int | 4字节 |
long | 8字节 |
使用细节:
(1)整型常量默认为int型,声明long型常量需后加’l’或’L’
(2)1byte=8bit
5. 浮点类型
类型 | 占用存储空间 |
---|---|
单精度float | 4字节 |
双精度double | 8字节 |
使用细节:
(1)浮点型常量默认为double型,声明float型常量需后加’f’或’F’
(2)通常情况下,应该使用double型,它比float型更精确
javaAPI文档:
API(应用程序接口)
6. 字符类型
使用细节:
(1)char类型占用2个字节
(2)char本质是一个整数,在输出时,是unicode码对应的字符,char类型是可以进行运算的
7. 布尔类型
使用细节:
(1)boolean类型占用1个字节
(2)boolean类型只允许取值true和false
8. 基本数据类型转换
自动类型转换
(1)概念:在Java程序在进行赋值或者运算时,精度小的类型自动转换为精度大的类型
(2)细节:
- 自动提升原则:表达式结果的类型自动提升为操作数中的最大类型
- 多种类型混合运算时,系统首先自动将数据转换为容量最大的那种数据类型,载进行计算
- (byte,short)和char之间不会相互转换
- byte,short,char他们可以计算,在计算时首先转换为int
- boolean不参与转换
强制类型转换
(1)概念:将容量大的数据类型转换为容量小的数据类型,需加上强制转换符()
(2)细节:
- 强制符号只针对最近的操作数有效
- char类型可以保存int的常量值,但不能保存int的变量值
-
基本数据类型和string类型的转换
(1)基本类型转string类型:将基本类型的值+“”即可
(2)string类型转基本数据类型:通过基本类型的包装类调用parseXX方法即可
八、运算符
1. 算术运算符
细节:
对于除号“/”,整数之间做除法时,只保留整数部分而舍弃小数部分
2. 关系运算符【比较运算符】
3. 逻辑运算符
1)a&b : & 叫逻辑与:规则:当 a 和 b 同时为 true ,则结果为 true, 否则为 false
2) a&&b : && 叫短路与:规则:当 a 和 b 同时为 true ,则结果为 true,否则为 false
3) a|b : | 叫逻辑或,规则:当 a 和 b ,有一个为 true ,则结果为 true,否则为 false
4) a||b : || 叫短路或,规则:当 a 和 b ,有一个为 true ,则结果为 true,否则为 false
5) !a : 叫取反,或者非运算。当 a 为 true, 则结果为 false, 当 a 为 false 是,结果为 true
6) a^b: 叫逻辑异或,当 a 和 b 不同时,则结果为 true, 否则为 false
细节:
&&短路与:如果第一个条件为false,则第二个条件不会判断(常用)
&逻辑与:不管第一个第一个条件如何,第二个条件都要判断
(短路或与逻辑或与上述特点相同)
4. 赋值运算符
细节:
运算顺序
&逻辑与:不管第一个第一个条件如何,第二个条件都要判断
(短路或与逻辑或与上述特点相同)
5. 三元运算符
基本语法:
条件表达式?表达式1:表达式2
运算规则:
1.如果条件表达式为true,运算后的结果是表达式1
2.如果条件表达式为false,运算后的结果是表达式2
6. 运算符优先级
九、程序控制结构
1. 顺序控制
程序从上到下逐行执行
2. 分支控制
(1)单分支
(2)双分支
(3)多分支
(4)嵌套分支
(5)switch分支
基本语法:
switch(表达式){
case 常量1:
语句块1;
break;
case 常量2:
语句块2;
break;
…
default:
default语句块;
}
细节:
(1)case子句中的值必须是常量,而不能是变量
(2)当没有匹配的case时,执行default
(3)如果没有写break,程序会顺序执行到switch结尾
(4)表达式中表达式的返回值必须是(byte,short,int,char,enum[枚举],string)
3. 循环控制
(1)for循环控制
基本语法:
for(循环变量初始化;循环条件;循环变量迭代){
循环操作(可以多条语句);
}
细节:
(1)for(;循环判断条件;)中省略的内容可以写到其他地方,但分号不能省略
(2)当循环变量初始化和变量迭代有多条语句时,中间用逗号隔开
(2)while循环控制
基本语法:
while(循环条件){
循环体(语句);
循环变量迭代;
}
(3)do…while循环控制
基本语法:
循环变量初始化;
do{
循环体(语句);
循环变量迭代;
}while(循环条件);
细节:
(1)先执行,后判断,一定至少会执行一次
(4)多重循环控制
基本语法:
循环变量初始化;
do{
循环体(语句);
循环变量迭代;
}while(循环条件);
细节:
(1)先执行,后判断,一定至少会执行一次
4. 跳转控制语句-break
用来终止某个语句块的执行
5. 跳转控制语句-continue
用于结束本次循环,继续执行下一次循环
6. 跳转控制语句-return
用于跳出所在的方法
十、数组、排序、查找
1. 数组
(1)数组介绍
数组可以存放多个同一类型的数据,数组也是一种数据类型,是引用类型。
(2)数组使用
使用方法1:动态初始化
定义:数据类型 数组名{} = new 数据类型[大小]
声明数组:数据类型 数组名[]/ 数据类型[] 数组名;
创建数组:数组名=new 数据类型[大小]
使用方法2:静态初始化
初始化数组:数据类型 数组名[]={元素值,元素值…}
(3)注意事项和细节
(1)数组创建后,如果没有赋值,有默认值int 0,short 0,byte 0,float 0.0,double 0.0,char \u0000,boolean false,string null
(2)数组属引用类型,数组型数据是对象(object)
(4)数组赋值机制
(1)基本数据类型赋值,值为具体数据,且相互不影响
(2)数组在默认情况下是引用传递,赋的值是地址
(5)数组拷贝
(1)基本数据类型赋值,值为具体数据,且相互不影响
(2)数组在默认情况下是引用传递,赋的值是地址
2. 排序
冒泡排序法
基本思想:
排序序列从后往前,依此比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部
3. 查找
(1)顺序查找
(2)二分查找(待补充)
4. 二维数组
(1)数组使用
使用方法1:
动态初始化
语法:类型[][] 数组名 = new 类型[大小][大小]
先声明:类型 数组名[][];再定义:数组名=new 类型[大小][大小]
使用方法2:
静态初始化
定义:类型 数组名[][]= {
{值1,值2…},{值1,值2…},…}
(2)使用细节
二维数组声明方式有:int[][] y/int[] y[]/int y[][]
二维数组实际上是由多个一维数组组成的,各个一维数组的长度可以相同,也可以不同。