1.字面常量
常量是在程序运行期间,固定不变的量称为常量。
public class HelloWorld{public static void main(String[] args){System.out.println("Hello,world");}
}
在以上程序中,输出的Hello Word,其中的“Hello Word”就是字面常量。
字面常量的分类:
- 字符串常量
- 整形常量
- 浮点数常量
- 字符常量
- 布尔常量
- 空常量
注意:字符串,整形,浮点型,字符型以及布尔型,在Java中都称为数据类型。
2.数据类型
在java中数据类型主要分为两类:基本数据类型和引用数据类型
基本数据类型有四类八种
1.四类:整形,浮点型,字符型以及布尔型
2.八种
注意:
- 不论是在16位系统还是32位系统,int都占用4个字节,long都占8个字节
- 整形和浮点型都是带有符号的
- 整型默认为int型,浮点型默认为double
- 字符串属于引用类型,该中类型后序介绍
总结:不管你是在多少位操作系统下,这个数据类型所占的字节数都是一样的,这就是java的可移植性。
3.变量
3.1变量的概念
简单来说变量就是可以改变的量,在我们的日常生活中有很多值是需要改变的,比如说年龄,身高,成绩分数等等,在这个时候就要通过不同的数据类型来定义不同的变量。
3.2语法格式
定义变量的语法格式为:
数据类型 变量名 = 初始值;
比如:
int a = 10; // 定义整形变量a,a是变量名也称为标识符,该变量中放置的值为10
3.3整型变量
public class test {public static void main(String[] args){int a = 10;System.out.println(a);}
}
注意事项:
1.int无论在任何操作系统下都是4个字节。
2.在给变量设置初始值时,值不能超过int的表示范围,否则会溢出。
3.变量在使用之前必须要赋初值,否则编译报错。
4.int的包装类型为Integer
5.java所有的数据类型都是有符号的,没有无符号这个说法。
长整型变量
public class test {public static void main(String[] args){long a = 10L;System.out.println(a);}
}
注意事项:
1.为了区分int和long,一般建议在初始值后面加上有个L
2.长整型在所有操作系统下都占8个字节
3.long的包装类型为Long
短整型变量
public class test {public static void main(String[] args){short a = 10;System.out.println(a);}
}
注意事项:
1. short在任何系统下都占2个字节
2. short的表示范围为:-32768 ~ 32767
3. 使用时注意不要超过范围(一般使用比较少)
4. short的包装类型为Short
字节型变量
public class test {public static void main(String[] args){byte a = 10;System.out.println(a);}
}
注意事项:
1. byte在任何系统下都占1个字节
2. byte的范围是:-128 ~ 127
3. 字节的包装类型为Byte
可以通过这两条语句分别打印最大值和最小值
3.4 浮点型变量
双精度浮点型
double d = 3.14;
System.Out.println(d);
在下面这个代码中会输出0.5吗?
int a = 1;
int b = 2;
System.out.println(a / b);
肯定不会啊,在java中,int 除以 int 的值仍然是 int(会直接舍弃小数部分)。如果想得到 0.5, 需要使用 double 类型计算。
这个代码的运行结果是什么?
double num = 1.1;
System.out.println(num * num);
执行结果为
1.2100000000000002
注意事项:
1. double在任何系统下都占8个字节
2. 浮点数与整数在内存中的存储方式不同,不能单纯使用 的形式来计算
3. double的包装类型为Double
4. double 类型的内存布局遵守 IEEE 754 标准(和C语言一样), 尝试使用有限的内存空间表示可能无限的小数, 势必会存在一定的精度误差,因此浮点数是个近似值,并不是精确值。
单精度浮点型
float num = 1.0f; // 写作 1.0F 也可以
System.out.println(num);
float 类型在 Java 中占四个字节, 同样遵守 IEEE 754 标准. 由于表示的数据精度范围较小, 一般在工程上用到浮点数都优先考虑 double, 不太推荐使用 float. float的包装类型为Float。
3.5字符型变量
char c1 = 'A'; // 大写字母
char c2 = '1'; // 数字字符
System.out.println(c1);
System.out.println(c2);
// 注意:java中的字符可以存放整形
char c3 = '帅';
System.out.println(c3);
3.6布尔型数据
布尔类型只能用来表示真假,类似网络用语:“尊都假都”。
boolean b = true;
System.out.println(b);
b = false;
System.out.println(b);
注意事项:
1. boolean 类型的变量只有两种取值, true 表示真, false 表示假.
2. Java 的 boolean 类型和 int 不能相互转换, 不存在 1 表示 true, 0 表示 false 这样的用法
3. Java虚拟机规范中,并没有明确规定boolean占几个字节,也没有专门用来处理boolean的字节码指令,在Oracle公司的虚拟机实现中,boolean占1个字节。
4. boolean的包装类型为Boolean
3.7类型转换
Java 作为一个强类型编程语言, 当不同类型之间的变量相互赋值的时候, 会有教严格的校验
比如说:
int a = 10;
long b = 100L;
b = a; // 可以通过编译
a = b; // 编译失败
在java中,当参与运算的数据类型不一致时,就会进行类型转换。
主要可以分为两种转换:自动类型转换(隐式),强制类型转换(显示)。
自动类型转换:就是当你不知道的情况下编译器会帮你把这些事情给做了。
强制类型转换:当数据类型由大到小时,需要强转,否则会编译失败。
注意事项:
1. 不同数字类型的变量之间赋值, 表示范围更小的类型能隐式转换成范围较大的类型
2. 如果需要把范围大的类型赋值给范围小的, 需要强制类型转换, 但是可能精度丢失
3. 将一个字面值常量进行赋值的时候, Java 会自动针对数字范围进行检查
4. 强制类型转换不一定能成功,不相干的类型不能互相转换
3.8类型提升
不同类型的数据之间相互运算时,数据类型小的会被提升到数据类型大的
int a = 10;
long b = 20;
int c = a + b; // 编译出错: a + b==》int + long--> long + long 赋值给int时会丢失数据
long d = a + b; // 编译成功:a + b==>int + long--->long + long 赋值给long
结论:
1. 不同类型的数据混合运算, 范围小的会提升成范围大的.
2. 对于 short, byte 这种比 4 个字节小的类型, 会先提升成 4 个字节的 int , 再运算
4.字符串类型
在Java中使用String类定义字符串类型,比如
public static void main(String[] args) {String s1 = "hello";String s2 = " world";System.out.println(s1);System.out.println(s2);System.out.println(s1+s2); // s1+s2表示:将s1和s2进行拼接
}
本节对只是对字符串进行简单的介绍,大家能够正常使用即可,后序会详细给大家介绍