变量:
变量的命名:
标识符可以由大小写字母、数字、下划线(_)和美元符号($)组成,但是不能以数字开头。
变量不能重复定义,大小写敏感,比如A和a就是两个不同的变量。
不能有空格、@、#、+、-、/ 等符号。
应该使用有意义的名称,达到见名知意的目的(一般我们采用英文单词),最好以小写字母开头。
不可以是 true 和 false。
不能与Java语言的关键字或是基本数据类型重名
变量的命名后应该给变量赋值:以int为例:
有一下几种赋值的方法:
如果不赋值可能会出现报警告:'a' 从未使用变量 但程序仍然可以运行
赋值时应当与数据类型用空格隔开
public static void main(String[] args) {
int a;
int a;
a = 0;
int a = 0;
}
想要定义两个变量可以:
可以用逗号隔开 也可以分别定义
public static void main(String[] args) {
int a, b;
int a;
int b;
}
此时的变量可以进行打印和运算
public static void main(String[] args) {
int a = 10;
int b = a;
System.out.println(a + 1);
System.out.println(b);
}
如果我们在int 前面加了final关键词 则a就变成了常量 不允许被改值:
会显示错误:无法将值赋给 final 变量 'a'
public static void main(String[] args) {
final int a = 6;
a = 7;
System.out.println(a + 1);
}
整数类形:
- byte 字节型 (8个bit,也就是1个字节)范围:-128~+127
- short 短整形(16个bit,也就是2个字节)范围:-32768~+32767
- int 整形(32个bit,也就是4个字节)最常用的类型:-2147483648 ~ +2147483647
- long 长整形(64个bit,也就是8个字节)范围:-9223372036854775808 ~ +9223372036854775807
public static void main(String[] args) {
short a = 10;
System.out.println(a);
short a = 10;
int b = a; //小的类型可以直接传递给表示范围更大的类型 System.out.println(b); }
}
小的可以传递给大的,大的不可以传值给小的
这是由于我们在将小的整数类型传递给大的整数类型时发生了隐式类型转换,只要是从存储范围小的类型到存储范围大的类型,都支持隐式类型转换,它可以自动将某种类型的值,转换为另一种类型,比如上面就是将short类型的值转换为了int类型的值。
使用long时要注意:
在定义long变量时要在值后面加L或l
public static void main(String[] args) {
long a = 922337203685477580L;
System.out.println(a);
}
浮点类型:
- float 单精度浮点型 (32bit,4字节)
- double 双精度浮点型(64bit,8字节)
public static void main(String[] args) {
double a = 10.5, b = 66;
float f = 3.3f;
}
double可以定义一个浮点小数,也可以定义一个int型的整数(隐式类型转换)
定义float变量时要在值后面加一个F或f
(隐式类型转换)
byte→short(char)→int→long→float→double
字符类型:
char 字符型
char 输入一个数字会自动变为与ASCLL码相对应的符号,A的ASCLL码是65
a的ASCLL码是97
可以直接对字符定义用语法' '里面只允许定于一个字符
public static void main(String[] args) {
char c = 65;
char b = 'A';
System.out.println(c);
System.out.println(b);
}
布尔类型:
boolean类型只允许两种值
- true - 真
- false - 假
public static void main(String[] args) {
boolean b = true; //值只能是true或false System.out.println(b); }
}
运算符:
- +
- -
- *
- /
- =
- ()
- ++,--,+=,-=,*=,/=
1.=
赋值运算符,将右边的值赋至左边
存在隐式类型转换,可以由小转大,但是不允许大转小
public static void main(String[] args) {
int a = 5;
short b = 10;
int c = a + b;
System.out.println(c);
}
2.+,-
+可以实现数的相加,可以表示正数(一般忽略),也可以实现字符串的拼接
-可以实现数的相减,可以表示负数,不可以实现字符串的相减
public static void main(String[] args) {
int a = 10;
a = +a;
String s = "shi" + "shi";
System.out.println(a);
System.out.println(s);
}
3.*,/
*实现乘法
/实现除法
public static void main(String[] args) {
int a = 8, b = 2;
int c = a / b;
System.out.println(a * b); //乘法使用*表示乘号 System.out.println(a / b); //除法就是一个/表示除号 }
}
当int进行保留除法的结果时会把小数的部分丢去,如果用double就会保留小数部分
4.%
public static void main(String[] args) {
int a = 10;
System.out.println(a % 3);
}
取模运算符就是a/3后取其余数(10%3后的余数为1则(a%3)的值为1)
运算符的优先级
1 | -(负号) +(正号) | 从右向左 |
2 | * / % | 从左往右 |
3 | +(加法,包括字符串) -(减法) | 从左往右 |
4 | = | 从右向左 |
5.()
会优先运算,可以强制类型转换(要在范围内)
public static void main(String[] args) {
int a = 10;
int b = (a = 8) * (-a + 10);
System.out.println(b);
}
public static void main(String[] args) {
int a = 10;
short b = (short) a;
}
6.++,--,+=,-=,*=,/=
a++先出结果再自增,++a先自增再出结果
a=a+4与a+=4的效果相同 -=,*=,/=同理
public static void main(String[] args) {
int a = 8;
int d = 8;
int b;
int c;
b = a++;
c = ++d;
System.out.println(b);
System.out.println(c);
}
public static void main(String[] args) {
int a = 8;
a = a + 4;
int b = 8;
b += 4;
System.out.println(a);
System.out.println(b);
}
位运算符:
- &
- ^
- |
- ~
- >>
&(且)
public static void main(String[] args) {
int a = 9, b = 3;
int c = a & b; //进行按位与运算 System.out.println(c); }
}
a = 9 =1001
b = 3 = 0011
c = 1 = 0001
|(或)
public static void main(String[] args) {
int a = 9, b = 3;
int c = a | b;
System.out.println(c);
}
a = 9 = 1001
b = 3 = 0011
c =11= 1011
^(相等为0,不相等为1(按位异或运算符))
public static void main(String[] args) {
int a = 9, b = 3;
int c = a ^ b;
System.out.println(c);
}
a = 9 = 1001
b = 3 = 0011
c =10= 1010(从左往右第二位、第四位要么两个都是0,要么两个都是1,所以说结果为0)
~(取反)
public static void main(String[] args) {
byte c = ~127;
System.out.println(c);
}
127 = 01111111
-128 = 10000000
<<(左移)[机组知识]
public static void main(String[] args) {
byte c = 1 << 2; //两个连续的小于符号,表示左移运算 System.out.println(c); }
}
1 = 00000001
4 = 00000100(左移两位之后,1跑到前面去了,尾部使用0填充,此时就是4)
>>(右移)
public static void main(String[] args) {
byte c = 8 >> 2;
System.out.println(c);
}
8 = 00001000
2 = 00000010(右移两位之后,1跑到后面去了,头部使用符号位数字填充,此时变成2)
关系运算符
- > (大于)
- < (小于)
- == (等于)
- != (不等于)
- >= (大于等于)
关系运算符返回值为boolean型
逻辑运算符
- && (且 左右两边为true则返回true)
- || (或 左右两边有一边为true则返回true)
- ! (取反 取与值相反的值)
public static void main(String[] args) {
int a = 150;
boolean b = 100 >= a && a >= 60; //此时上来就不满足条件 System.out.println(b);
}
三元运算符
判断语句 ? 结果1 : 结果2
如果?的左边为真则返回:的左边,如果为假则返回:的右边
public static void main(String[] args) {
int a = 10;
char b = a > 10 ? 'A' : 'B'; //三元运算符需要三个内容,第一个是判断语句,第二个是满足判断语句的值,第三个是不满足判断语句的值
System.out.println(b);
}