JAVA学习笔记(基础语法)
数据类型
基本数据类型
- 整数型:byte、short、int、long (1、2、4、8)
- 浮点型:float、double【默认】 (4、8)
- 字符型:char (2)【可以表示中文的】
- 布尔型:boolean (1)
引用数据类型
字符串、数组、类、接口、Lambda
注意事项
- 字符串是引用类型;
- 浮点数只是一个一个近似值;
- 数据范围与字节数不一定相关,float的数据范围比long更广;
- 浮点数的默认数据类型是double,如果一定要使用float则需要在后方加上L;
变量
变量的定义格式
/** case 1 **/
数据类型 变量名称 = 数据值;
/** case 2 **/
数据类型 变量名称;
变量名称 = 数据值;
注意:
-
赋值的大小不能超出变量范围
-
变量的声明不可以重复;
-
对于float和long类型的后缀"F" "L"不可以省略;
-
没有进行赋值的变量不可以直接使用;
-
变量的使用不可以超出变量的使用域;
【使用域】:从定义变量开始到所属的大括号为止
-
可以通过一个语句来声明多个变量【不建议】;
数据类型转换
自动类型转换(隐式)
符合数据范围从小到大的规则,发生自动类型转换。例如:float --> double;int --> long;long --> float;
强制类型转换(显式)
- 不符合符合数据范围从小到大的规则会报错;
- 特点:代码需要特殊的格式处理,不能自动完成;
- 格式:
范围小的类型 变量名1 = (范围小的类型) 变量名2;
注意事项
- 一般不推荐使用强制类型转换,因为可能发生精度损失、数据溢出;
- byte/short/char这三种类型都可以发生数学运算;
- 类型转换不意味着四舍五入;
- byte/short/char类型若进行了数学运算,则会被首先转化为int类型;
- 不同类型进行计算,会先统一转换为大范围进行计算;
编码表
ASCII码表:American Standard for Information Interchange 美国信息交换标准码
Unicode码表:万国码
算术运算符
-
运算符:进行特定运算的符号,例如:+;
-
表达式:用运算符连起来的式子叫表达式。
-
四则运算:
- 加:+
- 减:-
- 乘:*
- 除:/
-
除运算“/”类似于C++,对于整数来说只取商;
-
加号“+”的用法:
- 对于数值来说,就是基本的加法;
- 对于字符char类型来说,在计算之前,char会被提升为int,然后进行计算;
- 对于字符串String类型的变量,加号表示字符串的连接操作;
- 任何数据类型和String进行连接操作的结果都会变成String;
-
自增自减运算符:同C++/C;
-
赋值运算符:同C++/C;
-
比较运算符:同C++/C;
-
逻辑运算符:同C++/C;
-
三元运算符:同C++/C;
方法入门
-
概念引入:让代码变得更加清晰;
-
定义方法:
public static void 方法名称(){ 方法体; }
- 方法命名规则和变量一样,使用小驼峰;
- 方法体:大括号当中可以包含任意条语句;
- 注意事项:
- 方法定义前后顺序无所谓;
- 方法的定义不能产生嵌套包含关系;
- 方法定义好之后不会执行,必须进行调用;
-
方法的调用:
方法名称();
编译器对特殊类型赋值的优化
对于byte/short/char三种类型来说,如果右侧赋值的数值没有超过范围,那么javac编译器将会自动隐含地为我们补上一个(byte)(short)(char)。
- 如果没有超过左侧的范围,编译器补上强转。
- 如果右侧超过了左侧范围,那么直接编译器报错。
编译器在表达式计算时,会进行”常量优化“。
选择结构
- 选择结构
if
、else
、else if
:同C++/C; - 三元运算符
? :
:同C++/C; switch
语句:同C++/C;- 多个case后面的数值不可以重复;
switch
小括号当中只能是以下数据类型:- 基本数据类型:byte/short/char/int
- 引用数据类型:String字符串、enum枚举;
- switch语句的格式可以很灵活;前后顺序可以颠倒,而且break语句还可以省略;“匹配到哪一个case就从哪一个位置向下执行,直到遇到了break或者整体结束为止”
循环结构
-
循环结构的基本组成部分,一般可分为四部分:
-
初始化语句:在循环开始最初执行,而且只做唯一一次;
-
条件判断:如果成立,则循环继续;如果不成立,则循环退出;
-
循环体:重复要做的内容,多条语句;
-
条件改变;
-
-
循环语句:
for
语句:同C++/C;while
语句:同C++/C;do while
语句:同C++/C;break
语句:同C++/C;continue
语句:同C++/C;
IJ集成开发环境IDE
Integrated Development Environment, IDE, 集成开发环境;
快捷键 | 功能 |
---|---|
Alt+Enter | 进行代码修复 |
Ctrl+Y | 删除光标所在行 |
Ctrl+D | 重复光标所在行 |
Ctrl+Alt+L | 格式化代码 |
Ctrl+/ | 添加或取消单行注释 |
Ctrl+Shift+/ | 添加或取消多行注释 |
Alt+Ins | 自动生成代码 |
Shift+Alt+上下箭头 | 移动代码行 |
方法
1.定义格式
方法:若干语句的功能集合
参数:传入的数据
返回值:传出的数据(停止方法,将返回值还给调用处)
修饰符 返回值类型 方法名称(参数类型1 参数名称1,...){
方法体;
return 返回值;
}
2. 方法的三种调用格式
- 单独调用:
方法名称(参数);
- 打印调用:
System.out.println(方法名称(参数));
- 赋值调用:
数据类型 变量名称 =方法名称(参数);
3.方法的重载(Overload)
特征:多个方法的名称一样,但是参数列表不同;
注意事项:
- 与下列因素有关(满足一个即可)
- 参数数量不同
- 参数类型不同
- 参数的多类型顺序不同
- 与下列因素无关
- 参数名称
- 方法返回值类型
数组
1.数组的概念
- 数组的概念:是一种容器,可以存放多个数据值;
- 数组的特点:
- 引用数据类型;
- 类型必须统一;
- 数组长度在程序运行期间不可以改变;
2. 数组的定义格式
-
动态初始化(指定长度)
数据类型[] 数组名称 = new 数据类型[数组长度];
-
静态初始化(指定内容)
数据类型[] 数组名称 = new 数据类型[]{元素1,元素2, ... };
-
省略格式
数据类型[] 数组名称 = {元素1,元素2, ... };
3. 数组元素的获取和赋值
- 直接打印数组名称,得到的是数组对于的内存地址哈希值;
- 下标索引值从0开始;
- 动态定义的数组会默认如下初始化:
- 整数型:0
- 浮点型:0.0
- 字符型:‘\u0000’
- 布尔型:false
- 引用型:null
4. Java中的内存划分
- 栈(Stack):存放的都是方法中的局部变量,方法的运行在栈中
- 局部变量:方法的参数,或者是方法{}内部的变量
- 作用域:一旦超出作用域,立刻从栈内存中释放
- 堆(Heap):凡是new出的变量,都存在堆当中。
- 堆内存里面的东西都有一个地址值:16进制
- 堆内存中的数据都有默认值,规则:
- 整数型:0
- 浮点型:0.0
- 字符型:‘\u0000’
- 布尔型:false
- 引用型:null
- 方法区(Method Area):存储class相关信息,包含方法的信息
- 本地方法栈(Native Method Stack):与操作系统有关
- 寄存器(pc Register):与CPU相关
5. 数组的内存图
6.常见问题
- 数组索引越界异常:范围0 ~ 数组长度-1
- 空指针异常(NullPointException)
7. 数值长度获取
格式:
数组名称.length;
数组一旦创建,程序运行期间长度不可以改变
8. 数组有关的方法
地方法栈(Native Method Stack):与操作系统有关
5. 寄存器(pc Register):与CPU相关
5. 数组的内存图
[外链图片转存中…(img-424ssjdr-1613583059867)]
6.常见问题
- 数组索引越界异常:范围0 ~ 数组长度-1
- 空指针异常(NullPointException)
7. 数值长度获取
格式:
数组名称.length;
数组一旦创建,程序运行期间长度不可以改变
8. 数组有关的方法
方法的参数可以选择数组的地址,方法的返回值也可以为数组的地址;