变量和类型
冯诺依曼体系
整型变量(重点)
基本语法格式:int 变量名 = 初始值;
代码示例:
int num = 10;
System.out.println(num);
注意事项:
1、int表示变量的类型是一个整型。
2、变量名的变量的标识,后续都是通过这个名字来使用变量。
3、Java中 = 表示赋值,意思是给变量设置一个初始值。
4、初始化操作是可选的,但是建议创建变量的时候都显示格式化。
5、最后不要忘记分号,否则会编辑失败。
6、//表示注释。注释作为代码的解释说明部分,不参与编译运行。
在java中,一个int变量占4个字节。
长整型变量
基本语法格式:long 变量名 = 初始值;
代码示例:
long num = 10L;//定义一个长整型变量,初始值写作10l也可以(小写的l,不是数字1)
System.out.println(num);
注意事项:
1、基本语法格式和创建int变量基本一致,只是把类型修改成long
2、初始化设定的值为10L,表示一个长整型的数字,10l也可以。
3、使用10初始化也可以,10 的类型为int,10L的类型是long.
Java中long类型占8个字符,表示的数据范围-2^63 -> 2 ^63 - 1
双精度浮点型变量(重点)
基本语法格式:double 变量名 = 初始值;
代码示例:
double num = 1.0;
System.out.println(num);
Java中double类型为8个字节
单精度浮点型变量
基本格式:float 变量名 = 初始值;
代码示例:
float num = 1.0f;//写作1.0F也可以
System.out.println(num);
float类型在Java中占4个字节。
字符类型变量
基本格式:char 变量名 = 初始值;
代码示例:
char ch = 'A';
注意事项:
1、Java中使用 单引号+单个字母 的形式表示字面字符值。
2、计算机中的字符本质上是一个整数。
在Java中,一个字符占两个字节。
字节类型变量
基本语法格式:
byte 变量名 = 初始值;
代码示例:
byte value = 0;
System.out.println(value);
注意事项:
1、字节类型表示的也是整数,之占一个字节,表示范围较小(-128->127)
2、字节类型和字符类型互不相干。
短整型变量
基本语法格式:
short 变量名 = 初始值;
代码示例:
short value = 0;
System.out.println(value);
注意事项:
1、short 占用2个字节,表示的数据范围是 -32768 -> +32767
2、这个表示范围比较小,一般不推荐使用。
布尔类型变量
基本语法格式:
boolean 变量名 = 初始值;
代码示例:
boolean value = true;
System.out.println(value);
注意事项:
1、boolean 类型的变量只有两种取值,ture表示真,flase表示假。
2、Java的 boolean 类型和 int 不能互相转换,不存在 1 表示 true,0 表示 false 这样的用法。
3、boolean 类型有些JVM 的实现是占1个字符,有些是占1个比特位,这个没有明确的规定。
字符串类型变量(重点)
把一些字符放在一起就构成了字符串
基本语法格式:String 变量名 = “初始值”;
代码示例:
String name = "zhangsan";
System.out,println(name);
注意事项:
1、Java 使用双引号 + 若干字符的方式表示字符串字面值。
2、和上面的类型不同,String不是基本类型,而是引用类型。
3、字符串中的一些特定的不太方便直接表示的字符需要进行转义。
比较常见的转义字符如下图所示:
变量的作用域
也就是该变量能生效的范围, 一般是变量定义所在的代码块 (大括号)
变量的命名规则
硬性指标:
- 一个变量名只能包含数字, 字母, 下划线
- 数字不能开头.
- 变量名是大小写敏感的. 即 num 和 Num 是两个不同的变量。
软件指标: - 变量命名要具有描述性, 见名知意.
- 变量名不宜使用拼音(但是不绝对).
- 变量名的词性推荐使用名词.
- 变量命名推荐 小驼峰命名法, 当一个变量名由多个单词构成的时候, 除了第一个单词之外, 其他单词首字母都大
写.
小驼峰命名示例:
int maxValue = 100;
String studentName = "张三";
常量
常量主要有一下两种体现形式:
字面值常量
加粗样式
final关键字修饰的常量
final int a = 10;
a = 20;//编译出错,提示 无法为最终变量a分配值
常量不能在程序运行中发生修改
理解类型转换
Java为一个强类型编程语言,当不同类型之间的变量相互赋值的时候,会有较严格的校验。
int和long/double相互赋值
long 表示的范围更大,可以将int赋值给long,但是不能将long赋值给int.
double 表示的范围更大,可以将int赋值给double,但是不能将double赋值给int.
结论:不同数字类型的变量之间赋值, 表示范围更小的类型能隐式转换成范围较大的类型, 反之则不行.
int和boolean相互赋值
int a = 10;
boolean b = true;
b = a;
a = b;
结论:int 和 boolean 是毫不相干的两种类型,不能互相赋值。
int字面常量给byte赋值
byte a = 100;//编译通过
byte b = 256;//编译报错,提示 从int转换到byte可能会有损失
注意:byte 表示的数据范围是 -128 -> +127,256已经超过范围,而100还在范围之内。
结论:使用字面值常量赋值的时候,Java会自动进行一些检查校验,判定赋值是否合理。
使用强制类型转换
int a = 0;
double b = 10.5;
a = (int)b;
int a = 10;
boolean b = false;
b = (boolean)a;//编译出错,提示不兼容的类型。
结论:使用(类型)的方式可以将double类型强制转换为int。但是
1、强制类型转换可能会导致精度丢失,如刚才的例子中,赋值之后10.5就变成了10,小数点后面的部分被忽略。
2、强制类型转换不是一定能成功,互不相干的类型之间无法强转。
理解类型提升
1、不同类型的数据混合运算,范围小的会提升成范围大的。
2、对于short,byte这种比4个字节小的类型,会先提升成4个字节的int,再运算。
运算符
1、%操作在java中也能针对double来计算。
2、需要区分清楚前置自增以及后置自增之间的区别。
3、由于java是强类型语言,因此对于类型检查叫严格,因此像&&之类的运算操作数必须是boolean.
4、要区分清楚&和|什么时候表示按位运算,什么时候表示逻辑运算。(当&和|的操作数为整数(int,short,long,byte)的时候,表示按位运算,当操作数为boolean的时候,表示逻辑运算。)