20165318 2017-2018-2 《Java程序设计》第六周学习总结

20165318 2017-2018-2 《Java程序设计》第六周学习总结

教材内容学习总结

第八章 常用实用类

1、String类
  • String类用来处理字符序列,在java.lang包中,程序可以直接使用String类。需要注意的是Java把String类声明为final类,因此用户不能扩展String类,即String类不可以有子类。

常量对象:字符串常量对象是用双引号括起的字符序列,例如:"你好"、"12.97"、"boy"等。String常量被放在常量池中。

String对象:可以使用String类声明对象并创建对象,例如:

String  s = new String("we are students");

:用户无法输出String对象的引用:

Syste.out.println(s);

输出的是对象的实体。

String的两个较常用的构造方法

  • String (char a[])用一个字符数组a创建一个String对象。
  • String(char a[],int startIndex,int count) 提取字符数组a中的一部分字符创建一个String对象,参数startIndex和count分别指定在a中提取字符的起始位置和从该位置开始截取的字符个数。

字符串的并置

String对象可以用“+”进行并置运算,即首尾相接得到一个新的String对象。

  • 如果是两个常量进行并置运算,那么得到的仍然是常量,如果常量池没有这个常量就放入常量池。
  • 参与并置运算的String对象,只要有一个是变量,那么Java就会在动态区存放所得到的新String对象的实体和引用。

String类的常用方法

  • public int length():获取一个字符串的长度
  • public boolean equals(String s):判断当前String对象的字符序列是否与参数s指定的String对象的字符序列相同
  • public boolean startsWith(String s):

    判断当前String对象的字符序列前缀是否是参数指定的String对象s的字符序列

  • public boolean endsWith(String s):

    判断当前String对象的字符序列后缀是否是参数指定的String对象s的字符序列

  • public int compareTo(String s):按字典序与参数s指定的字符序列比较大小。
  • public boolean contains(String s):String对象调用contains方法判断当前String对象的字符序列是否包含参数s的字符序列
  • public int indexOf (String str):String对象调用方法从当前String对象的字符序列的0索引位置开始检索首次出现str的字符序列的位置,并返回该位置。如果没有检索到,该方法返回的值是–1。
  • public int lastIndexOf(String s):从当前String对象的字符序列的0索引位置开始检索最后一次出现str的字符序列的位置,并返回该位置。如果没有检索到,该方法返回的值是-1。
  • public String substring(int startpoint):字符串对象调用该方法获得一个新的String对象,新的String对象的字符序列是复制当前String对象的字符序列中的startpoint位置至最后位置上的字符所得到的字符序列。String对象调用substring(int start ,int end)方法获得一个新的String对象,新的String对象的字符序列是复制当前String对象的字符序列中的start位置至end–1位置上的字符所得到的字符序列。
  • public String trim() :得到一个新的String对象,这个新的String对象的字符序列是当前String对象的字符序列去掉前后空格后的字符序列。

字符串与基本数据的相互转化

Java.lang包中的Integer类调用其类方法:

public static int parseInt(String s)可以将由“数字”字符组成的字符串。

public static byte parseByte(String s) throws NumberFormatException
public static short parseShort(String s) throws NumberFormatException
public static long parseLong(String s) throws NumberFormatException
public static float parseFloat(String s) throws NumberFormatException
public static double parseDouble(String s) throws NumberFormatException 

可以使用String 类的类方法将数值转化为String对象:

public static String valueOf(byte n)
public static String valueOf(int n)
public static String valueOf(long n)
public static String valueOf(float n)
public static String valueOf(double n)

对象的字符串表示

Object类有一个public String toString()

方法,一个对象通过调用该方法可以获得该对象的字符序列表示。一个对象调用toString()方法返回的String对象的字符序列的一般形式为:

创建对象的类的名字@对象的引用的字符串表示

字符串与字符数组

  • String 类的构造方法:

    String(char[])

    String(char[],int offset,int length):分别用字符数组中的全部字符和部分字符创建字符串对象

  • 将String对象的字符序列存放到数组中的方法:

    public void getChars(int start,int end,char c[],int offset ):将String对象的部分字符序列存放到数组中。

    public char[] toCharArray():将String对象的全部字符序列存放到数组中。

字符串与字节数组

  • 构造方法

    String(byte[]):用指定的字节数组构造一个字符串对象。

    String(byte[],int offset,int length):用指定的字节数组的一部分,即从数组起始位置offset开始取length个字节构造一个字符串对象。

  • 相关方法:

    public byte[] getBytes():使用平台默认的字符编码,将当前String对象的字符序列存放到字节数组,并返回数组的引用。

    public byte[] getBytes(String charsetName):使用参数指定字符编码,将当前String对象的字符序列存放到字节数组,并返回数组的引用。

