
public class text {
public static void main(String[] args) {
float a = 3.5;
int b = a;
System.out.println(b);
}
}
打印b时会出现错误,因为不能兼容,数据从float转换到int可能会有损失。
public class text {
public static void main(String[] args) {
int a = 5;
float b = a;
System.out.println(b);
}
}
打印会输出5.0,因为从数据可以从int转换到float,在赋值时会变成float数据类型。
public class text {
public static void main(String[] args) {
char a = 'A';
int b = a;
System.out.println(b);
}
}
打印会输出65,因为'A'表示是得到A的ASCII码,赋值时会把原来的char类型转换成int类型。
public class text {
public static void main(String[] args) {
int a = 68;
char b = a;
System.out.println(b);
}
}
打印会出现错误,因为不能兼容,数据从int转换到char可能会有损失。
(1).必须以字母、下划线、或者美元符开头;
①以美元符 开头命名的变量虽然能够编译通过但是不建议使用;
②中文也可以作为命名开头且编译也能通过,但是不建议使用。
(2).除开头外后面的部分可以有字母、下划线、美元符$以及数字组成;
(3).虽然变量名不限制长度,但能表达清楚命名的含义即可;
(4).变量名不可以和java的关键字冲突;
大驼峰式命名法(upper camel case): 每一个单字的首字母都采用大写字母,例如:MyName
小驼峰式命名法(lower camel case): 第一个单词以小写字母开始;第二个单词的首字母大写,例如:myName
(1).所有变量、方法、类名:见名知意。
(2).类成员变量:首字母小写和驼峰原则:monthSalary。
(3).局部变量:首字母小写和驼峰原则
(4).常量:大写字母和下划线:MAX_VALUE。
(5).类名:首字母大写和驼峰原则:Man,GoodMan。
(6).方法名:首字母小写和驼峰原则:run(),runRun()。
标识符命名规则(1).标识符:凡是自己可以起名的都叫标识符
(2).标识符由数字0-9和26个字母以及_和$组成
(3).标识符不能以数字开头
(4).JAVA语言严格区分大小写
(5).标识符不能包含空格
| 算数运算符 | +代表 加法 |
| -代表 减法 | |
| *代表 乘法 | |
| /代表 除法 | |
| %代表 求、求模 | |
| //代表 整除 | |
| **代表 幂次方 |
| 赋值运算符 | = 代表将右侧的值赋给左侧。 例如a=10 |
| += 例如a += 1 ---->a = a + 1 | |
| *= 例如a *=1 ---> a = a * 1 | |
| /= 例如a =10 a/=5 a= 10/5 = 2 | |
| **= 例如 a = 10 a^^=2 a= 10 ^2 = 100 | |
| //= 这个结果只取整数,余数不取 | |
| %/ 这个只取余数 |
| 比较运算符 | >代表 大于 |
| <代表 小于 | |
| >= 代表 大于等于 | |
| <= 代表 小于等于 | |
| != 代表 不等于 | |
| == 代表 等于判断。和=不一样,=是赋值。 |
| 运算符 | 运算 | 实例 | 结果 | 说明 |
| & | AND(与) | true&false | false | 两边同true,则结果为true,否则为false。 |
| && | AND(短路与) | false&&true | false | 若第一个为false,则不往后进行,因为已经确定两边不能同true了。 |
| | | OR(或) | true|false | true | 只要有一个为true,则结果为true。否则为false。 |
| ^ | XOR(异或) | true^false | true | 两边不同为true,相同为false。 |
| || | OR(短路或) | true||false | true | 左边true则直接得到结果true。不往右进行。 |
| ! | 非 | true | false | 操作数为true,返回false。 |
| 位运算符 | &:按位与。当两位同时为1时才返回1. |
| |:按位或。只要有一位为1即可返回1. | |
| ~:按位非。单目运算符,将操作数的每个位(包括符号位)全部取反 | |
| ^:按位异或。当两位相同时返回0,不同时返回1。 | |
| <<:左移运算符。 | |
| >>:右移运算符。 | |
| >>>:无符号右移运算符 |
=是赋值号;==是条件判断语句中是否相等的意思。
(2)、二者的作用不同①、==
作用是将一个表达式的值赋给一个左值。一个表达式或者是一个左值,或者是一个右值。所谓左值是指一个能用于赋值运算左边的表达式。左值必须能够被修改,不能是常量。我们用变量作左值,还可以看到,指针和引用也可以作左值。
②、==
当左边的内容与右边的内容相同时,返回1。其余时候返回0。==是判断两个值大小是否相同的运算符。
(1)、 i++ 返回原来的值,++i 返回加1后的值。
(2)、 i++ 不能作为左值,而++i 可以。
+操作数值是相加
+操作字符是字符对应编码相加
+操作字符串是把字符串拼接
| & | AND(与) | true&false | false | 两边同true,则结果为true,否则为false。 |
| && | AND(短路与) | false&&true | false | 若第一个为false,则不往后进行,因为已经确定两边不能同true了。 |
| | | OR(或) | true|false | true | 只要有一个为true,则结果为true。否则为false。 |
| || | OR(短路或) | true||false | true | 左边true则直接得到结果true。不往右进行。 |
逻辑运算符:不短路与(&),前后都为true才返回true;前面false,后面也可以执行,
前后可以是表达式。
位运算符:与(&),2位同时为1才返回1,只能用于前后是整形数据。
逻辑运算符:不短路或(|),前后任一为true就返回true;前面true,后面也可以执行
前后可以是表达式。
位运算符:或(|),一位为1就返回1,只能用于前后是整形数据。
原码 :最高位是符号位,0代表正数,1代表负数,非符号位为该数字绝对值的二进制。
反码:正数的反码与原码一致,负数的反码是对原码按位取反,只是最高位(符号位)不变。
补码:正数的补码与原码一致,负数的补码是对原码按位取反加1,符号位不变。
正数原码反码补码是一样的,以5为例
原码:00000101
反码:00000101
补码:00000101 按位取反~5 = 11111010 补码
11111001 反码
10000110 原码
以-5为例
原码:10000101
反码:11111010 反码=原码取反(除符号位)
补码:11111011 补码=反码+1 按位非运算 ~5 = 00000100 补码反码原码
| 二进制3 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
| 二进制5 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 |
| 二进制1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
3&5是与运算,与运算是当二者同为1是才返回1。
| 二进制3 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
| 二进制5 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 |
| 二进制7 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 |
3|5是或运算,或运算是当二者只要有一个为1就返回1。
| 原码5 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 |
| 反码 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 |
| 补码 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 |
| 取反后补码~ | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 0 |
| 反码 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 |
| 原码-6 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 |
| 二进制3 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
| 二进制5 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 |
| 二进制6 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 |
3^5是异或运算,异或运算是当二者相同时返回0,二者不同返回1。
8<<2 8*4
<---------------------
高位舍弃 -- 低位以0填充
向左移两位
| 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
| 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
8>>2 8/4 正数高位补0,负数高位补1
------------------>
高位以0填充 -- 低位舍弃
| 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
| 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
| 原码5 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 |
| 反码 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 |
| 补码 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 |
| 取反后补码~ | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 0 |
| 反码 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 |
| 原码-6 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 |
| 原码-5 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 1 |
| 反码 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 0 |
| 补码 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 |
| 取反后补码~ | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
| 反码 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
| 原码4 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
>>有符号右移,正数高位补0,负数高位补1
>>>无符号右移,无论正数还是负数,高位都补0
(1)、如何最快速计算 8 * 4通过左移计算
通过右移计算
使用括号()可以改变优先级。
单目: 运算符只对一个操作数进行运算
~5 按位非
i++ 自增
!a 逻辑取反
双目: 运算符对两个操作数进行运算
3 + 4
5-2
6*7
8/2
10%3
a > b...........
三目: 运算符对三个操作数进行运算
?:
第二行有四个运算符,最先是>,然后是++,接着是?:,最后是=。