#数据类型扩展
书写注释是一个非常号的习惯
Java是强类型语言
要求变量的使用要严格符合规定,所有变量必须都必须先定义后实现
定义Long定义的时候要在后面加L
定义float的时候要在后面加f
long num=30L
float num=50.1f
单引号标注的是一个字符,双引号标注的是一个字符串
数据类型面试题
整数拓展
进制
二进制 0b 十进制 八进制0 十六进制 0x
int i1=10;
int i2=010;
int i3=0x10;
得到i1是10 ,i2是8 ,i3是16
浮点数拓展
float 有限的 离散的 舍入误差 大约 接近但是不等于
最好完全避免用浮点数进行比较
浮点数进行比较的时候考虑用Java中的BigDecimal 类
字符拓展
所以的字符的本质还是数字
编码Unicode 97=a 65=A 0~65536
转义字符
\t 制表符
\n 换行
String sa=new String ("hello world");
String sb=new String ("hello world");
System.out.printfln(sa==sb);
String sc="hello world";
String sd="hello world";
System.out.printfln(sc==sd);
输出结果两个不一样的
第一个是false
第二个是ture
要从对象,内存分析
布尔值扩展
boolean flag=true;
if(flag==true)
if(true)这两个一样的意思
类型转换
强制类型转换 高—低
自动类型转换 低—高
int i=128;
byte b=(byte)i;(强制类型转换)
注意:
1.不对布尔类型进行转化
2.不能把对象类型对象转化为不相干的类型
3.在把高容量转换到低容量的时候,强制转换
4.转换的时候可能存在内存溢出,或者精度问题
char ch='a';
int i=a+1;
System.out.printfln(i);
System.out.printfln((char)i);
int i=10_0000_0000;
int year=20;(int 能表示的最大的数字是10亿)
long money=(long)(i)*year;(需要提前把一个数强转成long才可以)
System.out.printfln(money);
变量
int a=1;
int b=2;
int c=3;
定义变量要这么定义,这样可读性好
变量作用域
类变量有static,实例变量没有static
局部变量:使用之前必须声明和初始化,它是在方法里面的
实例变量:从属于对象,可以先不用初始化,如果不进行初始化而进行输出的话就会输出它的默认初始值。
类变量 static:是从属于这个类的,和类一起产生一起消失。
常量
常量一旦被设定后,在程序中不可以被改变。
final 常量名=值
final double PI=3.14
常量名一般使用大写
static final 修饰符的顺序没要求
变量命名规范
1.所以变量,方法,类名 要见名知意
2.类成员变量:首字母小写和驼峰原则
3.常量:大写字母和下划线
4.类名:首字母大写和驼峰原则
5.方法名:首字母小写和驼峰原则
运算符
long a=1232156545L;
int b=123;
short c=10;
byte d=8;
System.out.printfln(a+b+c+d);(如果里面有一个是Long类型的,那就是Long类型的了)
System.out.printfln(b+c+d);(Int类型)
System.out.printfln(c+d); (Int 类型)
(如果里面有一个是double那么后面就都会是double)
int a=3;
int b=a++;(先赋值,再自增)
int c=++a;(先自增,再赋值)
结果会是 a=5;
b=3;
c=5;
逻辑运算符和位运算符
&&(与运算)两个都为真才是真,但是存在短路运算的情况
int a=5;
boolean c=(a>5)&&(a++<10)
System.out.printfln(a);
结果a还是5,执行第一个判断的时候就返回假了
位运算
A=0011 1100
B=0000 1101
A&B:对应位置做与运算
A|B:对应位置做或运算
A^B:对应位置做异或运算,同为0,异为1
System.out.printfln(2<<3);(结果是16);
相当于二进制向左边移动3
//字符串连接符+,String
System.out.println(""+a+b);
System.out.println(a+b+"");
第二中情况才是正常的a+b的数值
三元运算
x?y:z 如果x为真则是y否则是Z
包机制
一般利用公司域名的倒置作为包名;www.baidu.com
包名可以是com.zeng.xxx;