正则表达式

  • 正则表达式是一个String对象的字符序列,该字符序列中含有具有特殊意义字符,这些特殊字符称做正则表达式中的元字符。
  • String对象调用public boolean matches(String regex)方法可以判断当前String对象的字符序列是否和参数regex指定的正则表达式匹配。

2、StringTokenizer类

使用StringTokenizer对象分解String对象的字符序列

两个常用构造方法

  • StringTokenizer(String s):为String对象s构造一个分析器,使用默认的分隔标记,即空格符,换行符,回车符,tab符,进纸符做分割标记
  • StringTokenizer(Strings,String delim):为String对象s构造一个分析器,参数delim的字符序列中的字符的任意排列被作为分隔标记

StringTokenizer对象称作一个字符串分析器可以使用下列方法

  • nextToken():逐个获取字符串中的语言符号(单词),字符串分析器中的负责计数的变量的值就自动减一 。
  • hasMoreTokens():只要字符串中还有语言符号,即计数变量的值大于0,该方法就返回true,否则返回false。
  • countTokens():得到分析器中计数变量的值
3、Scanner类

使用Scanner类从字符串中解析程序所需要的数据。

Scanner对象:可以解析字符序列中的单词

scanner将空格做为分隔标记来解析字符序列中的单词,具体解析操作

  • Sanner对象调用next()方法依次返回被解析的字符序列中的单词,如果最后一个单词已被next()方法返回,Scanner对象调用hasNext()将返回false,否则返回ture
  • 对于被解析的字符序列中的数字型单词,Scanner对象可以用nextInt()或nextDouble()方法来代替next()方法
  • 如果单词不是数字型单词,Scanner对象调用nextInt()或nextDouble()方法将数字型单词转化为int或double数据返回
  • 如果单词不是数字型单词,Scanner对象调用nextInt()或nextDOuble()方法将发生InputMismatchException异常,在处理异常时可以调用next()方法返回非数字化单词。

使用正则表达式作为分隔标记解析字符串

Scanner对象可以调用 useDelimiter(正则表达式); 方法将一个正则表达式作为分隔标记,即和正则表达式匹配的字符串都是分隔标记。

4、StringBuffer类

三个构造方法

  • StringBuffer()
  • StringBuffer(int size)
  • StringBuffer(String s)

StringBuffer类的常用方法:

  • append方法

StringBuffer append(String s):将String对象s的字符序列追加到当前StringBuffer对象的字符序列中,并返回当前StringBuffer对象的引用

StringBuffer append(int n):将int型数据n转化为String对象,再把该String对象的字符序列追加到当前StringBuffer对象的字符序列中,并返回当前StringBuffer对象的引用

StringBuffer append(Object o):将一个Object对象o的字符序列表示追加到当前String- Buffer对象的字符序列中,并返回当前StringBuffer对象的引用

  • public chat charAt(int n)和public void setCharAt(int n ,char ch)

public chat charAt(int n ):得到参数n指定的置上的单个字符

public void setCharAt(int n ,char ch):将当前StringBuffer对象实体中的字符串位置n处的字符用参数ch指定的字符替换

  • StringBuffer insert(int index, String str) :将参数str指定的字符串插入到参数index指定的位置
  • public StringBuffer reverse() :将该对象实体中的字符翻转
  • StringBuffer delete(int startIndex, int endIndex):从当前StringBuffer对象实体中的字符串中删除一个子字符串
  • StringBuffer replace(int startIndex,int endIndex,String str):将当前StringBuffer对象实体中的字符串的一个子字符串用参数str指定的字符串替换
5、Date与Calendar类

Date类

  • Date类的构造方法一:Date()使用Date类的无参数构造方法创建的对象可以获取本地当前时间
  • Date类的构造方法二:Date(long time)使用long型参数创建指定的时间

    计算机系统将其自身的时间的“公元”设置在1970年1月1日0时(格林威治时间),可以根据这个时间使用Date的带参数的构造方法:Date(long time)来创建一个Date对象。

Calendar类

  • 使用Calendar类的static方法 getInstance()可以初始化一个日历对象。
  • calendar对象可以调用方法:
    public final void set(int year,int month,int date)
    public final void set(int year,int month,int date,int hour,int minute)
    public final void set(int year,int month, int date, int hour, int minute,int second)

    其作用是将日历翻到任何一个时间。

