• 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)
    

    关键代码

  • 相关阅读:
    怎么查看当前进程?怎么执行退出?怎么查看当前路径?
    简述正则表达式及其用途?
    Java 中,抽象类与接口之间有什么不同?
    哪个命令专门用来查看后台任务?
    什么是线程池?有哪几种创建方式?
    什么是多线程的上下文切换?
    WebApplicationContext?
    synchronized、volatile、CAS 比较?
    使用 Spring 有哪些方式?
    线程池的优点?
  • 原文地址:https://www.cnblogs.com/wxy1459995649/p/15322407.html
Copyright © 2020-2023  润新知