变量类型
变量主要是用于保存数据,所以就类似一块内存吧,用来储存数据。
变量有以下类型
类型 | 表示 | 占字节数 |
---|---|---|
整型 | int | 4 |
短整型 | short | 2 |
长整型 | long | 8 |
单精度浮点型 | float | 4 |
双精度浮点型 | double | 8 |
字符型 | char | 2 |
字节型 | byte | 1 |
布尔型 | boolean | 1 |
字符串 | String |
final表示常量不能在程序运行过程中发生修改
整型是只有整数部分,不四舍五入。一般用整型与长整型,短整型范围太少一般不推荐使用。
浮点型是有小数点的数据,由于单精度表示的数据精度范围较小,一般使用float。
boolean的类型变量只有true和false。不能和int相互转换。
字符串的+,表示字符串拼接
public class Test {
public static void main(String[] args) {
String a = "hello";
String b = "world";
String c = a + b;
System.out.println(c);
}
}
对于+来说具体的行为和两侧操作数的类型相关,
如果两侧的类型都是数字,那么就是一个单纯的数字相加,如果两次的类型有string,就会执行字符串拼接。
抛出异常 是运行时产生的错误和编译错误不一样。
转字符串就用parsexx
++ – 自增、自减
前置++和后置++的主要区别在于在于取表达式的返回值。如果不取返回值,那么两者一样,效果等价。
++a 表达式返回的时自增之后的结果
a++ 表达式返回的时自增之前的结果
前后++(int num){
num+=1;
return num;
}
后置++(int num){
Int tmp = num;
Num+=1;
Return tmp;
}
感觉后置++的运行时间和空间要比前置低,但是实际上编译器会对代码进行优化。
如果时C++里面,由于C++支持“运算符重载,被++的操作数可能是一个复杂的类,这个时间编译器就不好优化,C++中的前置自增确实可能比后置自增效率更高
C++中都是写成++a
Java中主要还是写成a++
(++a)+(a++)的答案不确定,是因为jdk的运行顺序不一样。
变量的命名规则
1、只能包含数字,字母,下划线
2、不能以数字开头
3、变量名有大小写之分
建议用小驼峰命名法,类似yourName
类型互相转换
数字一类的只能从小变大,不能从大变小,否则影响精度。
int与boolean不可以相互转换
int转byte会有损失
当int与long混合运算,int会提升成long。如果要使用int需要强制转换。
算术运算符
基本四则运算符±*/%
主要注意除法的结果有没有小数
关系运算符
关系运算符主要有六个 == != < > <= >=
逻辑运算符
主要有三个 && || !
注意逻辑运算符的操作数和返回值都是boolean类型
位运算
位运算符主要有四个
位运算符 | 表示 |
---|---|
& | 与 |
1 | 或 |
~ | 取反 |
^ | 按位异或 |
按位异或就是,如果两个数字二进制位相同,则结果为0,相异结果为1
位操作表示按二进制位运算,
例如: 如果两个二进制位都是1,则结果为1,否则结果为0
public class Test {
public static void main(String[] args) {
int a = 10;
int b = 20;
System.out.println(a & b);
}
}
这里面的10 等于 01010
20等于10100
所以a&b后为1
不使用临时变量 把a与b变换位置
方法一
A=a+b
B=a-b
A=a-b
方法二
A=a^b;
B=a^b;
A=a^b;
移位运算
移位符 | 表示 |
---|---|
<< | 最左侧位不要了,最右侧补0 |
>> | 最右侧位不要了,最左侧补符号位 |
>>> | 最右侧位不要了,最左侧补0 |
条件运算符
表达式1?表达式2:表达式3
当 表达式1 的值为 true 时, 整个表达式的值为 表达式2 的值; 当 表达式1 的值为 false 时, 整个表达式的值为 表达式3 的值.
public class Test {
public static void main(String[] args) {
// 求两个整数的最大值
int a = 10;
int b = 20;
int max = a > b ? a : b;
System.out.println(max);
}
}