6、Math、BigInteger和Random类

Math类

  • Math类在java.lang包中。Math类包含许多用来进行科学计算的类方法,这些方法可以直接通过类名调用。另外,Math类还有两个静态常量,它们分别是:

    E 2.7182828284590452354PI 3.14159265358979323846

  • Math类的常用类方法:

    public static long abs(double a) 返回a的绝对值。

    public static double max(double a,double b) 返回a、b的最大值。

    public static double random() 产生一个0到1之间的随机数(不包括0和1)。

    public static double pow(double a,double b) 返回a的b次幂。

    public static double sqrt(double a) 返回a的平方根。

    public static double log(double a) 返回a的对数。

    public static double sin(double a) 返回正弦值。

    public static double asin(double a)返回反正弦值。

BigInteger类

  • java.math包中的BigInteger类提供任意精度的整数运算。可以使用构造方法:

    public BigInteger(String val) 构造一个十进制的BigInteger对象。

  • BigInteger类的常用类方法:

public BigInteger add(BigInteger val) 返回当前大整数对象与参数指定的大整数对象的和。

public BigInteger subtract(BigInteger val)返回当前大整数对象与参数指定的大整数对象的差。

public BigInteger multiply(BigInteger val)返回当前大整数对象与参数指定的大整数对象的积。

public BigInteger divide(BigInteger val)返回当前大整数对象与参数指定的大整数对象的商。

public BigInteger remainder(BigInteger val)返回当前大整数对象与参数指定的大整数对象的余。

public int compareTo(BigInteger val) 返回当前大整数对象与参数指定的大整数的比较结果,返回值是1、-1或0,分别表示当前大整数对象大于、小于或等于参数指定的大整数。

public BigInteger pow(int a) 返回当前大整数对象的a次幂。

public String toString() 返回当前大整数对象十进制的字符串表示。

public String toString(int p) 返回当前大整数对象p进制的字符串表示。

Random类

用于获得随机数

  • Random类的如下构造方法:

public Random();

public Random(long seed);使用参数seek指定的种子创建一个Random对象

第十五章 泛型与集合框架

1、泛型

泛型(Generics),的主要目的是可以建立具有类型安全的集合框架,如链表、散列映射等数据结构。

泛型类的声明

  • 可以使用class 名称<泛型列表>声明一个类,为了和普通的类有所区别,这样声明的类称作泛型类,如:

    class People

使用泛型类声明对象

  • 泛型类声明和创建对象时,类名后多了一对“<>”,而且必须要用具体的类型替换“<>”中的泛型。例如:

       Cone<Circle> coneOne;
       coneOne =new Cone<Circle>(new Circle());
2、链表

链表是由若干个称作节点的对象组成的一种数据结构,每个节点含有一个数据和下一个节点的引用 。

LinkedList

LinkedList<String> mylist=new LinkedList<String>();创建一个空双链表。

add(E obj) 向链表依次增加节点。

LinkedList

  • public boolean add(E element) 向链表末尾添加一个新的节点,该节点中的数据是参数elememt指定的数据。
  • public void add(int index ,E element) 向链表的指定位置添加一个新的节点,该节点中的数据是参数elememt指定的数据。
  • public void clear() 删除链表的所有节点,使当前链表成为空链表。
  • public E remove(int index) 删除指定位置上的节点。
  • public boolean remove(E element) 删除首次出现含有数据elemen的节点。
  • public E get(int index) 得到链表中指定位置处节点中的数据。

LinkedList

  • public void addFirst(E element) 向链表的头添加新节点,该节点中的数据是参数elememt指定的数据。
  • public void addLast(E element) 向链表的末尾添加新节点,该节点中的数据是参数elememt指定的数据。
  • public E getFirst() 得到链表中第一个节点中的数据。
  • public E getLast() 得到链表中最后一个节点中的数据。
  • public E removeFirst() 删除第一个节点,并返回这个节点中的数据。

Collections类

Collections类提供的用于排序和查找的类方法如下:

  • public static sort(List<E> list) 该方法可以将list中的元素升序排列。
  • int binarySearch(List<T> list, T key,CompareTo<T> c) 使用折半法查找list是否含有和参数key相等的元素,如果key链表中某个元素相等,方法返回和key相等的元素在链表中的索引位置(链表的索引位置从0考试),否则返回-1。
  • public static void shuffle(List<E> list) 将list中的数据按洗牌算法重新随机排列。
  • static void rotate(List<E> list, int distance) 旋转链表中的数据。
  • public static void reverse(List<E> list)翻转list中的数据
