JAVA -- 第一阶段总结1(Basic、OOP)
Basic
1.环境的安装
- 安装JDK,并配置环境变量
- 配置JAVA_HOME
- 配置CLASS_PATH
- 配置Path
- 打开DOS窗口:java -version
2.Java语法基础
- 标识符
- 标识符可以由 字母,数字,下划线
_
,美元符号$
组成 - 不能包含
@ % 空格
等其他特殊符号 - 不能以数字开头
- 严格区分大小写,尽量做到见名知意
- 标识符可以由 字母,数字,下划线
- 关键字
- 一共有50个全小写的关键字,2个保留字
const和goto
- 关键字、true、false、null 也不能用作标识符
- 一共有50个全小写的关键字,2个保留字
- 注释
- 单行注释: //
- 多行注释: /* */
- 文档(doc)注释: /** */
- 变量
- 定义方式: 变量类型 变量名 = 变量值;
- 局部变量: 方法里/局部代码块里,必须手动初始化/赋值
- 作用域:当方法/局部代码块执行完毕,局部变量就会释放
- 成员变量: 类里方法外,不用初始化,会自动赋予对应类型的默认值
- 作用域:在整个类中生效,类消失,变量才会消失
3.数据类型
- 基本数据类型
- 默认值 (
整型:byte short int 0 long 0L
) (浮点型:float 0.0f double 0.0d
) (字符型:char /u0000
) (布尔型:Boolean false
)
- 默认值 (
- 引用数据类型
- 默认值是null,存放的是地址
4.字面值规则
- 整数类型字面值是 int
- 浮点类型字面值是 double
- byte ( -128~127) short char 三种比int小的类型,可以使用范围内的值直接赋值
- 字面值后缀:L-long F-float D-double
- 字面值前缀:0b - 二进制 0 - 八进制 0x - 十六进制 \u - char类型(属于16进制)
5.类型转换
- 小转大(隐式转换)直接转
- 大转小(显式转换)强制转
- 强转注意溢出问题:
int i = 128; byte b = (byte)i; -->b打印出来是 -128
- 强转注意溢出问题:
6.运算规则
- 计算结果的数据类型与最大的类型一致
- byte,short,char三种比int小的整数,运算时会先自动转换成int
- 整数运算溢出
- 浮点数运算不精确
- 进行类型转换时,浮点数会舍弃小数部分变为整数,32.7->32
- boolean不参与类型转换
- 浮点数的特殊值
Infinity 无穷大( 3.14/0 )
NaN (not a number) (0/0.0 或 0.0/0)
7.运算符
- 位运算符
&
:与,两位同时为1,结果才为1,否则结果为0|
:或,两个位都为0时,结果才为0^
:异或,两个位相同为0,相异为1~
:取反,0变1,1变0<<
:将一个运算对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补0)- 若左移时舍弃的高位不包含1,则每左移一位,相当于该数乘以2
>>
:将一个数的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃- 操作数每右移一位,相当于该数除以2
>>>
:无符号右移,也叫逻辑右移,即若该数为正,则高位补0,而若该数为负数,则右移后高位同样补0- 对于正数来说和带符号右移相同,对于负数来说不同
8.流程控制
- 分支结构:
if - else if - else
- switch结构:
switch - case - default
- switch结构的变量:byte、short、int 、char、String
- case可以有多个,需要加break跳出,否则会发生穿透现象
- 如果在default前的case有break,则default不会执行
- 循环结构:
- for循环:
for(开始条件 ; 循环条件 ; 更改条件) { 循环体 }
- 一般用于明确知道循环次数的情况
- 嵌套for循环:
- 外层控制:行数/轮数
- 内层控制:列数/每轮执行的次数
- while循环 :
while(循环条件){ 循环体 }
- 先判断,符合调节再循环
- do - while循环 :
do{ 循环体 }while(循环条件)
- 先执行一次,再判断(保证代码至少执行 一次)
- for循环:
9.方法
- 定义格式:
- 修饰符 返回值 方法名(参数列表){ 方法体 }
- 方法如果有返回值,通过return 关键字返回,在哪里调用,返回到哪里
- 方法的重载
- 指在一个类中存在多个方法名相同,参数列表不同的方法
10.数组
- 数组的创建
- 动态创建:
int[] a = new int[5];
- 静态创建:
int[] b = new int[]{1,2,3,4,5}; int[] c = {1,2,3,4,5};
- 动态创建:
- 数组是一块连续的内存空间,一旦创建,不可改变
- 数组创建的过程分析 ,以
int[] a = new int[5];
为例:- 在内存中开辟长度为5的连续空间,用来存放数据
- 完成数组的初始化过程,给每个元素赋值,int的默认值是0
- 初始化会为数组分配一个唯一的地址值
- 将这个唯一的地址值交给引用类型的变量a去保存(数组名是一个引用类型的变量,他保存的是数组的地址,不是数组中的数据)
- 数组的遍历:
for(int i = 0 ; i < a.length ; i++) {...}
- 数组工具类
Arrays
Arrays.toString(数组)
:除char类型数组外,其他类型的数组想要查看数据需要使用此方法Arrays.sort(数组)
:对数组进行排序Arrays.copyOf(数组,新的长度)
:把数组复制成一个指定长度的新数组 ,新数组的长度 > 原数组, 相当于复制,并增加位置 ;新数组的长度 < 原数组, 相当于截取一部分数据
- 二维数组
int[][] a = {{1,2},{3,4},{5,6}};
- 遍历
for (int i = 0; i < a.length; i++) { //遍历外部数组 for (int j = 0; j < a[i].length; j++) { //遍历内部数组 System.out.println(a[i][j]); //依次打印二维数组中每个元素的值 } }
面向对象OOP(Object Oriented Programming)
- 三大特性: 封装、继承、多态
11.类和对象
- 类:
- Java语言最基本的单位是 类
- 类是一类事物的抽象,用关键字class表示
- 对象:
- 对象的状态:用来描述对象的基本特征
- 对象的行为:用来描述对象的功能
- 对象的标识:指对象在内存中都有一个唯一的地址值用来和其他对象区分开来
- 是根据抽象设计出来的具体事物,是具体的实现,用关键字new 来创建对象
- 一个类可以创建出多个对象,这些对象各自都占有独立的内存空间
12.对象创建时的内存分析:
- 对象创建时的内存分析:
- 1)Cat c = new Cat();–创建了普通对象
- 1-在栈内存中开辟一块空间,存放引用类型的变量c,并把c压入栈底
- 2-在堆内存中开辟一块空间,用于存放Cat类的对象
- 3-完成对象的初始化,并根据属性类型赋予对应的默认值
- 4-给初始化完毕后的对象生成一个唯一的地址值
- 5-将对象唯一的地址值交给引用类型变量c来保存
- 6-后续可以根据变量c中保存的地址值找到对应的对象,进行相关调用
- 2)new Cat();–创建了匿名对象
- 1-在堆内存中开辟一块空间,用于存放Cat类的对象
- 2-完成对象的初始化,并根据属性类型赋予对应的默认值
- 3-给初始化完毕后的对象生成一个唯一的地址值
- 4-匿名对象没有名字,只能使用一次,所以调用情况如:new Cat().play();
- 调用完毕,匿名对象就失去作用了,只适合只使用一次的场景
- 1)Cat c = new Cat();–创建了普通对象
13.封装
- 封装是隐藏对象的属性和实现细节,仅仅对外提供公共的访问方式,比如类和方法
- 对资源的访问进行控制,私有资源只能在本类中访问
- 私有资源为了能够正常使用,需要对外提供公共的接口
- 好处: 提高安全性 、 提高重用性
- 属性的封装:
private
,被私有化的成员只能在本类中访问- 使用
private
关键字封装,并提供对应的get & set
方法
- 使用
- 方法的封装:
- 用
private
修饰方法 - 可以在同类中的公共方法里调用这个私有方法
- 这样就可以在其他类中,创建对象,调用公共方法
- 用
- 访问控制符:
14. 构造方法
- 与类名同名且没有返回值类型的方法
- 格式:修饰符 类名(参数列表){方法体}
- 作用:专门用来创建对象的方法
- 执行的时机:每次创建对象时,都会触发对应的构造方法,创建几次,触发几次
- 默认存在无参构造,如果添加了含参构造,默认的无参构造会被覆盖,所以手动添加无参构造
- 方法的重载:
Overload
- 在同一个类中,存在方法名相同但参数列表不同的方法
- 构造方法也存在重载的现象:无参构造/含参构造/全参构造
- 注意:全参构造能给对象的属性赋值的前提是要有赋值的语句
- 构造代码块
- 位置:类里方法外,与成员变量一致
- 执行时机:创建对象时执行,优先于构造方法执行
- 作用:用于提取所有构造方法的共性功能
- 局部代码块
- 位置:方法里,与局部变量一致
- 执行时机:调用所在的方法时执行
- 作用:用于控制变量的作用范围,变量的作用范围越小越好,出了代码就失效
版权声明:本文为Skyhaohao原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。