java基础
注释
书写注释是一个非常好的习惯
- 单行注释://
- 多行注释:/* */
- 文档注释:/***/
标识符和关键字
关键字:
java的所有组成部分都需要名字。类名、方法名、变量名都被称为标识符。
- 所有的标识符都是以(A-Z)(a-z)$或_开始的。
- 标识符之后可以是(A-Z)(a-z)$、_或任意数字字母的组合。
- 不能使用关键字做为变量名或方法名
- 大小写敏感
- 可以使用汉字,但一般不建议使用
数据类型
java是一门强类型语言:强类型语言要求变量的使用严格符合规定,所有变量必须先定义后才能使用。(安全性高)
弱类型语言:不要求变量的使用严格符合规定,所有变量不必先定义后才能使用。如javascript
java的数据类型
其中long类型一般在数后加个L来表示区分,float类型要加F来区分。
String不是关键字,是一个类;
字节
32位的电脑只能用36位的cpu,最大内存只支持到4G,和寻址能力直接挂钩,而64位的电脑可以支持128G;
数据类型扩展及面试题
整数扩展:
进制:
- 二进制:0b开头
- 十进制
- 八进制:0开头
- 十六进制:0x开头
浮点数扩展:
-
float类型和double类型相同的小数可能是不相等的如:
float f=0.1f; double b=0.1; System.out.println(f==b);//输出结果为flase System.out.println(f);//输出结果为0.1 System.out.println(b);//输出结果为0.1
-
如果float足够大,值+1和以前相等
float t=90811111112542358855655476f; double k=t+1; System.out.println(t==k);//输出结果为true
究其原因,是因为浮点数能表示的字长是有限的,离散的,一般会存在舍入误差,其结果只是个约数,接近但不等于。
因此,不能使用float来表示银行等和钱的业务,因为存在误差。
最好完全避免使用浮点数来进行比较。
要表示银行的业务,可以用BigDecimal数学工具类来操作。
字符扩展:
1.字符可以强转成int,所有的字符本质上还是数字,有编码表和其对应。
2.转义字符:
-
\u:转义为Unicode编码表示的方法(16进制):如
char c5='\u0061'; System.out.println(c5);//16进制的0061=十进制的97,所以输出a
-
\t:水平制表符
-
\n:换行
布尔扩展:
boolean flag=true;
if (flag){}
if (flag=true){}//与上行代码等价
类型转换
java是强类型语言,所以有些运算需要用到类型转换。
运算过程中,不同的数据类型要先转换成同一种类型的才能计算,由低到高自动转,由高到低强转(会损失数据)
转换分强制类型转换和自动类型转换
注意点:
- 不能对布尔值进行转换
- 不能把对象类型转换为不相干的类型
- 把高容量转换为低容量要用强制类型转换(加括号)
- 尽量避免内存溢出或者精度问题
- 在计算大数值时,特别要注意精度的问题,如下例子
int money=10_0000_0000;//java7的新特性,中间加‘—’可以更清晰
int b=20;
long total;
total=b*money;
System.out.println(total);
//输出结果为-1474836480,究其原因是因为b和money都是int类型的,它们的积也是int类型,超过了int类型的最大值,所以数据会溢出
下面的例子就没问题了
int money=10_0000_0000;
int b=20;
long total;
total=(long)b*money;
System.out.println(total);
变量
变量:可以变化的量
java是一种强类型语言,每个变量都要声明其类型。
java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。
注意:
- 每个变量都有类型,可以是基本类型,也可以是引用类型。
- 变量名必须是合法的标识符。
- 变量声明是一个完整的语句,因此每一个的声明必须以分号结束。
变量的作用域:
1. 类变量:加static关键字来定义,和实例变量差不多,可用类名直接调用。
2. 实例变量:在方法体外、类内部创建的变量,需要使用对象来调用,可以不初使化,输出类型的默认值。
3. 局部变量:局部变量是指在一个方法体中有效,跳出这个范围就无效了。
常量:初使化后不能再改变值,不会变动的值。
所谓常量可以被理解为一种特殊的变量,它的值被设定后,在程序运行过程中不允许被改变。
常量一般全用大写。
修饰符不区分顺序:如下两行代码是一样的
static final double PI=3.14;
final static double PI=3.14;
变量的命名规范:(类首字母大写,变量和方法名首字母小写,并遵循驼峰命名法原则,常量大写或加下划线)
java的运算符
算数运算符:+ - * / % ++ --
赋值运算符:=
关系运算符:> < >= <= == != instanceof
逻辑运算符:&& || !
位运算符: & | ^ ~ >> << >>>
条件运算符: ? :
扩展赋值运算符:+= -= *= /=
long a=12312142124123123L;
int b=12;
short c=43;
byte d=19;
System.out.println(a+b);//long
System.out.println(c+b);//int
System.out.println(d+c);//int
println参数值的整形类型最小是int型,所以short类型和byte类型的和为int类型。
自增自减运算符
++ --
- a++:先赋值,在自增
- ++a先自增,在赋值
- --同理
逻辑运算之短路运算
//短路运算,与运算中如果第一个就是false,后面就不在判断了
int c=4;
boolean d=c<4&&(c++<4);
System.out.println(d);
System.out.println(c);//输出4,可见c++并没有执行
位运算
A=0011 1100
B=0000 1101
--------------------
//与运算:全是1为1,否则为0 A&B=0000 1100
//或运算:至少有一个1为1,其他得0 A|B=0011 1101
//异或:相同0为,相异为1 A^B=0011 0001
//非:取反,相同为0,不同为1 ~B =1111 0010
实例:
Integer a=0b0011_1100;
Integer b=0b0000_1101;
System.out.println(Integer.toBinaryString(a));
System.out.println(Integer.toBinaryString(b));
System.out.println(Integer.toBinaryString(a&b));
System.out.println(Integer.toBinaryString(a|b));
System.out.println(Integer.toBinaryString(a^b));
System.out.println(Integer.toBinaryString(~b));
输出:
111100
1101
1100
111101
110001
11111111111111111111111111110010
//<<:左移>>:右移>>>:无符号右移
/*
* 0000 0001 :1
* 0000 0010 :2
* 0000 0011 :3
* 0000 0100 :4
* ...
* 0000 1000:8
* ...
* 0001 0000:16
*
*从上面可以看出,左移一位是*2,右移一位是/2
* 面试题:如何用最快的方法算出2*8
* 2*8=2*2*2*2=16
* 由2左移3位就可以了,如下代码
* */
public static void main(String[] args) {
System.out.println(2<<3);
}
//>>:带符号右移。正数右移高位补0,负数右移高位补1。>>>:无符号右移。无论是正数还是负数,高位通通补0。
字符串连接符+
如果输出的东西是字符串与数值用“+”连接,一般会直接转换成字符串类型,下面的情况除外,""空字符串在后面会先将前面的相加在拼接。
//字符串连接符+
int a=10;int b=20;
System.out.println(""+a+b);//输出1020
System.out.println(a+b);//输出30
System.out.println(a+b+"");//输出30
包机制
为了更好的组织类,java提供了包机制,用于区别类名的命名空间(可以看成是一个个的文件夹)
一般利用公司域名倒置作为包名:如com.baidu.www
用import来导入包,可以用*通配符来批量导入
JavaDoc生成文档
用javadoc命令生成jdk文档,编辑好源文件,用javadoc命令可以生成jdk文档,-encoding UTF-8和_charset UTF-8 是设置编码格式和字符集,防止中文乱码。
用idea生成JDK文档:
本文来自博客园,作者:一只快乐的小67,转载请注明原文链接:https://www.cnblogs.com/sp520/p/15173297.html