3、堆栈

堆栈是一种“后进先出”的数据结构,只能在一端进行输入或输出数据的操作。

Stack

  • public E push(E item):实现压栈操作
  • public E pop():实现弹栈操作。
  • public boolean empty():判断堆栈是否还有数据。
  • public E peek():获取堆栈顶端的数据,但不删除该数据。
  • public int search(Object data):获取数据在堆栈中的位置
4、散列映射

HashMap

HashMap

常用方法

  • public void clear() 清空散列映射。
  • public Object clone() 返回当前散列映射的一个克隆。
  • public boolean containsKey(Object key) 如果散列映射有“键/值”对使用了参数指定的键,方法返回true,否则返回false。
  • public boolean containsValue(Object value) 如果散列映射有“键/值”对的值是参数指定的值。
  • public V get(Object key) 返回散列映射中使用key做键的“键/值”对中的值。
  • public boolean isEmpty() 如果散列映射不含任何“键/值”对,方法返回true,否则返回false。
  • public V remove(Object key) 删除散列映射中键为参数指定的“键/值”对,并返回键对应的值。
  • public int size() 返回散列映射的大小,即散列映射中“键/值”对的数目。

遍历散列映射

public Collection<V> values()方法返回一个实现Collection

5、树集

TreeSet:TreeSet

TreeSet类的常用方法

  • public boolean add(E o) 向树集添加加节点。
  • public void clear() 删除树集中的所有节点。
  • public void contains(Object o) 如果树集中有包含参数指定的对象,该方法返回true,否则返回false 。
  • public E first() 返回树集中的第一个节点中的数据(最小的节点)。
  • public E last() 返回最后一个节点中的数据(最大的节点)。
  • public isEmpty() 判断是否是空树集,如果树集不含任何节点,该方法返回true 。
  • public boolean remove(Object o) 删除树集中的存储参数指定的对象的最小节点。
  • public int size() 返回树集中节点
6、树映射
  • TreeMap
  • 树映射使用public V put(K key,V value);方法添加节点。

代码调试中的问题和解决过程

  • 问题1:在编译运行Example8_7时,运行出的结果有问题,截图如下

  • 解决过程:仔细检查过代码,发现没有编写问题,查看运行结果,结果中显示字符串的字节长度是10,与GB2312编码的8不同,我猜想是UTF-8中汉字的字节长度与GB2312不同,我计算出UTF-8中汉字的字节长度为3,根据这个改正代码后,能够正常运行。运行结果如下:由此可以得到结论:GB2312中汉字字节长度为2,UTF-8中汉字的字节长度为3

  • 问题2:编译Example15_8时提示:Exception in thread "main" java.lang.NoSuchMethodError:Student。
  • 解决过程:提示有同类名的类在同一个包或工程中,改变Example15_8和Example15_9中同名的Student类,并保存,就可以正常运行。

码云链接:

https://gitee.com/besti-is-java-2018/20165318_sun_xiaoxuan

代码托管:

原文地址:https://www.cnblogs.com/sunxiaoxuan/p/8734062.html

时间: 2024-10-11 00:56:43

20165318 2017-2018-2 《Java程序设计》第六周学习总结的相关文章

20165318 2017-2018-2 《Java程序设计》第一周学习总结

20165318 2017-2018-2 <Java程序设计>第一周学习总结 教材内容学习总结 第一章主要对Java平台进行了简单的介绍,并讲解了如何搭建Java环境. Java平台概论 通过课本,测验,查询资料我了解到Java的有关内容如下: Java历史 1990年Sun公司成立了有James Gosling领导的开发小组,开始正致力于开发一种可移植的.跨平台的语言,该语言能生成正确运行于各种操作系统及各种CPU芯片上的代码.1995年5月Sun公司推出的Java Development

20165318 2017-2018-2 《Java程序设计》第九周学习总结

20165318 2017-2018-2 <Java程序设计>第九周学习总结 目录 学习过程遇到的问题及总结 教材学习内容总结 第13章 Java网络编程 代码托管 代码统计 学习过程遇到的问题及总结 Q1:运行课本例子4时,代码中为汉字,但同样的输出的字符为乱码. 解决方法:检查后发现,使用的编码方式不一致,其他源文件使用的是GBK,而运行的Client4使用的是UTF-8,将这个源文件也改为GBK编码,就可以正确运行了. Q2:运行课本例子4后又运行例子3时,提示以下问题. 解决方法:我猜

