一、变量
概念:变量指的是程序运行时可变的量,相当于开辟一块内存空间来保存一些数据。
变量: —成员变量 —局部变量(一般是在方法内部的变量)
1.整形变量
基本语法格式:int 变量名 = 初始值;
代码示例:
int n = 10;//定义一个整形变量
System.out.println(n);//打印这个值
注意事项:
(1).int表示变量的类型是一个整形,占4个字节(区别于c语言,是固定的和计算机的多少位无关)
(2).变量名是变量的标识,后续都是通过这个名字来使用变量
(3).java中的‘=’表示赋值,区别于常规的数学计算,意思是给变量设置一个初始值。
(4).初始化操作是可以选的,但是建议创建变量的时候都显式初始化
(5).最后记得加上分号,否侧会编译失败
(6).//表示注释,用于代码中的解释说明,不参与编译运行
(7).4个字节表示的数据范围是-2^31 — 2^31-1
可以使用以下代码查看java中的整形数据范围
System.out.println(Integer.MAX_VALUE);System.out.println(Integer.MIN_VALUE);
public static void main(string[] args) {
int a=10;
System.out.println(a);
System.out.println(Integer.MAX_VALUE);//2^31=2147483647
System.out.println(Integer.MAX_VALUE);//-2^31-1=-2147483648
System.out.println(Integer.MAX_VALUE+1);//-2147483648
System.out.println(Integer.MAX_VALUE-1);//2147483647
//这里看成一个圆分成两半的加减
//int 都是4个字节 和操作系统的多少位无关,所以可移植性非常强。区别于c语言。
}
2.长整形变量
基本语法格式:
long 变量名 = 初始值;
代码示例:
public static void main2(String[] args) {
long a = 10L;//long长整形8个字节。8 * 8 = 64位-> 取值范围-2^63-2^63-1
System.out.println(Long.MAX_VALUE);
System.out.println(Long.MIN_VALUE);
System.out.println(a);
}
3.双精度浮点型变量
基本语法格式:
double 变量名 = 初始值;
代码示例:
public static void main3(String[] args) {
double d=12.5;//8个字节
System.out.println(a);
//int a=12.5;这是错误的,整数不能去保存小数。
}
public static void main4(String[] args) {
double num = 1.1;
System.out.println(num*num);//在电脑的世界当中小数是没有一个最精确的。
//只能最精确到小数点的后几位 float 6位
int a = 1;
int b = 2;
System.out.println(a/b);//在java中,int除以int的值仍然是int(会直接舍弃掉小数的部分,原本是0.5,但是这里就变成0了)
//如果想得到0.5则需要使用double类型
double a = 1.0;
double b = 2.0;
System.out.println(a/b);
}
4.单精度浮点型变量
基本语法格式:
float 变量名 = 初始值;
代码示例:
public static void main(String[] args) {
float f = 12.5f;//4个字节
System.out.println(f);
}
5.字符类型变量
基本语法格式:
char 变量名 = 初始值;
代码示例:
public static void main(String[] args) {
char ch = 'g';//占2个字节,单引号的叫做字符,双引号——“字符串” -》 正数 Character
char ch2 = '高';
char ch3 = 97;
System.out.println(ch2);//一个汉字就是占2个字节
System.out.println(ch3);//打印结果是a,虽然给的是正数,但是因为是char的类型 所以会自己去寻找对应的字符,不能给负数
//执行javac的时候可能出现以下错误:
char ch=‘鍛?’;
//此时我们在执行javac时加上 -encoding UTF-8选项即可
//javac -encoding UTF-8 Test.java
}
6. 字节类型变量
基本语法格式:
byte 变量名 = 初始值;
代码示例:
public static void main(String[] args) {
byte b = 127;//占1个字节 -> Byte 取值范围是 -128 — 127
System.out.println(b+1);//128 因为是整型打印-结果就不是-128了
//int a = 2147483647;//直接赋值的时候,不能超过他的表示范围,eg:int a = 2147483648 ×
//System.out.println(a);
}
7.短整形变量
基本语法格式:
short 变量名 = 初始值;
代码示例:
public static void main(String[] args) {
short s = 10;//占2个字节 取值范围:-2^16 —— 2^16 -1
System.out.println(s);
}
8.布尔类型
基本语法格式:
boolean 变量名 = 初始值;
代码示例:
public static void main(String[] args) {
boolean flg = true;//布尔类型只有2个值:true or false
System.out.println(flg);
}
注:
(1)java中的boolean类型和int不能相互转换,不存在1表示true,0表示false这样的用法
(2)boolean类型有些JVM的实现是占一个字节,有些是占1个比特位,这个没有明确规定
9.字符串类型
基本语法格式:
string 变量名 = " 初始值 ";
代码示例:
public static void main(String[] args) {
String str="abcdef";//string不是基本类型(8种)([数值类型(整数、浮点)][字符类型][布尔类型]),是引用类型。
String str2="\"abcdef\"";//转义字符——打印结果-“adcdef”
System.out.println(str);//abcdef
System.out.println(str2);
}
public static void main2(String[] args) {
System.out.println("ab"+"cd");
String str1="ab";
String str2="cd";
System.out.println(str1+str2);//abcd
System.out.println(10+str1+str2);//10abcd
System.out.println(10+20+str1+str2);//30abcd
System.out.println(str1+str2+10+20);//abcd1020
//任何类型的数据和字符串进行拼接,其结果就是一个字符串
String ret=10+str1+str2;
System.out.println(ret);//10abcd
ret=str1+str2+10+20;
System.out.println(ret);//abcd1020
}
10、变量的命名规则
(1)一个变量名只能包含数字,字母和下划线
(2)数字不能开头
(3)变量名是区分大小写的,例如num和 Num是两个不同的变量
注:
(1)变量命名要具有描述性发
(2)变量名不宜直接使用拼音,特殊情况除外。比如:阿里巴巴(Alibaba)
(3)变量名尽量使用小驼峰命名法,当一个变量名又多个单词构成时,除了第一个单词之外,其他单词的首字母都大写
11、常量
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 字面值常量, 双引号中可以有多个字符 |
2. final 关键字修饰的常量
final int a = 10;
a = 20;
// 编译出错,无法为最终变量a分配值
注:常量不能在程序运行过程中发生修改!
12、理解类型转换
int a = 10;
long b = 20;
a = b; // 编译出错
b = a; // 编译通过注:long 表示的范围更大, 可以将 int 赋值给 long, 但是不能将 long 赋值给 int.
int a = 10;
double b =1.0;
a = b; // 编译出错
b = a; // 编译通过
注:double 表示的范围更大, 可以将 int 赋值给 double, 但是不能将 double 赋值给 int.
int a = 10;
boolean b = true;
b = a; // 编译出错
a = b; // 编译出错注:结论: int 和 boolean 是毫不相干的两种类型, 不能相互赋值.
byte a = 100; // 编译通过
byte b = 256; //编译报错
注: byte 表示的数据范围是 -128 -> +127, 256 已经超过范围, 而 100 还在范围之内.
java类型汇总
二、运算符
1.逻辑运算符
逻辑与(&&)
int a = 10;
int b = 20;
int c = 30;
System.out.println(a < b && b < c);
规则: 两个操作数都为 true, 结果为 true, 否则结果为 false.
逻辑或(||)
int a = 10;
int b = 20;
int c = 30;
System.out.println(a < b || b < c);
规则: 两个操作数都为 false, 结果为 false, 否则结果为 true
逻辑非(!)
int a = 10;
int b = 20;
System.out.println(!a < b);规则: 操作数为 true, 结果为 false; 操作数为 false, 结果为 true(这是个单目运算符, 只有一个操作数).
2.位运算符
解释:位操作表示按二进制位运算. 计算机中都是使用二进制来表示数据的(01构成的序列), 按位运算就是在按照二进制位的每一位依次进行计算.
按位与(&)
int a = 10;
int b = 20;
System.out.println(a & b); //结果就是0//01010
//10100
//00000
//进行按位运算, 需要先把 10 和 20 转成二进制, 分别为 1010 和 10100
// 如果两个二进制位都是 1, 则结果为 1, 否则结果为 0.
按位或(|)
int a = 10;
int b = 20;
System.out.println(a | b); //30//01010
//10100
//11110
//如果两个二进制位都是 0, 则结果为 0, 否则结果为 1
按位取反(~)
规则:如果该位为 0 则转为 1, 如果该位为 1 则转为 0
按位异或 ^
规则:如果两个数字的二进制位相同, 则结果为 0, 相异则结果为 1.
3.条件运算符
表达式1 ? 表达式2 : 表达式3
// 求两个整数的最大值
int a = 10;
int b = 20;
int max = a > b ? a : b;规则:当表达式1的值为 true 时, 整个表达式的值为表达式2的值; 当表达式1的值为 false 时, 整个表达式的值为表达式3的值.
也是 Java 中唯一的一个 三目运算符, 是条件判断语句的简化写法.