ps:内容为本人学习韩顺平老师课程的笔记,全部all总都为个人总结,因此可能会有些口语化和碎碎念。
文章目录
运算符
算术运算符
对数值类型的变量进行运算
介绍
-
/
10/4=2 因为两者都是整数
要为double可以写double d=10/4 2.0(相当于把2变成浮点数) 或者10.0/4 =2.5 自动类型转换
-
%(取模,取余)
本质:a%b=a-a/b*b
- ++
1.独立使用 i++;++i;就是自增 相当于i=i+1;
2.作为表达式使用
前++:++i先自增再赋值
后++:i++先赋值再自增 (可以看等号离得近的是变量就是先赋值)
练习:
关系(比较)运算符
结果都是boolean型 要么true要么false,一般应在if结构中或循环结构的条件中
注意:“==”与“=”的区别
逻辑运算符
用于连接多个条件(多个关系表达式),最终的结果也是一个boolean值。
- 短路与&&,短路或||,取反!
- 逻辑与&,逻辑或|,^逻辑异或
&&与&的区别
虽然结果是一样的
&&短路与:如果第一个为false,第二个条件不用看,结果都为false
&逻辑与:不管第一个是不是false,都要判断第二个,所以效率低
||和|一个道理 变成ture
- ^逻辑异或 当a和b不同时结果为ture,否则为false
boolean b = (10>1)^(3<5)//结果为false 因为两边都为ture是一样的
练习
1.
2.
这道题就很坑了 注意有赋值“=”不是==“相等” 所以就是y是ture x为false 两个z都要加
赋值运算符
1.基本赋值 就是一个=
2.复合赋值运算符 += -= *= /= %=
例如a+=b 等于a=a+b;其他同理
- 赋值运算符左边只能是变量,右边可以是变量、表达式、常量值
- 复合赋值运算符会进行类型转换
但是如果写成b=b+2;就是不对的 byte类型再运算的时候会变成int型 而b还是byte类型
三元运算符
条件表达式?表达式1:表达式2
如果条件为真则返回1,否则返回2
注意自增是单行 只有自身的情况下 先返回和先赋值一个道理 而这里其实是省略了一个式子
-
表达式1和2要为可以赋值给接受变量的类型(或可以自动转换)
double不能返回给int(需要强转)
-
三元运算符可以转换if-else语句 就是当if里的条件如果是条件表达式的时候,就可以转化成三目运算符;
三目运算符求三个数的最大数
int max1=a>b?a:b;
int max2=max1>c?max1:c;
用一条语句
int max=(a>b?a:b)>c?(a>b?a:b):c;
但从效率和可读性来看都是第一个分步的比较好
运算符优先级
只有单目运算符(只需要一个常量运行运算)和赋值运算符是从右往左进行运算的
1… () {} ; , 等
2.单目运算
3.算数运算符
4.位移运算符
5.比较运算符
6.逻辑运算符
7.三元运算符
8.赋值运算符
标识符
规则
凡是自己可以取名的地方都可以叫标识符 变量名 类 方法
规范(更加专业)
练习
关键字和保留字
键盘输入语句
简单文本扫描器 是一个类 类在包下边
所以要1.声明这个包import
import java.util.Scanner;
2.创建Scanner对象
Scanner myScanner = new Scanner(System.in)
new创建一个对象,myScanner 就是Scanner的对象(变量)
3.接收用户的输入,使用Scanner类下的方法next();
System.out.println("请输入名字");
//当程序执行到next方法时,会等待用户输入
String name = myScanner.next();
进制
四种进制的介绍
输出的都变成了10进制
进制的转换
二、八、十六 转 十
乘法
十转 二 、八 、十六
除法 余数
转转相除法 欧几里得算法
二转八、 十六
八 、十六转二
原码反码补码
位运算
java 中有7个位运算符
要先转到二进制 然后转到补码进行运算 最后结果再变成原码 (因为补码运算简单 不需要考虑正负) 最后变成十进制
int 4个字节 32位
得到负数的补码 换成源码 就是求补码 符号位不变 其他位取反然后加1;最后转化为10进制;4个字节就是32位