JAVA学习笔记 day2
1.字符对象
对象池与字符的比较
String sa = new String("hello");
String sb = new String("hello");
String sc = "hello";
String sd = "hello";
System.out.println(sa==sb);
System.out.println(sc==sd);
在这两个例子中,分别输出F和T,因为在new一个String对象时,会产生一个新对象,同时分配的系统内存是不一样的,也就是说,这个比较的不是String的内容,而是String对象本身。后者是两个字符变量的比较,输出T没问题,好理解。
2.类型转换
低--------------------------------------------------->高
byte,short,char->int ->long->float->double
byte类型数据范围 -127—>128 超出这个范围会存在内存溢出
强制类型转换:(类型)+变量名 强制体现在高精度类型转换到低类型
自动类型转换:一般由低->高
注意点: 1.不能对布尔类型转换
2.不能把对象转换为不相干的类型
3.在把高容量转换到低容量的时候,强制转换
4.注意内存溢出或者精度问题
5.操作比较大的数的时候,注意溢出问题
jdk7 中,数字中间可以加下划线,便于区分:
100000000可以写成 1_0000_0000
精度问题:
int money = 10_0000_0000;
int year = 20;
int total1 = money*year;//存在溢出问题
long total2 = money*year;//仍然存在溢出问题
long total3 = money*((long)year);//结果能正常输出
原因在于,money*year属于两个int运算,结果还是属于int,计算出的值再赋予long类型的变量total2,仍然存在溢出问题,而先将其做类型转换后,再运算,得到的值是long类型,就不会存在溢出问题。
3.变量
Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。
在定义变量时,尽量避免 int a=0,b=1,c=2;这种类型的赋值,会降低程序的可读性。
变量的作用域
类变量:static int a=0;
实例变量: String s=“hello”;
局部变量:写在方法里的变量;
变量的命名规范
遵循驼峰原则
类成员变量:首字母小写其他单词首字母大写
局部变量:首字母小写+驼峰原则
常量:大写字母和下划线
类名:首字母大写和驼峰原则
方法名:首字母小写+驼峰原则
4.字符串的连接
System.out.println(""+15+30);
System.out.println(15+30+"");
这两句输出的含义时不一样的,前者输出1530,后者输出45;因为在处理字符串的链接时,如果出现String类型的,后面都会转换为String类型加在一起,而String出现在后者的后面,所以先计算15+30,细节需要注意。
5.JavaDoc命令
javadoc命令可以用来生成自己的API文档,其中包括的参数信息如下: @author 作者
@version 版本号
@since 指明最早用的jdk版本
@param 参数名
@return 返回值
@throws 异常情况
在使用javadoc命令时,可以在cmd输入:
javadoc -encoding UTF-8 -charset UTF-8
这样可以在生成的API文档中,可以避免因为编码问题出现的中文乱码。
6.Scanner类 部分细节
Scanner类属于IO流,应当在每次使用完后关闭掉,具体方法如下:
Scanner scanner =new Scanner(System.in);//调用
scanner.close();//关闭
如果不关闭,会一直占用资源。
Scanner.hasNext 方法,判断是否有下一个输入。
scanner.hasNextInt 是否有下一个整数