一、学习笔记:
Java三大版本
- JavaSE
- JavaEE(完全包含JavaSE)
- JavaME(逐渐消亡)
Java的特性和优势:
- 跨平台/可移植性
- 安全性
- 面向对象
- 简单性
- 高性能
- 分布式
- 多线程
- 健壮性
Java的大小写敏感
一个文件只能有一个公共类,且必须和文件名一致
缩窄类型必须显式完成
方法中声明的变量必须在使用前被赋值。
行尾风格
源代码中,字符串常量不能跨行
JOptionPane的正确写法
showInputDialog(x);
showConfirmDialog(null,x); 返回0,1,2
showMessageDialog(null,x);用关键字final声明定名常量
System.out.println(“1”+ 1 + 1); 输出:111
System.out.println(’1’+ 1 + 1); 输出:51(字符型char数据与数据型数据之间的转换)
System.out.println(1 + 1 +“1”); 输出:21print(空白符),println(回车),printf(格式化输出)
System.currentTimeMillis()返回…的毫秒数
二元运算符的两边应该各加一个空格(良好的代码风格)
Math.random()返回一个双精度的随机值,范围:0.0 <= d < 1.0
递进式开发和测试
boolean值不能被转换成其他数据类型,且打印出来就是true和false(以%d形式打印不报错但是打印不出来)
泽勒一致性判断某天是星期几
多个数做乘法运算时最好将其中一个变量类型做提升以防发生溢出
可以在for循环内声明控制变量,但循环外不能引用它(C好像不可以)
【编程练习】使用蒙特卡罗模拟来估算PI
Java中的for-each循环(遍历数组元素):
for(elementType u:arrayRefVar){
System.out.println(u);
}
注意:变量u必须声明为与arrayRefVar中元素相同的数据类型数组大小和默认值:
数据型基本数据类型的默认值是0
char型的默认值是’/u0000’(Unicode - 16bit)
boolean型的默认值为false驼峰命名法(第一个单词首字母小写,其他单词首字母大写)
【百度面试题】float f = 3.4 是否正确
答: 不正确;
原因:精度不准确,在Java里面,没小数点的默认是int,有小数点的默认是double
修改:float f = (float)3.4 或者 float f = 3.4f
补充:编译器可以自动向上转型,如int转成long系统自动转换没问题,因为后者精度更高,但是double转成float就不能自动做了。
相似:[wrong]short s1 = 1;s1 = s1 + 1; [right]short s1 = 1;s1 += 1;
key:声明一个类型后,它的类型是不能变的,值可以转化。【百度面试题】switch能作用的类型
除long类型之外,byte、short、char、int或者其对应的封装类,enum、String类型都可以。【百度面试题】3 * 0.1 == 0.3 将会返回什么?true还是false?
答:false
原因:参考小数在内存中的存储方式对于char[]类型的数组,可以使用一条打印语句打印
【编程练习】随意打乱数组
list1 = list2;该语句并不能将list2引用的数组内容复制给list1,执行该语句后,list1和list2都指向同一个数组,list1原先所引用的数组不能再引用,它就变成了垃圾,会被java虚拟机自动回收
java中复制数组有3种方法:
a. 循环 b.使用System类中的静态方法arraycopy c.使用clone方法
例:System.arraycopy(sourceArray,src_pos,targetArray,tar_pos,length);
例:int[] list2 = list1.clone();带标签的continue 与 break
方法重载(方法名相同)
[true] 参数个数不同
[true] 参数类型不同
[true] 参数顺序不同
[false] 只有返回值不同
[false] 只有参数名称不同
调用方法时,Java编译器寻找最精确匹配的方法,参数顺序不同可能导致歧义调用。Math数学类
1 三角函数方法
2 指数函数方法
3 取整方法
4 min,max和abs方法
5 random方法借助System.currentTimeMillis()测试算法的时间复杂度
对带返回值的方法而言,return语句是必需的
对于基本数据类型参数,传递的是实参的值。
对于数组型参数,参数值是数组的引用,给方法传递的是这个引用。Arrays类:
java.util.Arrays.sort(数组名); (优化的快速排序算法)
java.util.Arrays.sort(数组名,起始位置,结束位置 - 1);
java.util.Arrays.binarySearch(数组名,key(关键字));可变长参数列表 (类型名… 参数名)
【编程练习】日历的打印(自顶向下的设计和自底向上的实现)
二、注释、
[字符串转化为数字] Integer - 整数
[字符串转化为数字] parse - (语法)分析
[输入]Scanner - 扫描仪
三、参考资料
《Java语言程序设计 基础篇》