Java基本语法与类库

实验目标

1.掌握Git的基本概念与基本操作。
2.进一步熟悉Scanner的使用。
3.熟练掌握Eclipse常用快捷键
4.掌握常用类(String、Integer、StringBuilder等)及JDK文档的基本使用
5.掌握数组与ArrayList

2.PTA

2.1综合小测验

对于控制台输入的处理,nextLine()方法与其他nextXXX方法混用会产生吞回车问题。建议全部使用Scanner.nextLine()处理输入以免碰到行尾回车换行问题。

注意:

  • 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.Integer.parseInt()将String字符类型数据转换为Integer整型数据

2.Arrays.sort()将传入的数组按从小到大进行排序

3.Arrays.toString():使用System.out.println(数组命名称)得到的结果是地址。
如果想直接把数组中的内容打印出来,直接调用Arrays类中的toString()方法就可以完成

4.bir.substring(begin,end):begin为开始截取的位置 end-begin=截取子串的位数

2.2身份证排序

注意:

  • sort1可直接使用Arrays.sort,String的subString。
  • 采用结构化编程方式,针对sort1、sort2各写一个方法处理。
  • 其他:nextInt()与nextLine()混用可能产生的后果。建议:全部使用Scanner的nextLine()处理输入以免碰到行尾回车换行问题。

关键代码:

contains () 方法用于判断字符串中是否包含指定的字符或字符串

2.3StringBuilder

使用+进行字符串拼接的弊端:

字符串拼接过程中会创建新的对象,所以如果要在一个循环体中进行字符串拼接,就要考虑内存问题和效率问题。而在循环中使用+进行字符串拼接,每次都是new了一个StringBuilder,然后再把String转成StringBuilder,再进行append。这样频繁的新建对象不仅仅会耗费时间,还会造成内存资源的浪费。
因此,直接使用StringBuilder的方式是效率最高的。StringBuilder天生就是设计来定义可变字符串和字符串的变化操作的。

关键代码:

1.StringBuilder str=new StringBuilder(""):当对字符串多次进行修改的时候,需要使用StringBuilder类

2.str.append(i):追加的字符串生成器

2.4动态数组

注意:

动态生成不规则大小的数组。定义数组时数组第一维需事先确定大小,第二维大小可在程序运行中动态确定。

关键代码:

1.String[][] arr=new String[n][]:二维数组;有n行的字符串数组

2.arr[i]=new String[i+1]:设置一行的字符串个数;符合乘法表格式,每行字符串个数递增

3.System.out.printf("%-7s",arr[i][j]):用“%-7s”控制字符串占七个字符位,负号表示左对齐

比较printf,print,println:
print输出后不换行;println输出后换行;printf格式化输出

4.Arrays.deepToString():将数组中的元素放在[]中,相邻元素间以逗号隔开

2.5ArrayList入门

注意:

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));
        }
    }
}


定义了一个对象list,创建一个String集合,这个集合里只能放String类型的

List和ArrayList:

List是集合最大的父类,它包含了ArrayList。

如果直接声明为ArrayList list=new ArrayList()这个也没有问题。而声明成:List list=new ArrayList()使得list这个对象可以有多种的存在形式

List是一个接口,而ListArray是一个类。

ListArray继承并实现了List。所以List不能被构造,但可以为List创建一个引用,而ListArray就可以被构造。

List list; //正确 list=null;
List list=new List(); // 是错误的用法
List list = new ArrayList();这句创建了一个ArrayList的对象后把上溯到了List。此时它是一个List对象了,有些ArrayList有但是List没有的属性和方法,它就不能再用了。

import java.util.Iterator;//迭代器

  • 迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象

  • 使用方法iterator()要求容器返回一个Iterator。第一次调用Iterator的next()方法时,它返回序列的第一个元素。

  • 使用next()获得序列中的下一个元素。

  • 使用hasNext()检查序列中是否还有元素。

  • 使用remove()将迭代器新返回的元素删除。

2.6浮点数的精确运算

  • BigDecimal对象的构造(以字符串的方式构造)

    最好使用String来创建BigDecimal对象,更精确

  • 熟悉以面向对象的方式进行各种操作(加减乘除)。

    加减乘除运算需要调用方法:
    加add,减subtract,乘multiply,除divide

  • BigDecimal的不可变性,如何体现?

    BigDecimal是一个不可变类,每个操做(加减乘除等)都会返回一个新的对象

eg:
BigDecimal a=new BigDecimal("1.3");
BigDecimal b=new BigDecimal("2.5");
a.add(b);
System.out.println(a);

我们很容易会认为输出的是3.8,而实际上输出的是1.3
由于BigDecimal是不可变的,在进行每一步运算时,都会产生一个新的对象,因此a.add(b)虽然作了加法操做,可是a并无保存加操做后的值,正确的用法应该是a=a.add(b)

关键代码

posted @ 2021-09-23 21:55  耶斯莫拉  阅读(56)  评论(0编辑  收藏  举报