java学习笔记(2)

标签(空格分隔): 课程笔记

1. 自动转换
byte short char可以转换成int,但是他们三个之间不能相互转换。
int 可以转换成long,需要在结尾添加l。
int可以转换成float,float 可以转换double。
特殊情况: long 可以转为float,但转换具有不确定性,不推荐。

int a=100;
byte b=10;
a=b; //将byte转为int

2. 强制类型转换
随便转换,但是会出现溢出等问题。
浮点数转为整数会舍弃小数部分。
boolean true/false ->1/0,分配一个字节存储。但是不能将其强制转换。

int a=500;
byte b;
b=(byte)a; 

String类型不是基本数据类型,是属于引用数据类型。
引用数据类型:1.class(字符串在这里) 2.接口 3.数组。

String中加号是字符串拼接的意思
一个重要的例子:

int a=20;
char b='a';
String c="1";
String ss;
ss=a+b+c; //1171 前面a+b是int和char的整数运算,运算之后会和字符串c拼接
ss=c+a+b;//120a

3. 进制
二进制:正数:原码反码补码相同。
负数:反码:符号位不变,其他按位取反,补码:反码加一。
八进制:前面加个0。
十六进制:前面加0x。
System.out.println按照int型输出。

4. 运算符
算数运算中,byte short int char类型运算结果都是int型。
在运算中,有long类型存在,运算结果就是long类型。
如果在运算中有float类型,则结果为float,有long也是float。
如果有double类型,则结果为double类型。
boolean不能参与算数运算。
/ 取整。
% 取余:结果的正负与被除数保持一致.
&:逻辑与
|:逻辑或
&&:短路与
||:短路或

5. 思考题

short a=20;
a=a+20; //这个会报错,因为a+20是int,转成short会报错
a+=20; //这个不会报错,因为这会进行强制转换


int i=1;
i*=0.1;
System.out.print(i); //0


int n=10;
n=n+(n++)+(++n);
/* n=10 n=10 前两个运算之后n++变成11,在进行第三个运算之前自加变成12,所以结果为10+10+12=32 */
System.out.print(n);

6. 骚操作

int i=10;
i=i++;
System.out.print(i); //输出为10
i=++i;
System.out.print(i);//输出为11

7. 位运算符
针对二进制数据的每一位进行运算,
左移:补0,相当于乘以2的n次方,用于乘法运算效率很高

int a=0;
a=2<<2;//

右移:相当于除以2的2次方,高位为0补0,为1补1
无符号右移:全部补0.
&:按位取与运算
|:按位运算
~:按照补码各位取反

8.三元运算符
公式?表达式1:表达式2

int a=4;
int b=5;
int c=a>b? a:b;

9.面试题型
1,比较三个数中最大值

int a=3;
int b=5;
int c=1;
(a>b?a:b)>c?(a>b?a:b):c

2.交换值,不要中间值

int a=10;
int b=2;
a=a+b;//a=12
b=a-b;//b=10
a=a-b;//2
//-----------------------------
a=a^b; //异或相当于消除和自身相同的数
b=a^b;//b=a
a=a^b;// a^b^a=b
posted @ 2019-10-29 21:25  夜空守望者Z  阅读(116)  评论(0编辑  收藏  举报