Java基础语法
VScode Java environment deploy
Download and insatll JDKadd bin to environment variable
Download Extension Pack for Java plug that include sie Extension Pack in VScode
refer document
Java 运行原理
Java 基础语法
变量
- 变量名不能重复
- 在一条语句中,可以定义多个变量。但是这种方式影响代码的阅读。
- 变量在使用之前必须要赋值。
数据类型
基本数据类型(4类8种)
变量存储的是真实的数据,赋值给其他变量是真实的值
数据类型 | 关键字 | 内存占用 | 取值范围 |
---|---|---|---|
整数 | byte | 1 | 负的2的7次方 ~ 2的7次方-1(-128~127) |
short | 2 | 负的2的15次方 ~ 2的15次方-1(-32768~32767) | |
int(default) | 4 | 负的2的31次方 ~ 2的31次方-1 | |
long | 8 | 负的2的63次方 ~ 2的63次方-1 | |
浮点数 | float | 4 | 1.401298e-45 ~ 3.402823e+38 |
double(defalut) | 8 | 4.9000000e-324 ~ 1.797693e+308 | |
字符UTF-16 编码 | char | 2 | 0-65535 |
布尔 | boolean | 1 | true,false |
引用数据类型
变量存储的是地址值,真实的数据在堆空间中,赋值给其他变量是地址值,多个变量指向同一个地址
标识符定义规则
必须
- 必须由数字、字母、下划线_、美元符号$组成。
- 数字不能开头
- 不能是关键字
- 区分大小写。
建议
- 变量名和方法名: 小驼峰命名法
- 类名: 大驼峰命名法
运算符和表达式
运算符
- 算术运算符: + - * / %
- ++ 自增/减运算符:++、– 。前缀:使用值之前增减,后缀:使用值之后增减。
- 赋值运算符: =
- 扩展赋值运算符: +=、-=、*=、/=、%=,扩展的赋值运算符中隐层还包含了一个强制转换
byte a = 10;
byte b = 20;
// a += b;
a = (byte)(a+b); - 关系运算符: ==、!=、>、<、>=、<=
- 逻辑运算符: &、|、^、!
- 短路逻辑运算符: &&、||
- 三元运算符: 关系表达式 ? 表达式1 :表达式2 ;
//关系表达式的值为真,那么执行表达式1,否则执行表达式2
a > b ? a : b;
运算符优先级
表达式
- 用运算符把常量或者变量连接起来的,符合Java语法的式子就是表达式,表达式都有值
转换
隐式转换
- 取值范围小的,和取值范围大的进行运算,小的会先提升为大的,再进行运算。
- byte、short、char三种类型的数据在运算的时候,都会直接先提升为int,然后再进行运算。(字符到计算机内置的ASCII码表中去查对应的数字,然后再进行计算)
强制转换
- 书写格式:目标数据类型 变量名 = (目标数据类型)被强转的数据;
- 强制转换有可能会导致数据的精度丢失
流程控制语句
顺序结构
if语句结构
格式1: |
switch语句结构
switch (表达式) { |
循环结构
- for循环
for (初始化语句;条件判断语句;条件控制语句) {
循环体语句;
} - while循环
初始化语句;
while(条件判断语句){
循环体;
条件控制语句;
} - do…while循环
初始化语句;
do{
循环体;
条件控制语句;
}while(条件判断语句);
无限循环
for(;;) {} //条件判断语句可以空着不写,如果不写,默认表示true,循环一直进行。 |
条件控制语句
- break:不能单独存在的。可以用在switch和循环中,表示结束,跳出的意思。
- contiune:不能单独存在的。只能存在于循环当中。表示跳过本次循环,继续执行下次循环
数组
定义格式
- 格式一:数据类型 [] 数组名,比如:int [] array(常用)
- 格式二:数据类型 数组名 [],比如: int array []
静态初始化
- 完整格式:数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3,元素4…};
- 简化格式: 数据类型[] 数组名 = {元素1,元素2,元素3,元素4…};
地址值
打印数组的时候,实际出现的是数组的地址值。
数组的地址值:就表示数组在内存中的位置。
以[I@6d03e736为例:[ :表示现在打印的是一个数组。I:表示现在打印的数组是int类型的。
@:仅仅是一个间隔符号而已。6d03e736:就是数组在内存中真正的地址值。(十六进制的)
索引
- 索引一定是从0开始的。
- 连续不间断。
- 逐个+1增长。
数组的遍历
for(int i = 0; i < arr.length; i++){ |
数组的动态初始化
- 格式:数据类型[] 数组名 = new 数据类型[数组的长度];
- 数组的默认初始化值:
整数类型:0
小数类型:0.0
布尔类型:false
字符类型:’\u0000’ 空格
引用类型:null - 静态初始化不能用于对数组重新赋值
数组名 = {元素1,元素2,··} //报错
二维数组
数据类型[][] 数组名 = new 数据类型[][]{元素1,··}{元素1,··} //完整静态初始化 |
java内存分配
jdk8开始取消方法区,新增元空间,把方法区的功能进行拆分,放到堆和元空间中
两个数组指向同一个空间内存
int arr1 = {1,2}; |
方法
方法(method)是程序中最小的执行单元
定义和调用
//方法定义 |
- 方法不能嵌套定义
- 可以单独的书写return,后面不加数据,表示终止方法体执行
方法重载
方法重载指同一个类中定义的多个方法之间的关系,满足下列条件的多个方法相互构成重载
- 多个方法在同一个类中
- 多个方法具有相同的方法名
- 多个方法的参数不相同,类型不同或者数量不同
重载仅针对同一个类中方法的名称与参数进行识别,与返回值无关,换句话说不能通过返回值来判定两个方法是否相互构成重载
方法值的传递
传递基本数据数据类型时,传递的是真实的数据,只是在方法中copy一份,形参的改变不影响实参的值
传递引用数据类型时,传递的是数据的地址值,形参的改变会影响实参的值
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.