20165315 第六周学习总结
本周学习中遇到的问题和解决过程
- 在编写第八章例子7时,编译正常,但运行时出现如下问题:
解决过程:
经过多次尝试,我发现在我的电脑系统下,一个汉字是占3个字节的,故不能完全照抄书上代码,修改后即可运行出正确结果:
- 在编写第八章例子21时,出现如下问题:
解决过程:
在命令行中是可以实现的
询问了许多同学,还没有找到在IDEA中实现的解决方法,找到后会补上这部分
- 在编写第十五章例子11时,运行没有问题,出现如下窗口:
但是输入需要录入的数据后,点击“录入”后没有反应,在目录中找到了名为“库存”的文本文件,点开后却是如下内容:
解决过程:
- 在编写第十五章例子8例子9时,编译时出现如下问题:
解决过程:
因为在编写第十五章例子4时使用了Student
类,故将这两个例子中的Student
类改成Student1
和Student2
就行了
学习总结
第八章
String
类- Java专门提供了用来处理字符序列的
String
类 String
类在java.lang
包中,由于java.lang
包中的类被默认引入,因此程序可以直接使用String
类- 需要注意的是Java把
String
类声明为final
类,因此用户不能扩展String
类,即String
类不可以有子类
- Java专门提供了用来处理字符序列的
- 构造
String
对象- 常量对象
- 字符串常量对象是用双引号括起的字符序列
- 常量池:常量池中的数据在程序运行期间再也不允许改变
String
对象- 可以使用
String
类声明对象并创建对象 - 用户无法输出
String
对象的引用 - 可以用一个已创建的
String
对象创建另一个String
对象 - 两个较常用的构造方法
String (char a[])
用一个字符数组a创建一个String
对象String(char a[],int startIndex,int count)
提取字符数组a中的一部分字符创建一个String
对象,参数startIndex
和count
分别指定在a中提取字符的起始位置和从该位置开始截取的字符个数
- 引用
String
常量String
常量是对象,因此可以把String
常量的引用赋值给一个String
对象
- 可以使用
- 常量对象
- 字符串的并置
String
对象可以用+
进行并置运算,即首尾相接得到一个新的String
对象- 如果是两个常量进行并置运算,那么得到的仍然是常量,如果常量池没有这个常量就放入常量池
String
类的常用方法public int length()
:获取一个字符串的长度public boolean equals(String s)
:判断当前String
对象的字符序列是否与参数s指定的String
对象的字符序列相同public boolean startsWith(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的字符序列的位置,并返回该位置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)
可以将由“数字”字符组成的字符串,转化为int型数据
- 使用java.lang包中的Byte、Short、Long、Float、Double类调相应的类方法可以将由"数字"字符组成的字符串,转化为相应的基本数据类型
- 可以使用
String
类的类方法public static String valueOf(n的类型, n)
,将相应数值转化为字符串
- Java.lang包中的Integer类调用其类方法:
- 对象的字符串表示
- 一个对象通过调用
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对象的字符序列存放到字节数组,并返回数组的引用
- 字符串的加密算法
char [] p = password.toCharArray();
- 字符串与字符数组
- StringTokenizer类
- 两个常用的构造方法:
StringTokenizer(String s)
:为String对象s构造一个分析器。使用默认的分隔标记,即空格符、换行符、回车符、Tab符、进纸符做分隔标记StringTokenizer(String s, String delim)
:为String对象s构造一个分析器。参数delim的字符序列中的字符的任意排列被作为分隔标记
StringTokenizer
对象称作一个字符串分析器可以使用下列方法:nextToken()
:逐个获取字符串中的语言符号(单词),字符串分析器中的负责计数的变量的值就自动减一hasMoreTokens()
:只要字符串中还有语言符号,即计数变量的值大于0,该方法就返回true,否则返回falsecountTokens()
:得到分析器中计数变量的值
- 两个常用的构造方法:
Scanner
类- 使用Scanner类从字符串中解析程序所需要的数据
StringBuffer
类StringBuffer
类的对象的实体的内存空间可以自动地改变大小,便于存放一个可变的字符序列- 常用方法
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 )
:得到参数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指定的字符串替换
Date
与Calendar
类- Date类
- Date类在java.util包中
- Date类的构造方法之一:
Date nowTime=new Date();
- Calendar类
- Calendar类在java.util包中
- 使用Calendar类的static方法 getInstance()可以初始化一个日历对象:
Calendar calendar= Calendar.getInstance();
- Date类
Class
类与Console
类- Class类
- 使用Class的类方法得到一个和某类(参数className指定的类)相关的Class 对象,
public static Class forName(String className) throws ClassNotFoundException
方法返回一个和参数className指定的类相关的Class对象。如果类在某个包中,className必须带有包名
- 上述步骤中获得的Class对象调用
public Object newInstance() throws Exception
,方法就可以得到一个className类的对象
要特别注意的是:使用Class对象调用newInstance()实例化一个className类的对象时,className类必须有无参数的构造方法
- 使用Class的类方法得到一个和某类(参数className指定的类)相关的Class 对象,
Console
类Console cons = System.console();
- Class类
Pattern
与Matcher
类- Java提供了专门用来进行模式匹配的Pattern类和Matcher类,这些类在java.util.regex包中
- 建立模式对象
- 使用正则表达式regex做参数得到一个称为模式的Pattern类的实例pattern
- 模式对象是对正则表达式的封装。Pattern类调用类方法compile(String regex)返回一个模式对象,其中的参数regex是一个正则表达式,称为模式对象使用的模式
- 得到匹配对象
- 模式对象pattern调用matcher(CharSequence input)方法返回一个Matcher对象matcher,称为匹配对象
第十五章
- 泛型
- 主要目的是可以建立具有类型安全的集合框架,如链表、散列映射等数据结构
- 泛型类声明
- 可以使用
class 名称<泛型列表>
声明一个类,为了和普通的类有所区别,这样声明的类称作泛型类,没有指定E是何种类型的数据,它可以是任何对象或接口,但不能是基本类型数据
- 可以使用
- 使用泛型类声明对象
- 泛型类声明和创建对象时,类名后多了一对“<>”,而且必须要用具体的类型替换“<>”中的泛型
- 链表
- 链表是由若干个称作节点的对象组成的一种数据结构,每个节点含有一个数据和下一个节点的引用
LinkedList<E>
泛型类- LinkedList
- 常用方法
- LinkedList
- LinkedList
- 遍历链表
- 当用户需要遍历集合中的对象时,应当使用该集合提供的迭代器,而不是让集合本身来遍历其中的对象
- 链表对象可以使用
iterator()
方法获取一个Iterator对象,该对象就是针对当前链表的迭代器
- 排序与查找
Collections
类提供的用于排序和查找的类方法如下:public static sort(List<E> list)
: 该方法可以将list中的元素升序排列int binarySearch(List<T> list, T key,CompareTo<T> c)
: 使用折半法查找list是否含有和参数key相等的元素,如果key链表中某个元素相等,方法返回和key相等的元素在链表中的索引位置(链表的索引位置从0考试),否则返回-1
- 洗牌与旋转
Collections
类还提供了将链表中的数据重新随机排列的类方法以及旋转链表中数据的类方法public static void shuffle(List<E> list)
将list中的数据按洗牌算法重新随机排列static void rotate(List<E> list, int distance)
旋转链表中的数据public static void reverse(List<E> list)
翻转list中的数据
- 堆栈
- 堆栈是一种“后进先出”的数据结构,只能在一端进行输入或输出数据的操作
- Stack
- 散列映射
- HashMap
- 树集
TreeSet<E>
泛型类- TreeSet
TreeSet<String> mytree=new TreeSe<String>();
mytree.add("boy");
使用add方法为树集添加节点
TreeSet
类的常用方法public boolean add(E o)
向树集添加加节点public void clear()
删除树集中的所有节点public void contains(Object o)
如果树集中有包含参数指定的对象,该方法返回true,否则返回falsepublic E first()
返回树集中的第一个节点中的数据(最小的节点)public E last()
返回最后一个节点中的数据(最大的节点)public isEmpty()
判断是否是空树集,如果树集不含任何节点,该方法返回truepublic boolean remove(Object o)
删除树集中的存储参数指定的对象的最小节点public int size()
返回树集中节点的数目
码云链接
https://gitee.com/BESTI-IS-JAVA-2018/ch1/tree/master
代码截图
原文地址:https://www.cnblogs.com/yh666/p/8745979.html