第七周Java学习总结

一.知识点摘要

1.String类(部分用法)

用字符数组value创建一个String对象 public String(char[] value)
用字符数组以x开始的n个字符创建一个String对象 public String(char chars[], int x, int n)
获取字符串长度 public int length()
获取字符串某一位置的字符 public char charAt(int index)
获取字符串的子串
public String substring(int beginIndex) //该方法从beginIndex位置起, //从当前字符串中取出剩余的字符作为一个新的字符串返回。

public String substring(int beginIndex, intendIndex)//该方法从beginIndex位置起,从当前字符串中//取出到endIndex-1位置的字符作为一个新的字符串返回

2.StringTokenizer类

StringTokenizer是一个用来分隔String的应用类
构造函数
public StringTokenizer(String str);public StringTokenizer(String str, String delim); public StringTokenizer(String str, String delim, boolean returnDelims)
核心方法
public boolean hasMoreTokens();public String nextToken();public String nextToken(String delim);public int countTokens()
多余方法
public boolean hasMoreElements();public boolean hasMoreElements()
这个类实现了Enumeration接口

3.Scanner类

Scanner类提供了多个方法,用于完成字符串的输入

4.StringBuffer类

添加 append(): append(可以添加多种类型 包括基本数据类型); 例如:String、int、double、Boolean等,都可以转变成字符串表示形式。
插入insert(): setCharAt(int index , char ch)方法 ,将索引处的字符修改为ch.
删除delete( , ): 移除此序列的字符串中的字符,该子字符串是从指定的索引start处开始,一直到索引end - 1处,如果end - 1超出最大索引范围则一直到序列尾部。
替换

private static void fun5() {
StringBuffer sb = new StringBuffer();
sb.append("wukong");
sb.replace(0, 4,"tian");
System.out.println(sb);
}
反转
把字符串反转 ;字符串 转到 StringBuffer ,StringBuffer转字符串
private static void fun7() {
String string = "wukong";
// 字符串--->字符串缓冲区
StringBuffer sb = new StringBuffer(string);
sb.reverse();
// 反转后转回字符串
string = sb.toString();
System.out.println(string);
}
5.Date类和Calender类

Date类是唯一的一个代表时间的类
使用Date类代表当前系统时间
Date date = new Date(); System.out.println(date);
 使用Date类的默认构造方法创建出来的对象就代表当前的时间,由于Date类覆盖了toString()方法。所以可以直接输出Date类型的对象,显示的结果如下:
 Sun Aug 28 10:23:06 CST 2016

使用Date类代表指定时间
 Date date = new Date(2016-1900,8-1,28); System.out.println(date);
 使用带参的构造方法,可以构造指定日期的Date类对象,Date类中年份的参数应该是实际需要代表的年份减去1900,实际需要代表的月份减去1以后的值。显示结果如下:
 Sun Aug 28 00:00:00 CST 2016 代表的日期就是2016年8月28号
 实际代表的年月日时分秒的日期对象和这个类似。

Calender类是一个抽象类,在实际使用时实现特定的子类的对象,创建对象的过程对程序员来说是透明的,只需要使用getInstance()方法创建即可。
使用Calendar类代表当前时间
  Calendar c = Calendar.getInstance(); System.out.println(c); //返回的是一个Calendar对象
  由于Calendar类是抽象类,且Calendar类的构造方法是protected的,所以无法使用Calendar类的构造方法来创建对象,API中提供了getInstance方法用来创建对象。使用该方法获得的Calendar对象就代表当前的系统时间,由于Calendar类toString实现的没有Date类那么直观,所以直接输出Calendar类的对象意义不大。

![](https://img2018.cnblogs.com/blog/1274162/201904/1274162-20190413115821843-44184304.png)

6.日期格式化
<模版字符串>.format(<逗号分割的参数>) format()方法中<模版字符串>的槽除了包括参数序号,还可以包括格式控制信息。此时,操的内部样式格式:{<参数序号>:<格式控制标记>}

7.Math类,BigInteger类,Random类

Math类
Math类在java.lang包中.
常用的方法有
Math.abs(double x)返回x的绝对值.
Math.max(double x,double y)返回x和y的较大者.
Math.pow(double x,double y)返回x的y次幂.
Math.sqrt(double x)返回x的平方根.
Math.log(double x)返回x的自然对数.
Math.asin(double x)返回x的反正弦值.

Math.random()返回0-1之间的随机数(不包含端点).
例如
int x = (int)(Math.random()*b)+a可以获取[a,b]之间的随机整数.

BigInteger类
BigInteger类在java.math包中.
①创建一个BigInteger类对象的方法如下
BigInteger bigInteger = new BigInteger(Strings);
其中s为数字字符串,如果s中含有非数字字符,则会出现异常.
②常用方法如下
bigInteger为一个BigInteger类对象
a. 加 bigInteger.add(BigInteger bi)方法:bigInteger与bi相加.
b. 减 bigInteger.subtract(BigInteger bi)方法:bigInteger减去bi.
c. 乘 bigInteger.multiply(BigInteger bi)方法:bigInteger与bi相乘.
d. 除 bigInteger.divide(BigInteger bi)方法:bigInteger除以bi.
e. 取余 bigInteger.remainder(BigInteger bi)方法:bigInteger除以bi的余数.
f. 绝对值 bigInteger.abs()方法:bigInteger的绝对值.
g. 乘方 bigInteger.pow(int n)方法:bigInteger的n次方
h. 字符串bigInteger.toString(int p)方法:将bigInteger转化为p进制,p可以缺省,缺省值为10.

Random类
用法如下
①获取[a,b]之间随机整数
Random r = new Random();
int x = r.nextInt(b+a+1)+a;
如int x = r.nextInt(21)-10;可以获取[-10,10]之间的随机整数.
②随机获取true/false
boolean b = r.nextBoolean();即可获取一个随机布尔值.

8.数字格式化

format方法

9.Class类和Console类

Class 类是在Java语言中定义一个特定类的实现。一个类的定义包含成员变量,成员方法,还有这个类实现的接口,以及这个类的父类。Class类的对象用于表示当前运行的 Java 应用程序中的类和接口。 比如:每个数组均属于一个 Class 类对象,所有具有相同元素类型和维数的数组共享一个Class 对象。基本的 Java 类型(boolean, byte, char, short,int, long, float 和 double) 和 void 类型也可表示为 Class 对象。
由于Scanner类输入是可见的,故Scanner类不适用于从控制台读取密码。所以用Console类来解决此问题。

二.部分例题运行截图

Example8-6.java

Example8-11.java

Example8-8

如果输入加密密码和解密码不一样则不会解密成功,和密码学的只是有所关联很好的一道题

三. 学习中遇到的困难和解决方法

1.在编译时,还没到结尾就结束了执行。解决方法:经过仔细的观察是因为少打了一个括号导致

四.代码托管

五.学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 68/70 0/2 20/20 Linux系统基本入门
第二周 267/400 1/2 15/20 基本语法的使用
第三周 760/800 1/2 12/15 包的使用
第四周 174/1000 1/2 15/25 继承以及子类与父类
第五周 307/1576 2/2 12/20 接口
第六周 949/1934 3/2 14/20 内部类与异常类,I/O
第七周 1651/3669 2/2 12/20 String类等
posted @ 2019-04-13 12:22  20175131王泽龙  阅读(167)  评论(0编辑  收藏  举报