1 整型类型变量
1.1 基础语法格式
int +变量名=初始值;
1.2 实例代码
public static void main(String[] args) {
int a=10;
}
1.3 注意事项
java中int类型的变量占4个字节大小,有操作系统无关。
int类型的变量只能赋值整型的数据,不能赋值浮点型的数据。
int类型的范围是-2^32~2^32-1。若赋值超过这个范围就会报错
int类型的范围代码演示
public static void main(String[] args) {
int a=10;
System.out.println(Integer.MAX_VALUE);
System.out.println(Integer.MIN_VALUE);
}
2 长整型变量
2.1 基础语法格式
long+变量名=初始值
2.2 实例代码
public static void main(String[] args) {
long a=10000L;
}
2.3 注意事项
初始时使用数字加上L(l)的方式,一般都使用L,因为l在视觉上容易于1混淆
初始时可以使用整型直接赋值的,但是数字较大的时候就会出现类型不匹配的错误。
Java 中 long 类型占 8 个字节. 表示的数据范围 -2^63 -> 2^63-1
long范围代码演示
public static void main(String[] args) {
long a=10000;
System.out.println(Long.MAX_VALUE);//最大值
System.out.println(Long.MIN_VALUE);//最小值
}
3 双精度浮点型变量
3.1 基础语法格式
double+变量名=初始值
3.2 实例代码
public static void main(String[] args) {
double d=10.7;
}
3.3 注意事项
Java中double类型的数据存在一定的进度误差
例如
public static void main(String[] args) {
double d1=1.1;
System.out.println(d1*d1);
}
这里的运行结果出现了精度的误差。
double 占有8个字节
4 单精度浮点型变量
4.1 基础语法格式
float+变量名=初始值;
4.2 实例代码
public static void main(String[] args) {
float f1=10.3f;
System.out.println(f1);
}
4.3 注意事项
初始化时要在数据的后面加上F或者f,不能直接使用小数进行赋值。
例如
这样书写就是错误的,因为,float占4个字节。f2是float类型的变量,10.3是double类型的变量,
double类型的变量占8个字节,所以赋值时会出现类型不匹配的错误
5 字符类型变量
5.1 基础语法形式
char+变量名=初始值;
5.2 实例代码
public static void main(String[] args) {
char ch ='a';
System.out.println(ch);
}
5.3 注意事项
Java中用‘’+一个字符的形式表示字符
Java中使用 Unicode 表示字符,因此Java中char占有两个字节,表示的范围更大,包括中文。
6 字节类型变量
6.1 基础语法格式
byte+变量名=初始值;
6.2 实例代码
public static void main(String[] args) {
byte b=10;
System.out.println(b);
}
6.3 注意事项
字节类型表示的也是整数,只占有一个字节。
字节类型和字符类型互不相干。
7 短整型变量
7.1 基础语法格式
short+变量名=初始值;
7.2 实例代码
public static void main(String[] args) {
short s=10;
System.out.println(s);
}
7.3 注意事项
1. short 占用 2 个字节 , 表示的数据范围是 - 32768 - > +32767
2 这个数据类型表示的范围比较小,一般不推荐使用。、
8 布尔类型变量
8.1 基础语法格式
boolean+变量名=初始值;
8.2 实例代码
public static void main(String[] args) {
boolean bl=true;
System.out.println(bl);
}
8.3 注意事项
boolean只有两种取值ture表示真和false表示假。
Java中boolean于int没有任何关系,不存在0表示假,非0表示真。
boolean所占字节的大小没有明确规定。
9 字符串类型变量
9.1 基础语法格式
String+变量名=初始值;
9.2 实例代码
public static void main(String[] args) {
String str="hello world";
System.out.println(str);
}
9.3 注意事项
1. Java 使用 双引号 + 若干字符 的方式表示字符串字面值 .
2. 和上面的类型不同 , String 不是基本类型 , 而是 引用类型 ( 后面重点解释 ).
3. 字符串中的一些特定的不太方便直接表示的字符需要进行转义 .
转义字符示例
// 创建一个字符串 My name is "张三"
String name = "My name is \"张三\"";
Java中的常见转义字符
字符串的+拼接符
例如:
public static void main(String[] args) {
String str1="Hello ";
String str2="World";
System.out.println(str1+str2);//拼接成新的字符串“Hello World”;
}
字符串也可以和整数进行拼接
字符串和整数进行拼接时就是:当整数遇到字符串就会作为字符串拼接在一起。
例如:
public static void main(String[] args) {
String str1="Hello ";
String str2="World";
int a=10;
int b=20;
System.out.println(str1+str2+a+b);//拼接成新的字符串“Hello World1020”;
}
10 变量的作用域
也就是该变量能生效的范围 , 一般是变量定义所在的代码块 ( 大括号 )
例如:
public static void main(String[] args) {
{
int x = 10;
System.out.println(x); // 编译通过;
}
System.out.println(x);// 编译失败,找不到x
}
11 变量的命名规范
硬性指标 :
1. 一个变量名只能包含数字 , 字母 , 下划线
2. 数字不能开头 .
3. 变量名是大小写敏感的 . 即 num 和 Num 是两个不同的变量 .
注意 : 虽然语法上也允许使用中文 / 美元符 ($) 命名变量 , 但是 强烈 不推荐这样做 .
软性指标 :
1. 变量命名要具有描述性 , 见名知意 .
2. 变量名不宜使用拼音 ( 但是不绝对 ).
3. 变量名的词性推荐使用名词 .
4. 变量命名推荐 小驼峰命名法 , 当一个变量名由多个单词构成的时候 , 除了第一个单词之外 , 其他单词首字母都大写。
小驼峰命名法示例
int maxValue = 100;
String studentName ="张三";
12 常量
上面讨论的是不同类型的变量,同样每种类型都对应这它们的常量
常量是指在程序运行的过程中不能改变的值
常量有以下两种:
12.1 字面值常量
10 // int 字面值常量 ( 十进制 )
010 // int 字面值常量 ( 八进制 ) 由数字 0 开头 . 010 也就是十进制的 8
0x10 // int 字面值常量 ( 十六进制 ) 由数字 0x 开头 . 0x10 也就是十进制的 16
10L // long 字面值常量 . 也可以写作 10l ( 小写的 L)
1.0 // double 字面值常量 . 也可以写作 1.0d 或者 1.0D
1.5e2 // double 字面值常量 . 科学计数法表示 . 相当于 1.5 * 10^2
1.0f // float 字面值常量 , 也可以写作 1.0F
true // boolen 字面值常量 , 同样的还有 false
'a' // char 字面值常量 , 单引号中只能有一个字符
"abc" // String 字面值常量 , 双引号中可以有多个字符 .
12.2 final修饰的常量
final int a = 10;
a = 20; //编译出错,a此时是常量,程序运行过程中不能被修改
13 数据类型转换
java是强类型的语言,对不同类型的装换检查比较严格。
13.1 int和double,long之间的装换
public class TestDom {
public static void main(String[] args) {
int a=10;
double b=10.0;
long c=20;
a=b;//编译失败,浮点型赋值给整型会导致精度丢失。
b=a;//编译通过
a=c;//编译失败,长整型赋值给整型会导致精度丢失。
c=a;//编译通过
}
double表示的范围更大,可以将int赋值给double,但是不能将double赋值给int
long表示的范围更大,可以将int赋值给long,但是不能将long赋值给int
结论 : 不同数字类型的变量之间赋值 , 表示范围更小的类型能隐式转换成范围较大的类型 , 反之则不行 .
13.2 int和boolean之间的转换
public static void main(String[] args) {
int a = 10;
boolean b = true;
b = a; // 编译出错, 提示不兼容的类型
a = b; // 编译出错, 提示不兼容的类型
}
结论 : int 和 boolean 是毫不相干的两种类型 , 不能相互赋值 .
13.3 int和byte之间的转换
public static void main(String[] args) {
byte a=100;//编译通过
byte b=256;//编译失败,从int转换为byte可能会导致数据丢失
}
byte 表示的数据范围是 -128 -> +127, 256 已经超过范围, 而 100 还在范围之内
结论: 使用字面值常量赋值的时候, Java 会自动进行一些检查校验, 判定赋值是否合理
13.4 强制类型转换
public static void main(String[] args) {
int a = 0;
double b = 10.5;
a = (int)b;//编译通过
}
结论 :
使用 ( 类型 ) 的方式可以将 double 类型强制转成 int. 但是
1. 强制类型转换可能会导致精度丢失 . 如刚才的例子中 , 赋值之后 , 10.5 就变成 10 了 , 小数点后面的部分被忽略 .
2. 强制类型转换不是一定能成功 , 互不相干的类型之间无法强转,例如:int和boolean
13.5 类型转换小结
1. 不同数字类型的变量之间赋值 , 表示范围更小的类型能隐式转换成范围较大的类型 .
2. 如果需要把范围大的类型赋值给范围小的 , 需要强制类型转换 , 但是 可能精度丢失 .
3. 将一个字面值常量进行赋值的时候 , Java 会自动针对数字范围进行检查 .
14 数值提升
14.1 int和long混合运算
public static void main(String[] args) {
int a=10;
long b=20;
a=a+b;//编译报错,long到int可能导致数据丢失
b=a+b;//编译通过
}
结论 : 当 int 和 long 混合运算的时候 , int 会提升成 long , 得到的结果仍然是 long 类型 , 需要使用 long 类型的变量来
接收结果 . 如果非要用 int 来接收结果 , 就需要使用强制类型转换
14.2 byte和byte的运算
public static void main(String[] args) {
byte a=10;
byte b=20;
byte c=a+b;//编译出错,从int到byte可能导致数据丢失
}
结论 : byte 和 byte 都是相同类型 , 但是出现编译报错 . 原因是 , 虽然 a 和 b 都是 byte, 但是计算 a + b 会先将 a 和 b 都
提升成 int, 再进行计算 , 得到的结果也是 int, 这是赋给 c, 就会出现上述错误 .
由于计算机的 CPU 通常是按照 4 个字节为单位从内存中读写数据 . 为了硬件上实现方便 , 诸如 byte 和 short 这种低于
4 个字节的类型 , 会先提升成 int, 再参与计算 .
14.3 类型提升小结
1. 不同类型的数据混合运算 , 范围小的会提升成范围大的 .
2. 对于 short, byte 这种比 4 个字节小的类型 , 会先提升成 4 个字节的 int , 再运算
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是一个个人学习交流的平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽,造成漏登,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。