学习内容:
一、Java的标识符
1、由字母、数字、下划线、$组成
2、不能以数字开头
3、严格区分大小写
4、不能使用关键字
5、见名知意
二、关键字
被Java指定的一些具有特殊意义的小写单词,共50个,其中有两个保留字const和goto.
三、注释
1、单行注释--//
2、多行注释--/* */
3、文档注释--/** */
四、八大基本类型
byte--1字节
short--2字节
int--4字节
long--8字节
flout--4字节 单精度
double--8字节 双精度
char--2字节 0-25535
Boolean--1字节 真true 假false
五、类型转换
小到大(隐式转换) 大到小(显示转换)
小到大,直接转,大到小,强制转,浮变整,小数没
1.布尔类型不参与类型转换
2.类型能否转换取决于取值范围,字节大小只能做参考
3.大类型转小类型时,需要强制类型转换,如果值超出了小类型的取值范围,数据会发生错误
4.浮点型数据转为整型,会舍弃小数部分
六、5条运算规则
1、计算结果的数据类型与最大类型保持一致
2、三种比int小的类型,运算时要先自动提升成int类型再计算
3、整数运算溢出
4、浮点数运算不精确
5、浮点数的特殊值 Infinity NAN
七、运算符
处理运算的符号--+ - * / %
%--取余数,如果整除,余为0
1、自增自减运算符
前缀式:++a --a 符号在前先变化本身的值,再使用
后缀式:a++ a-- 符号在后先使用再变化本身的值
2、比较运算符
结果是布尔类型 >,<,>=,<=,==,!=
3、逻辑运算符
& 单与,两边结果同为true,结果才是true
&&双与,逻辑与单与一致,只是增加了短路的功能
| 单或,只要符号两边有一个为true,结果就是true
|| 双或,逻辑与单或一致,只是增加了短路的功能
注意:短路与/或会提高性能,单不是每一种情况都会短路
4、三母运算符
格式:1 ?2 : 3 -- 1是表达式,1真取2,1假取3.(求两个数的最大值常用)
5、赋值运算符
“=”,列如 int a = 1
+=,-=,*=,/= 复合的赋值运算符
思路:接收数据、处理数据、输出结果
八、分支结构
1、单分支结构 if(){};
2、多分支结构 if (){
} else (){};
3、嵌套分支结构(适合判断条件比较多的情况)
if(){
}else if(){
}else if(){
}else{ }
4、循环结构(用于帮助我们重复做同一件事)
for(开始条件;循环条件;更改条件){循环体}
注意:开始条件只会在第一轮执行一次
循环执行几次取决于循环变量可以取到几个值,就循环几次。
4.1嵌套for循环
格式:for里有for
1)外层循环执行一次,内层循环执行多次
2)外层循环控制图形的行数,内层循环控制列数
4.2while循环
while(判断条件){循环体}
while循环设置死循环后必须设置出口
4.3do -while
do{循环体} while(判断条件)
本循环最少会执行一次
九、变量
用来存储一些会发生变化的值
定义变量的语法:变量的类型 变量的名字 =变量的值;
String 引用类型的默认值是null
整数类型的默认值是0
浮点类型的默认值是0.0
布尔类型的默认值是false
字符型的默认值是/u0000,表现是一个空格
1、局部变量
位置:在方法里/局部代码块
使用范围:当对应的方法/局部代码块结束后,对应的局部变量也会被释放
注意事项:局部变量必须手动赋值
2、成员变量
位置:类里方法外
使用范围:在整个类里都生效,类消失,变量才会释放
注意事项:无需手动初始化,会自动赋予对应类型的默认值
十、方法
格式:方法的修饰符 返回值类型 方法名(参数列表){方法体}
调用方法的格式:方法名(参数列表);
方法的定义相当于方法的说明书,定义的时候怎么定义,调用的时候就需要按照定义来调用,也就是说如果方法设置了参数,调用方法时必须按照定义的类型来传参,否则会报错,如果有多个参数,可以用逗号隔开。
关于修饰符:
public:公共的,这个公共的方法可以被所有的人看到
private:私有的,这个私有的方法只能在本类中使用,外部是看不到这个方法的
关于参数:
方法的参数是非常自由的,可以没有参数,也可以设置多个参数,如果有多个参数,就用逗号隔开,参数定义的格式与变量定义的格式相同(类型 参数名)
break和continue
continue:作用是用来跳过本轮循环中后面的语句来提高效率的,并不是用来控制继续输入的,能够输入几次,取决于循环的次数,与continue无关
break:用于直接跳出循环,结束后面所以轮
break和continue后面不允许写代码,因为都是不可到达的代码
十一、数组
概念:数组Array,标志是[ ],用于存储多个相同类型的数据的集合,想要获取元素中的元素值,可以通过下标来获取,数组下标是从0开始的,下标的最大值是数组的长度减1.
数组创建的过程:
1)在内存中开辟连续的空间,用来存放数据
2)给数组完成初始化的过程,给每个元素赋予默认值
3)数组完成初始化会分配一个唯一的地址值
4)把唯一的地址值交给引用类型的变量a去保存
5)如果想要操作数组中的元素,通过下标来操作
注意:数组名是个引用类型的变量,它保存着的是数组的地址值,不是数组中的具体数据
1.动态初始化:int[ ] a =new int[5];
2.静态初始化:int [ ] b =new int[ ]{1,2,3,4,5}
int[ ] c ={1,2,3,4,5}
3.数组的长度用length属性来表示,数组一旦创建,长度不可改变
数组的长度允许为0
数组的工具类:Arrays
1).Arrays.toString(数组) --可以打印查看数组里的数据
2).Arrays.sort(数组) --对数组进行排序
3).Arrays.copyof(数组,新的长度)--复制,扩容,缩容
4).Arrays.copyofRange --指定首位截取数组中的元素
由于Java对char类型做了一个底层处理,所以char类型的数组可以直接打印具体内容,但除了char类型以外,其他任何类型的数组想要查看数组中的具体元素,需要使用数组的工具类Arrays的toString(数组名)来完成。
4.冒泡排序
排序思路:要比较多轮,每轮两个相邻的元素做比较,位置不对就互换
代码思路:通过嵌套for循环来完成
1)外层循环:控制的是轮数,如果有n个数,最多n-1轮
2)内层循环:控制的是每轮比较的次数,每一轮的次数会递减,之前轮确定的最大值不应该参与后面轮的比较
注意:外层循环的循环变量代表的是轮数1234...
内层循环的循环变量代表的是数组的下标[0,a.length-i)
十二、面向对象的三大特征
封装:把相关的数据封装成一个“类”组件
继承:是子类自动共享父类属性和方法,这是类之间的一种关系
多态:增强软件的灵活性和重用性
面向对象:这种思想强调的是结果,面向对象是Java及其重要的特征,Java就是一门面向对象的语言
类:类指的是类型Type,是指一类事物,类是抽象的,要提取这一类事物的特点与功能,可以把类理解成设计图纸,模板。
对象:对象就是根据类创建出来的具体事例,一个类可以创建出多个对象,对象通过地址值来区分
1.属性的封装
用private修饰属性,一旦属性被private修饰,就只能在本类中使用,外界无法访问,所以为了让外界能够按照我们提供的方式来调用,需要根据属性生成公共的getXxxh与setXxx方法
2.方法的封装
方法的封装也是使用private来修饰方法,如果想要调用私有的方法的功能,就需要在本类的公共方法调用这个私有方法。
3.构造方法
格式:与类同名且没有返回值的方法
作用:构造方法用于创建对象时使用,每次创建对象时,都会自动触发构造方法
特点:1).每个类会默认提供一个本类的无参构造
2).构造方法也存在重载的现象(无参/含参/全参)
3).我们是通过方法名+参数列表的方式来确认要调用哪个方法的。
4).全参构造不仅可以创建对象,还可以给这个创建出来的对象的属性赋值
4.方法的重载
现象:在同一个类中,存在多个方法名相同但是参数列表不同的方法
注意:我们这里所说的参数列表不同,指的是参数的个数与阐述的类型,与参数名无关
重载是为了使用时传入不同的参数,也可以很好地匹配到同名的方法来执行此功能
5.形参与实参
比如方法参数列表的参数就是一个形参,形参没有具体的值,调用方法时,传入什么值,就是什么
实参是实际存在的参数,有自己要保存的明确的值。