一 常量
常量是指在程序中固定不变的数据
常量的分类
类型 | 含义 | 例子 |
---|---|---|
整数常量 | 所有的整数 | 0,1,-89 |
浮点数常量 | 所有的小数 | 0.2,-9.2 |
字符常量 | 单引号中的单个字符 | ‘A’,’单’,‘ ’ |
字符串常量 | 双引号中的多个字符,可以为空 | “hello”,”你好”,”” |
布尔常量 | true和false | true,false |
空常量 | 空值(null) | null |
转义字符序列
符号 | 字符含义 |
---|---|
\n | 换行 (0x0a) |
\r | 回车 (0x0d) |
\f | 换页符(0x0c) |
\b | 退格 (0x08) |
\0 | 空字符 (0x20) |
\s | 字符串 |
\t | 制表符 |
" | 双引号 |
' | 单引号 |
\ | 反斜杠 |
\ddd | 八进制字符 (ddd) |
\uxxxx | 16进制Unicode字符 (xxxx) |
例子
输出各种常量
public class ConstDemo {
public static void main(String[] args) {
//字符串常量
System.out.println("abd");
System.out.println("");
//整数常量
System.out.println(200);
System.out.println(-100);
//浮点数常量
System.out.println(2.00);
System.out.println(-8.90);
//字符常量
System.out.println('a');
System.out.println('A');
//布尔常量
System.out.println(true);
System.out.println(false);
//空常量不能打印输出
//System.out.println(null);
}
}
二 变量与数据类型
变量
变量是指在内存中开辟的存储空间,用于存放运算过程中需要用到的数据。(程序中可变的数据)
Java中要求一个变量每次只能保存一个数据,必须要明确保存的数据类型。
数据类型
数据类型分类
Java的数据类型分为两大类:
基本数据类型:包括 整数 、 浮点数 、 字符 、 布尔 ;
引用数据类型:包括 类 、 数组 、 接口 。
基本数据类型
四类八种基本数据类型:
数据类型 | 关键字 | 内存占用 | 取值范围 |
---|---|---|---|
字节型 | byte | 1个字节 | -128~127 |
短整型 | short | 2个字节 | -32768~32767 |
整型 | int(默认) | 4个字节 | -231次方~2的31次方-1 |
长整型 | long | 8个字节 | -2的63次方~2的63次方-1 |
单精度浮点数 | float | 4个字节 | 1.4013E-45~3.4028E+38 |
双精度浮点数 | double(默认) | 8个字节 | 4.9E-324~1.7977E+308 |
字符型 | char | 2个字节 | 0-65535 |
布尔类型 | boolean | 1个字节 | true,false |
变量的定义
变量定义的格式包括三个要素: 数据类型 、 变量名 、 数据值 。
格式
数据类型 变量名 = 数据值;
例子
public class TestVariable {
public static void main(String[] args){
//定义字节型变量
byte b = 100;
System.out.println(b);
//定义短整型变量
short s = 1000;
System.out.println(s);
//定义整型变量
int i = 123456;
System.out.println(i);
//定义长整型变量
long l = 12345678900L;
System.out.println(l);
//定义单精度浮点型变量
float f = 5.5F;
System.out.println(f);
//定义双精度浮点型变量
double d = 8.5;
System.out.println(d);
//定义布尔型变量
boolean bool = false;
System.out.println(bool);
//定义字符型变量
char c = 'A';
System.out.println(c);
}
}
注意
变量名称:同一个大括号范围内,变量的名字不可以相同; 变量赋值:定义的变量,不赋值是不能使用的。
变量赋值:定义的变量,不赋值是不能使用的。
数据类型转换
程序中要求计算的数据,必须要保证数据类型的一致性,如果数据类型不一致时将发生类型的转换。
自动转换 (隐式)
特点:代码不需要做处理,自动转换
规则:将取值范围小的类型
自动提升为取值范围大的类型
转换从低级到高级。
低 ------------------------------------> 高
byte,short,char—> int —> long—> float —> double
public class TestDataType {
public static void main(String[] args) {
// 左边是long类型,右边是int类型,左右不一致
// int ---> long符合从小到大,发生自动转换
long num1 = 100;
System.out.println(num1);
// 左边是double类型,右边是float类型,左右不一致
// float ---> double符合从小到大,发生自动转换
double num2 = 2.4F;
System.out.println(num2);
// 左边是float类型,右边是long类型,左右不一致
// long ---> float符合从小到大,发生自动转换
float num3 = 10L;
System.out.println(num3);
}
}
强制类型转换(显式)
特点:代码需要进行特殊的处理,不能自动转换;
规则:将取值范围大的类型
强制转换成取值范围小的类型
;
格式:范围小的类型 范围小的变量名 = (范围小的类型)范围大的数据。
public class TestDataType {
public static void main(String[] args) {
//左边是int类型,右边是long类型
// long --> int,不是从小到大(不能自动转换)
//格式:范围小的类型 范围小的变量名 = (范围小的类型)范围大的数据
int num4 = (int)100L;
System.out.println(num4);
//数据溢出
int num5 = (int)100000000000L;
System.out.println(num5);
//数据精度丢失
int num6 = (int)3.99;
System.out.println(num6);
byte num7 = 40;
byte num8 = 50;
// byte + byte --> int + int --> int
int result = num7 + num8;
System.out.println(result);//90
byte num9 = 40;
short num10 = 50;
// byte + short --> int + int --> int
// int强制转化成short:注意必须保证大小没有超过short的大小范围
short result1 = (short)(num9 + num10);
System.out.println(result1);//90
}
}
注意
1、强制类型转换一般不推荐使用,有可能会出现数据精度丢失、数据溢出;
2、char/short/byte三种数据类型都可以进行数学运算,例如加法“+”;
3、char/short/byte三种数据类型运算时,都会被提升为int类型,再进行运算;
4、布尔类型不能发生数据类型转化。
数据转换表
ASCII码表
常见的值
字符 | 数值 |
---|---|
0 | 48 |
9 | 57 |
A | 65 |
Z | 90 |
a | 97 |
z | 122 |
Unicode编码表
运算符
运算符:特定的操作符号,例如:+,-
表达式:运算符连起来的式子,例如:a+b
算数运算符
+ | 加法运算 |
---|---|
- | 减法运算 |
* | 乘法运算 |
/ | 除法运算 |
% | 取模运算(取余数) |
++ 、 -- | 自增自减运算 |
加号"+"
常见的三种用法:
1、对于数值来说,就是加法;
2、对于字符char类型来说,在计算前,char会被提升为int类型,然后再进行运算;
3、对于字符串String来说,加号表示字符串拼接操作(任何数据类型和字符串拼接,结果都是字符串)
自增自减运算
++ 运算,变量自己增长1。反之, -- 运算,变量自己减少1,用法与 ++ 一致。
独立运算
变量在独立运算时, 前++ 和 后++ 没有区别 。
变量 前++ :例如 ++i 。
变量 后++ :例如 i++ 。
混合运算
和其他变量放在一起, 前++ 和 后++ 就产生了不同。
变量 前++ :变量a自己加1,将加1后的结果赋值给b,也就是说a先计算。a和b的结果都是2。
public static void main(String[] args) {
int a = 1;
int b = ++a;
System.out.println(a);//计算结果是2
System.out.println(b);//计算结果是2
}
变量 后++ :变量a先把自己的值1,赋值给变量b,此时变量b的值就是1,变量a自己再加1。a的结果是2,b 的结果是1。
public static void main(String[] args) {
int a = 1;
int b = a++;
System.out.println(a);//计算结果是2
System.out.println(b);//计算结果是1
}
赋值运算符
基本赋值运算符:=,表示把右侧的数据赋值给左侧
复合赋值运算符:
+=:a += b 相当于:a = a+b
-=:a -= b 相当于:a = a-b
*=:a = b 相当于:a = ab
/=:a /= b 相当于:a = a/b
%=:a %= b 相当于:a = a%b
比较运算符
==、>、<、>=、<=、!=
逻辑运算符
&&、||、! 逻辑运算符具有短路
效果:如果左边已经可以判断最终结果,右边代码将不再执行,从而节约一定的性能
三元运算符
格式:数据类型 变量名 = 条件判断?表达式A:表达式B;
注意
-
运算中出现不同的数据类型,那么结果是数据类型范围大的那种;例如:double + int --> double + double = double;
-
只有变量才能进行自增和自减运算,常量不能使用;
-
只有变量才能使用赋值运算符,常量不能使用;
-
逻辑运算符只能由于布尔值。