20145311 《Java程序设计》第九周学习总结

20145311 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 16.1JDBC 16.1.1JDBC简介 JDBC(Java DataBase Connectivity)是用于执行SQL的解决方案,开发人员使用JDBC的标准接口,数据库厂商则对接口进行操作,开发人员无须接触底层数据库驱动程序的差异性. 厂商在操作JDBC驱动程序时,依方式可将驱动程序分为4种类型: ·Type 1:JDBC-ODBC Bridge Driver·Type 2:Native API

20165203 2017-2018-2 《Java程序设计》第一周学习总结

20165203 2017-2018-2<Java程序设计>第一周学习总结 教材学习内容总结 (一)Java的地位 Java是面向对象编程,并涉及网络.多线程等重要的基础知识,是一门很好的面向对象的语言. (二)Java的特点 简单 面向对象 平台无关 多线程 动态 (三)Java三大平台 Java SE Java EE Java ME (四)Java SE的四个组成部分 JVM: Java虚拟机,包含在JRE中 JRE:Java执行环境,运行Java程序必需 JDK: 包括JRK及开发过程中

20165208 2017-2018-2 《Java程序设计》第九周学习总结

20165208 2017-2018-2 <Java程序设计>第九周学习总结 教材学习内容总结 第十三章 URL类 URL对象包含三部分信息:协议.地址和资源 创建URL对象两种方法: public URL (String spec) throws MalformedURLException public URL(String protocol,String host,String file) throws MalformedURLException 使用字符串初始化一个URL对象URL ur

20165235 祁瑛 2018-4 《Java程序设计》第九周学习总结

20165235 祁瑛 2018-4 <Java程序设计>第九周学习总结 教材学习内容总结 URL类 UR类是java.net包中的一个重要类,使用URL创建的对象的应用程序称作称作客户端程序. 一个URL类用如下的构造方法来创建一个类: public URL(String spec) throws MalformedURLException URL创建的对象是http协议,所包含的资源是默认的资源(主页) URL对象可以通过调用InputStream openStream()方法可以返回一个

20155336 2016-2017-2《JAVA程序设计》第二周学习总结

20155336 2016-2017-2 <JAVA 程序设计>第二周学习总结 教材学习内容 1: GIT版本检测 2: JAVA中基本类型 整数 字节 浮点数 字符 布尔(▲) 通过API可以得知各个类型可存储的数值范围 public class Range {public static void main(String[] args){ //byte.short.int.long的范围 System.out.printf("%d~%d%n", Byte.MIN_VALU

20145201 《Java程序设计》第一周学习总结

# 20145201 <Java程序设计>第一周学习总结 ## 教材学习内容总结 万事开头难,终于开始学习了Java.寒假的时候看到老师的要求确实有点慌,但是这周翻开书,从书本知识第一行学起,发现并不是自己想想中那么难,只要一步一个脚印,每周有自己的计划,并按照计划按部就班的完成,最后一定会拥有自己的小成果的. 1.1Java不只是语言 Java经过多年的版本更新后,最新的版本是Java SE8. 在java发展的过程中,它的应用领域越来越广,根据不同级别的应用开发区分了不同的应用版本,最终j

20145326蔡馨熠《Java程序设计》第一周学习总结

20145326蔡馨熠 <Java程序设计>第一周学习总结 教材学习内容总结 转眼间新的一学期终于开始了!为什么我这么期待呢?因为这学期可以上娄嘉鹏老师的java程序设计课,我不是什么电脑天才,之前c语言学得也不是特别好.可我就是对hdl和java特别感兴趣(之前在我的问卷调查报告里面提到过),并且寒假的时候在家里也预习了一部分java知识.第一周要求学习两个章节并作心得体会,虽然我早已看过前两章的知识,不过为了进一步巩固,我还是用了星期六一天的时间把第一章和第二章的知识从头到尾仔仔细细的看了

20145224-陈颢文 《Java程序设计》第一周学习总结

20145224 <Java程序设计>第一周学习总结 教材学习内容总结 通过第一周的学习让我对Java有了个初步的了解,知道了Java分为Java SE.Java EE.Java ME三大平台,其中Java SE是基础.Java的一大特点是它可以跨平台,而JVM对Java的跨平台提供了支持,它就类似于一个虚拟机,只要在当前平台安装了相应的JVM,Java程序就有了可以在此平台上运行的基础啦.JRE是Java的执行环境,在安装了JRE的计算机上就可以运行Java的程序了,当然光是可以跑代码对于程