文章目录
字面常量
定义
字面常量:即程序运行期间,固定不变的量称为常量。
public class Test {
public static void main(String[] args) {
System.out.println("hello world!");
System.out.println("hello java");
System.out.println(123);
System.out.println('M');
System.out.println(true);
}
}
以上代码中,123,‘M’,true都是常量,称为字面常量。
分类
字符串常量:由双引号" “括起,如"12345”;
整型常量:在程序中直接书写的整数,如;100, 123;
浮点数常量:程序中直接书写的小数,如3.14, 5,20;
字符常量:有单引号’ ‘括起的单个字符,如’A’, ‘M’;
布尔常量:true和false;
空常量:null;
数据类型
JAVA 中的数据类型分为2类:基本数据类型和引用数据类型。
基本数据类型
四类:整型,浮点型,字符型,布尔类型;
八种:
注:与C语言不同的是,不论是在16位系统,32位系统,int都占用4个字节,long占用8个字节。
引用数据类型
有以下3种:
类 Class
接口 Interface
数组 Array
其具体表现形式和使用方法将会在之后学习。
变量
定义
所谓变量,就是在JAVA程序中,经常改变的内容。而数据类型就是用来定义不同类型的变量的。
语法格式
数据类型 变量名=初始值;
int a=10;
double b=5.20;
char c='A';
boolean d=true;
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(d);
以上就是变量的定义格式。
a=100; //变量的值是可以修改的
int m=5,n=2,z=0;//一行可以定义多个相同类型的变量
整型变量
整型变量
定义方法:
//方法一:在定义时高出初始值
int a=34;
System.out.println(a);
//方法二:未在定义时给出初始值,但在使用之前必须设置初始值,否则会报错
int b;
b=67;
System.out.println(b);
注意范围:
//int型变量所能表示的范围,超出范围,程序会报错
System.out.println(Integer.MIN_VALUE);
System.out.println(Integer.MAX_VALUE);
运行结果:
注:
- int 不论在何种系统下都为4个字节;
- 为了减少程序报错的频率,推荐在定义变量时,在没有合适初值的情况下,将其设置为0;
- 变量必须在使用之前赋值;
- int的包装类为Integer;
长整型变量
定义方法:
int a=20;
long b=30; //long定义的长整型变量
long c=10L; //为了区分int变量和long变量,在long类型变量的初始值后面加L(小写的L易与1混淆)
范围:
//long型变量所能表示的范围是极大的,足够大部分场景的使用
System.out.println(Long.MIN_VALUE);
System.out.println(Long.MAX_VALUE);
运行 结果:
注:
- 长整型变量的初始值后加L或l,更推荐L;
- 不论系统,long型变量占8个字节;
- long的包装类是Long;
短整型变量
定义方法:
short a=5;
System.out.println(a);
范围:
// short型变量所能表示的范围:
System.out.println(Short.MIN_VALUE);
System.out.println(Short.MAX_VALUE);
运行结果:
注:
- short在任何系统下都占2个字节;
- short的包装类型为Short;
字节型变量
定义方法:
byte m=4;
System.out.println(m);
范围:
// byte型变量所能表示的范围:
System.out.println(Byte.MIN_VALUE);
System.out.println(Byte.MAX_VALUE);
运行结果:
注:
- byte在任何系统下都占1个字节;
- byte的范围是:-128 ~ 127;
- 字节的包装类型为Byte;
浮点型变量
单精度浮点型
定义方法:
float m=1.0f;
float n=2.0F;
System.out.println(m);
System.out.println(n);
注:
- float占4个字节;
- float的包装类型为Float;
双精度浮点型
定义方法:
public class Test {
public static void main(String[] args) {
double m=3.14;
System.out.println(m);
}
}
相关计算:
int a1=1;
int b1=2;
System.out.println(a1/b1);
double a2=1.0;
double b2=2.0;
System.out.println(a2/b2);
int a3=1;
double b3=2.0;
System.out.println(a3/b3);
运行结果:
可以看到:
在JAVA中,int除以int的值仍然是int型,需要得到浮点型结果时,除数或被除数至少一个为浮点型。
注:
- double型占8个字节;
- double 的包装类为Double;
字符型变量
定义方法:
char c1 = 'A'; // 大写字母
char c2 = '1'; // 数字字符
System.out.println(c1);
System.out.println(c2);
// java中的字符可以存放整形
char c3 = '乖';
System.out.println(c3);
注:
- JAVA中,字符字面值的表现形式是:单引号’ '+单个字符;
- 由于计算机中的字符本质是一个整数,而在JAVA中使用Unicode表示字符,所以一个字符占用2个字节,表示的字符种类也就更多,可以包括中文。
布尔型变量
布尔型的一般使用情形是表示真假。
定义方法:
boolean b = true;
System.out.println(b);
b = false;
System.out.println(b);
注:
- . boolean 类型的变量只有两种取值, true 表示真, false 表示假;
- . Java 的 boolean 类型和 int 不能相互转换, 这一点与C语言是不同的,不存在 1 表示 true, 0 表示 false 这样的用法;
- boolean的包装类型为Boolean;
类型转换
在JAVA中,当参与运算数据类型不一致时,就会进行类型转换;
而JAVA中的类型转换分为自动类型转换(隐式)和强制类型转换(显式);
自动类型转换
自动类型转换即:在不处理代码的情况下,当进行代码编译时,编译器自动进行处理;
自动类型转换的特点:数据范围小的转为数据范围大的时会自动进行;
以代码为例:
可以发现:
小范围的值赋给大范围的值,编译器自动整型提升;
大范围的值赋给小范围的值,产生数据丢失,编译时报错;
强制类型转换
强制类型转换:当进行操作时,代码需要经过一定的格式处理,不能自动完成;
特点:数据范围大的到数据范围小的;
以代码为例:
可以发现:
不同类型的变量之间赋值, 表示范围更小的类型能隐式转换成范围较大的类型;
强制类型转换有可能造成精度丢失;
不是所有的强制转换都可以成功;
类型提升
不同类型的数据之间相互运算时,数据类型小的会被提升为数据类型大的;
- int与long之间:int会被提升为long;
- byte与byte的运算
byte 和 byte 都是相同类型, 但是为什么会出现编译报错呢?
原因是:
虽然 a 和 b 都是 byte, 但是计算 a + b 会先将 a 和b 都提升成 int, 再进行计算, 得到的结果也是 int, 这是赋给 c, 就会出现上述错误.
那么为什么byte型的a和b都会被提升为int型呢?
这是由于计算机的 CPU 通常是按照 4 个字节为单位从内存中读写数据. 为了硬件上实现方便, 像 byte 和 short 这种低于 4 个字节的类型, 会先提升成 int, 再参与计算.
正确的写法应该是这样的:
byte a = 10;
byte b = 20;
byte c = (byte)(a + b);
System.out.println(c);
小结:
不同类型的数据混合运算, 范围小的会提升成范围大的;
对于 short, byte 这种比 4 个字节小的类型, 会先提升成 4 个字节的 int , 再运算;
字符串类型
在Java中使用String类定义字符串类型;
public static void main(String[] args) {
String s1 = "hello";
String s2 = " java";
System.out.println(s1);
System.out.println(s2);
System.out.println(s1+s2); // s1+s2表示:将s1和s2进行拼接
}
而在一些情况下,字符串和整型数字之间也需要转换:
- int 转成 String
int num = 20;
// 方法1
String str1 = num + "";
// 方法2
String str2 = String.valueOf(num);
- String 转成 int
String str = "100";
int num = Integer.parseInt(str);
这里只是对字符串类型的初步了解,具体知识点以后慢慢学习吧!