目录
一.数据类型
1.变量与类型
1.数据类型大小
2.字符型数据类型
3.布尔型数据类型
4.字符串类型变量
5.变量的作用域
6.变量命名规则
2.常量
1.字面值常量
2.fanal关键字修饰的常量
3.数据类型转换
1.自动类型转换
2.强制类型转换
3.数值提升
二.运算符
1.算术运算符
2.关系运算符
3.逻辑运算符
1.&&:逻辑与
2.||:逻辑或
3.!:逻辑非
4.注意事项
4.位运算符
1.& 按位与
2.| 按位或
3. ^ 按位异或
4.~ 按位取反
5.移位运算
6.条件运算符
7. 运算优先级
三.关键字
Java的数据类型分为基础数据类型和引用类型。基本数据类型有八种,分别是byte、short、int、long、float、double、char、boolean。(ps:这八种数据类型都是变量)引用类型有String、接口、枚举等。
首先我们需要知道Java的字符类型使用的是Unicode编码方案,每个Unicode码占用16个比特位。Unicode码字符集包括拉丁文、英文、中文。Java的数据类型都是有取值范围的,存储的时候不要超过取值范围。设n为数据类型所占的比特位,则该数据类型的取值范围为-2^(n-1)——2^(n-1)-1。以int为例,int占4个字节,即32个比特位,则int的取值范围是-2^31——2^31-1。
下面是通过代码得知各个数据类型的大小
public static void main(String[] args) {//1个字节等于8个比特位
System.out.println("byte:"+Byte.SIZE/8);
System.out.println("char:"+Character.SIZE/8);
System.out.println("short:"+Short.SIZE/8);
System.out.println("int:"+Integer.SIZE/8);
System.out.println("float:"+Float.SIZE/8);
System.out.println("long:"+Long.SIZE/8);
System.out.println("double:"+Double.SIZE/8);
}
Java 中使用 单引号 + 单个字母 的形式表示字符字面值。
public static void main3(String[] args) {
char ch = '王';//2个字节
char ch2 = 67;//会解析成对印的字符,而不是数字67
System.out.println(ch);
System.out.println(ch2);
}
当然,执行javac的时候也可能出现错误:未结束的字符文字。这时候只需要在javac后加上-encoding UTF-8即可。
boolean 类型的变量只有两种取值, true 表示真, false 表示假。需要注意的是,Java中布尔类型不能和int类型互换,即不存在1表示true,0表示false的说法。在JVM的规定中,并没有明确规定布尔类型的大小,有的说法是一个比特位,有的说法是一个字节,各位读者见仁见智。具体用法如下列代码所示
public static void main(String[] args) {
boolean flg = true;
System.out.println(flg);
}
Java 使用 双引号 + 若干字符 的方式表示字符串字面值。如开篇所示,String不是基本数据类型,而是引用数据类型。可以通过看储存的是否是一个地址来判断是否是引用类型。
public static void main(String[] args) {
String str = "你好啊";
System.out.println(str);
}
需要注意的是,字符串中的一些特定的不太方便直接表示的字符需要进行转义。
转义字符 | 含义 |
\n | 换行 |
\t | 水平制表符(TAB) |
\' | 单引号 |
\" | 双引号 |
\\ | 反斜杠(/) |
字符串还可以通过“+”将两个字符串进行拼接,也可以将字符串和整数进行拼接
public static void main(String[] args) {
String a ="Hello";
String b ="World";
System.out.println(a+b);
}
变量的的作用域只需要找相应的花括号,与C语言相似。
1. 一个变量名只能包含数字, 字母, 下划线(虽然$也能命名,但建议不要这样做)
2. 数字不能开头
3. 变量名严格区分大小写
4.变量名使用小驼峰,类名使用大驼峰
常量在编译的时候已经确定其值,而变量在运行的时候才知道其值。常量不能在程序运行过程中发生修改。
即确定的如123、123.0、true、10.0L等
Java中的final与C语言中的const意义相同
public static void main(String[] args) {
final int a = 10;
a = 20;
System.out.println(a);
}
此时会显示编译出错,因为常量不能在程序运行过程中发生修改。
自动类型转换会将由低到高,如int会自动转换为long,而不能转换为byte
那么由高到低的就不能转换了吗?其实不然,比如,我们可以使用强制类型转换将long转为int,但是可能会造成精度缺失等问题。
public class TestDemo {
public static void main(String[] args) {
long x = 500;
int y =(int) x;
System.out.println(y);
}
}
注意:如果试图将一个数值从另一个类型转换为另一个类型,而又超出了目标类型的表示范围,结果就会截断成一个完全不同的值,如(byte)500=-12
public class TestDemo {
public static void main(String[] args) {
long x = 500;
byte y =(byte) x;
System.out.println(y);
}
}
当两个不同大小的数据类型进行计算的时候,系统会自动把范围小的提升为范围大的。
public static void main(String[] args) {
int a = 10;
double b = 10.0;
System.out.println(a+b);
}
最后会输出double类型的20.0,而不是int类型的20
算术运算符包括:+ - * / %,用法跟C语言的使用方法一样,这里不再赘述
逻辑运算符包括:== != < > <= >=
逻辑运算符的运算结果都是布尔型,即只有true和false两种情况。
public static void main(String[] args) {
int a = 10;
int b = 20;
System.out.println(a==b);
System.out.println(a!=b);
System.out.println(a>b);
System.out.println(a=b);
System.out.println(a<=b);
}
逻辑运算符有三种:&&、||、!。逻辑运算符的操作数(操作数往往是关系运算符的结果)和返回值都是 boolean
表达式1&&表达式2
只要一个为假则全部为假
短路:若表达式1为假,则不进行表达式2
表达式1||表达式2
只要一个为真则全部为真
短路:若表达式1为真,则不进行表达式2
!表达式
若表达式为真,则该式为假。若表达式为假,则该式为真
& 和 | 如果操作数为 boolean 的时候, 也表示逻辑运算.。但是和 && 以及 || 相比, 它们不支持短路求值,所以建议不要使用。
Java 中对数据的操作的最小单位不是字节, 而是二进制位。
位运算符主要有四个: & | ~ ^
位操作表示 按二进制位运算。 计算机中都是使用二进制来表示数据的(01构成的序列),按位运算就是在按照二进制位的 每一位依次进行计算
只有对应二进制位都为1的时候,运算结果二进制位才为1
只要有一方二进制位为1的时候,运算结果二进制位就为1
一样的二进制位结果是0,不一样的二进制位结果是1
如果该位为 0 则转为 1, 如果该位为 1 则转为 0
了解即可,移位运算符有三个:<<、>>、>>>
表达式1 ?表达式2:表达式3
当 表达式1 的值为 true 时, 整个表达式的值为 表达式2 的值;当 表达式1 的值为 false 时, 整个表达式的值为 表达式 3 的值。具体用法如下列代码所示
public static void main(String[] args) {
int a = 10;
int b = 20;
int max = a>b ? a:b;
System.out.println(max);
}
优先级 | 运算符 |
1 |
() |
2 | ! + - ++ -- |
3 | * / % |
4 | + - |
5 | < <= > >= |
6 | == != |
7 | ^ |
8 | && |
9 | || |
10 | ? : |
11 | = += -= *= /= %= |
关键字是 Java 中的一些具有特定含义的单词,也可以叫Java保留字。Java关键字不能用作变量名、方法名、类名、包名和参数
目前我们接触到的关键字有:public static final...
有兴趣的朋友可以通过Java关键字大全(关键字分类详解) | 码笔记 (mabiji.com)来了解更多
最后,谢谢阅读!笔者水平有限,有错误请斧正!