DAY02总结
1正反补码:
正数的原反补码是一样的
负数的反码是符号位不变,其他反转。补码是反码加1.
2变量 变量的类型1.引用数据类型。(类,接口,数组)
2.基本数据类型。
4类8种
整型: btye 1字节 变量定义格式 数据类型 变量名 = 初始化值;
short 2字节 整数型默认是int类型,浮点型默认是float类型
int 4字节 且float后面加F,long后面加L
long 8字节 byte 范围 -128到127
浮点型 float 4字节
double 8字节
字符型 char 2字节
布尔型 boolean 1字节
注意事项:1 在作用域内有效,即在大括号内效,且不能对同一变量重复命名。
2 变量在使用前必须赋值,否则会报错。
3 建议一行只定义一个变量,多个也可以不推荐。
类型转换 a.自动转换(从小到大) 顺序为byte,short,char,int,long,float,double.
b,强制转换(从大到小) 不建议使用会有精度的损失
格式:目标数据类型 变量名 =(目标数据类型)要转换的数据;
boolean类型不参与类型转换。
两个例子 1. byte b1 = 2;
byte b2 = 4;
byte b3 = b1 + b2; 有错,因为byte类型在参与运算时要提升int类型,完成运算后要赋值给byte,这样会有精度的损失。
byte = 2 +4; 这个是没有错误的,因为常量在编译的时候就可以直接计算出来。
2. byte b =130 有错误吗?如果有怎么解决,最后值是多少?
有,byte 的范围是-128到127, 130超出范围,所以要强制转换如下:
byte b= (byte)130;
这里要用到补码的知识,最后结果是-126.(溢出的byte简单算法:值-256即得,如130-256得-126)
字符串与字符的运算 1,字符串参与运算+号都为字符串连接符。
2.字符单独输出,直接输出字符,与整数运算,输出Asc||码
char 类型 范围为0-65535 且只有一个字符在里面,因为java采用unicode编码所以char也可以表示汉字且汉字也是两个字节。 'a'=97 'A'=65 '0'=48
3运算符:
a 算术运算符 + - * / % ++ --
1 加号有三个作用,作为加号,作为负号,作为字符串连接符。
2 /是取商,%是取余。(两个整数相除只得整数,想要得到小数加入符点型数据)
3 %只与左边符号有关
4 ++与-- 单独运算时,没有区别
参与运算时,以++为例,在数据前面时,先自增再参与运算,在数据后面时,先参与运算再自增,--类似。
b 赋值运算符 = /= += -= *=
不要把=与==搞混,且扩展的赋值运算符含有隐形的强制类型转换,且左边必须为变量。
c 关系运算符 == >= <= > < !=
不要把=与==搞混,且关系运算符的结果为boolean类型
d 逻辑运算符 & | ^ ! || &&
& 有f则为f
| 有t则为t
^ 不同为t,相同为f
! 真为假,假为真
符号左右两边连接的是boolean类型的表达式,||与&&结果不改变但是有短路功能,只执行左边,提高了代码的效率。
e 位运算符 ^ g 一个数如果对另一个数异或两次,这个数保持不变。
面试题:如果将两个整数的值交换(不用第三方变量)
a = a^b;
b = a^b;
a = a^b;
f 三元运算符 格式: 条件表达式?表达式1;表达式2;
1 比较两个数的大小并输出
int max = x>y? x: y;
2 判断两个数是否相等
boolean flag = x ==y;
3 三个数比较大小并输出
int temp = x>y? x: y;
int max = temp>z? temp: z;
4键盘录入 格式如下:
第一步导包: import java.util.Scanner; 在class的上面
第二步创建键盘录入对象: Scanner sc = new Scanner(System.in);
第三步定义变量接受数据:int x = sc.nextInt();
三个练习:将键盘录入加到三元运算符的练习中去。
|