Java总结的不定期更新
最近学了一些Java的基础语法,学过一些C的朋友应该会感觉二者有不少相通的地方,理解起来并不困难。我根据自己的掌握程度做个小总结
1. 注释
分为 单行注释,多行注释和文档注释。
单行://
多行:/* */
文档注释还没具体学,日后补充
2. 关键字
特点:
1.Java中共有五十多个关键字;
2.关键字由小写英文字母组成;
3.在编译器中会有特殊的颜色标记。
3. 常量
常量分类:
常用类型 | 说明 | 举例 |
---|---|---|
字符串常量 | 用双引号括起来的内容 | “HelloWorld”、“我爱编程” |
字符常量 | 用单引号括起来的内容 | ‘A’、‘好’、‘0’ |
整数常量 | 不带小数点的数字 | 666、-123 |
小数常量 | 带小数的数字 | -13.14 、5.21 |
布尔常量 | 布尔值,表示真假 | 只有两个值:true 、false |
空常量 | 一个特殊的值,空值 | 值是:null |
注意:上述常量类型中,空常量是不可以直接打印的。
4.数据类型
数据类型 | 关键字(内存占用) | 取值范围 |
---|---|---|
整数 | byte(1)、short(2)、int(4)、long(8) | byte:-128~127 short:-32768~3276… int: - 231~ 231-1 … long:-263~ 263-1 |
浮点 | float(4)、double(8) | float:【负数】-3.402823E+38 到 -1.401298E-45 【正数】1.401298E-45 到 3.402823E+38…double:【负数】-1.797693E+308到 -49000000E-324 【正数】49000000E-324 到 1.797693E+308 |
字符 | char(2) | 0~65535 |
布尔 | boolean(1) | true false |
说明一下: E+38表示乘以10的38次方 ,同理,E-45表示乘以10的负45次方
5.变量
-
变量名不能重复;
-
变量赋值后才能使用;
-
因为编译器会把整数默认为int型,浮点型默认为double型 , 所以
对于 long类型数据,定义时要在末尾加 L,否则会出现 “数据过大” 的报错,
对于float类型数据,定义时要在末尾加上 F,否则会出现 “不兼容类型” 的报错。
6.标识符
- 定义 :给 类,方法,变量起名字的符号
- 规则:(图片源自黑马程序员Java网课)
7.类型转换
-
分类:自动类型转换 和 强制类型转换
- 自动类型转换: 把一个数据表示范围小的数值或者变量赋 值给另一个数据表示范围大的变量 。
- 强制……:恰好相反。
-
格式:目标数据类型 变量名 = (目标数据类型) 值或变量
例子: (int)k = (int)66.66
输出结果: 66
注意:强制类型转换可能会导致数据损失。
8.运算符
(1)算术运算符
(基本的小学生运算咱就不说了)
1. 字符和数字之间也可以进行’+'操作。拿字符在计算机底层对应的数值计算的(ASCII码)。
2. 算术表达式中包含多个基本数据类型的值的时候,整个算数表达式的类型会自动进行提升。提升规则:
- byte类型,short类型和char类型将被提升到int类型。
- 整个表达式的类型自动提升到最高等级操作数同样的类型;等级顺序:
- byte,short,char >>> int >>> long >>> float >>>double
- 字符串的’+'操作:从左到右执行操作。
下面是一些例子:
(2)赋值运算符
- 包括:=、+=、-=、*=、/=、%=
- 我们知道 += 的意思就是将等号左边的值与右边的相加再赋值给右边。但在这里要注意的是 s += 10 底层是隐含了强制类型转换的操作,不等同于 s = s + 10
- 还是举个例子更好理解 😃
public static void main(String[] args){
short s = 10;
s += 10;
short t = 10;
t = (short)(t + 10);//强转
System.out.println("s:"+s);
System.out.println("t:"+t);
}
}
在上面的代码中,定义了两个short类型变量,与int类型的数据做加法,其中一个运用了“+=”运算符,另一个直接相加,但加了强转。
最后,二者的结果都是 20。
欸?那有朋友问了,我不强转会咋样? 我试了,会报下图所示的错 (所以一般还是用+=吧,也省得出问题)
(3)自增 自减 运算符
自增(每次增加1): ++
自减(每次减小1): - -
(4)关系运算符
- < , <= , >, >= , ==(等于) , !=(不等于)
- 关系运算符的结果都是布尔值。
- 优先级高于赋值运算符,低于算术运算符。
(5)逻辑运算符
- 定义:用于连接关系表达式的运算符,当然,也可以直接连接布尔类型的常量或者变量。
- 逻辑运算符还包括短路逻辑运算符。
短路?!有没有人和我一样觉得奇怪,又不是电路,怎么短路呢?(哈哈哈)
大家和我一起看看代码,理解上图的注意事项吧
关于&的代码以及运行结果
public class practice {
public static void main(Strings[] args){
int i=10;
int j=10;
System.out.println((i++ > 100)&(j++ > 100));//flase & false == false
System.out.println("i = "+i);
Syetem.out.println("j = "+j);
}
}
看着挺好的,布尔值是false没错,i 和 j 也都实现了自增。
关于&&的代码和运行结果
public class practice{
public static void main(String[] args){
int i = 10;
int j = 10;
System.out.println((i++ > 100)&&(j++ > 100) );
//false && false
System.out.println("i = "+i);
System.out.println("j = "+j);
}
}
留神看区别噢
布尔值没有改变,还是false,但是,j 却没有像使用‘&’时那样自增1了!! 这就是短路效果了,对于&&,当左边为假,右边便不执行了。&&懂得“偷懒”,既然左右同真才为真,那左边为假了,右边不执行也罢。
(6)三元运算符
格式:关系表达式 ?表达式1 :表达式2 ;
范例:a > b ? a : b;
如果关系表达式为真 结果就是第一个值(本例:a),为假,结果时第二个值(本例:b)
这篇笔记都是一些基础知识,但还是码了好久 😦 欢迎大家指教,一起进步。