1. PTA
1.1 综合小测验
对于控制台输入的处理,nextLine()方法与其他nextXXX方法混用会产生吞回车问题。
建议全部使用Scanner.nextLine()处理输入以免碰到行尾回车换行问题。
Scanner.nextLine()读取字符,再用Integer转化为整型
- Eclipse的使用技巧
Eclipse自动生成快捷键解Alt+,如switch、for、while、sysout、main。
使用Eclipse快速创建程序框架(利用Eclipse的quick fix功能快速创建方法)。
不要重复创建Scanner对象。
其他:缩进, Tab、Shift+Tab。运行, ctrl+F11。
注意:
如果JDK为1.6版本(最新版PTA已支持1.8),switch不支持字符串。需先将字将String转化为int(早期的PTA 中使用的open jdk6)
使用Eclipse的quick fix功能快速创建函数int choice2Int(String choice)
1.2 身份证排序
sort1可直接使用Arrays.sort进行排序,String的subString进行拼接
sort2可以使用contains,找到数据,按顺序输出。
采用结构化编程方式,针对sort1、sort2各写一个方法处理。
- 主要代码
1.3 StringBuilder
使用+进行字符串拼接的弊端
- 因为String是不可变的,使用+进行字符串拼接字符串,会产生新的字符串,而原来的字符串不会消失,会造成字符串常量池有很多无用的字符串。
- 在字符串常量在拼接过程中,是将 String 转成了 StringBuilder 后,使用其 append() 方法进行处理的。
- 在循环中需要字符拼接时,要用append() ,一定不要使用+。
1.4 动态数组
动态生成不规则大小的数组。定义数组时数组第一维需事先确定大小,第二维大小可在程序运行中动态确定。
定义二位数组时,一维时确定的,二维可以在程序中定义大小
1.5 ArrayList入门
ArrayList的常用方法add(e)、add(index, e)等
使用ArrayList可以代替数组,见如下代码,ArrayList用法请参考JDK文档。
import java.util.ArrayList;
import java.util.List;
public class ArrayListDemo {
public static void main(String[] args) {
//泛型,Integer
List<Integer> integerList = new ArrayList<>();
integerList.add(1);
integerList.add(new Integer(1));//和上句效果一样
for (Integer e : integerList) {
System.out.println(e);
}
//泛型,String
List<String> strList = new ArrayList<String>();
strList.add(1+"");
strList.add("abc");
strList.set(0, "def");//随机存取,设置0号位置的元素
for (int i = 0; i < strList.size(); i++) {//数值长度
System.out.println(strList.get(i));//获取元素
}
}
}
- ArrayList常用的方法
方法 | 作用 |
---|---|
add() | 将指定的元素插入此列表中的指定位置 |
size() | 返回此列表中的元素数 |
set() | 用指定的元素替代此列表中指定位置上的元素 |
get() | 返回此列表中指定位置上的元素 |
isEmpty() | 如果此列表中没有元素,则返回 true |
remove() | 移除此列表中指定位置上的元素 |
1.6 浮点数的精确运算
浮点数不精确,使用BigDecimal解决。
BigDecimal对象的构造(以字符串的方式构造)
熟悉以面向对象的方式进行各种操作(加减乘除)。
BigDecimal的不可变性,如何体现?
- 直接使用double类型数据进行运算,无法得到精确值。所以需要BigDecimal求取精确的结果
import java.math.BigDecimal;//插入类
BigDecimal a=new BigDecimal(A);//构造对象,这里a的类型建议优先使用String
a.add(b);//加法
a.subtract(b);//减法
a.multiply(b);//乘法
a.divide(b);//除法
- BigDecimal都是不可变的(immutable)的,在进行每一步运算时,都会产生一个新的对象,所以在做加减乘除运算时千万要保存操作后的值。