# 学习常用类
## 如何查看 JavaAPI 文档
在 Eclipse 中使用 javadoc 生成帮助文档。
1. 工具栏中选中project -> Generate javadoc...
2. 
3. 
4. 为防止中文乱码,填写-encoding UTF-8 -charset UTF-8

> 在 Workspace 中将项目的代码都设置为 UTF-8 格式。
> 选择「Preference」中搜索 「encoding」将所有的文件类型都改成 UTF-8。
## Object
toString() :直接打印对象调用该方法,一般在类中重写(override)。
> 默认的 toString() 是打印类全名+hashcode
hashCode():返回该对象的哈希码值,内存地址。
## String
* 构建字符串的方式
~~~
String s1 = new String("hello");
char[] cs = {'h','e','l','l','o'};
String s2 = new String(cs);
String s3 = "hello"; // 最常用
~~~
* 常用的一些方法
**charAt(int index)**
返回指定索引处的`char`值。
**replace**
**split**
**indexOf**
**substring**
**contains**
~~~
public class UsuallyClass {
public static void main(String[] args) {
String a = "Hello";
String a1 = new String("Hello");
char[] szc = {'H','e','l','l','o'};
String a2 = new String(szc);
System.out.println(a);
System.out.println(a1);
System.out.println(a2);
//根据索引获取字符串中对应的char值
System.out.println(a.charAt(1));
//在字符串尾部拼接字符串,并返回一个新的字符串
String s = a.concat(",world");
System.out.println(s);
//判断字符串是否以给定字符串结尾,是返回true,否返回false
String s1 = "www.baidu.com";
boolean flag = s1.endsWith(".com");
System.out.println(flag);
//比较两个字符串是否相等,针对字符串的比较我们采用equals方法
boolean flag1 = a == a1;
//a与a1的引用地址是不相同的
System.out.println(flag1);
//equals方法比较的是两个对象的内容是否相等
boolean flag2 = a.equals(a1);
System.out.println(flag2);
// 对于字符串的比较操作,一般的场景都是比较字符串的内容是否一致
// 返回指定子字符串在此字符串中第一次出现处的索引
int index = s.indexOf("wor");
System.out.println(index);
String s2 = "a1a2a3b1b3a4";
System.out.println(s2.indexOf("a"));
//返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始
System.out.println(s2.indexOf("a",1));
//将一个字符串转变为char数组
char[] csz = s.toCharArray();
System.out.println(csz);
//问:如何写一个方法,使传入一个字符串,输出某个字符在传入字符串中的所有位置
List<Integer> indexs = getIndexsOfStr("1a22a3444a4b", 'a');
for (Integer index1 : indexs) {
System.out.print(index1 + "\t");
}
System.out.println();
// 打印文件的后缀
String s3 = "d:/js/index.js";
//返回指定子字符串在此字符串中最右边出现处的索引
int index3 = s3.lastIndexOf(".") + 1;
//返回一个新的字符串,它是此字符串的一个子字符串
String s4 = s3.substring(index3);
System.out.println(s4);
String s5 = "abcabcabc";
//替换字符串中相对应内容
String s6 = s5.replace("a", "A");
//替换字符串中收个对应内容
String s7 = s5.replaceFirst("a", "A");
System.out.println(s6);
System.out.println(s7);
//通过特定字符来分割字符串,返回一个字符串数组
String s8 = "a-b-c-d-e-f";
String[] sz1 = s8.split("-");
for (String ss : sz1) {
System.out.println(ss);
}
//验证是否由自定字符开头
String s9 = "20171108001";
System.out.println(s9.startsWith("20171108"));
//返回一个大写字符串
System.out.println(s5.toUpperCase());
//去除字符串两端空格
String s10 = " hello,wolrd! ";
String s11 = s10.trim();
System.out.println("#"+s10+"#");
System.out.println("#"+s11+"#");
}
public static List<Integer> getIndexsOfStr(String src, char c) {
List<Integer> rs = new ArrayList<Integer>();
if (null != src) {
char[] cs = src.toCharArray();
for (int i = 0; i < cs.length; i++) {
if (cs[i] == c) {
rs.add(i);
}
}
}
return rs;
}
}
~~~
## StringBuffer
在进行大数据的字符串拼接时使用 StringBuffer
~~~
public class Demo3 {
public static void main(String[] args) {
Date d11 = new Date();
String s = "";
for (int i = 0; i < 100000; i++) {
s += 1;
}
Date d22 = new Date();
System.out.println(d22.getTime() - d11.getTime()); // 3418
Date d1 = new Date();
StringBuffer sb = new StringBuffer("");
for (int i = 0; i < 100000; i++) {
sb.append(i);
}
Date d2 = new Date();
System.out.println(d2.getTime() - d1.getTime()); // 16
}
}
~~~
## 日期 java.util.Date 和 Calendar
Date 和 SimpleDateFormat 的运用
~~~
public class UsuallyClass {
public static void main(String[] args) throws ParseException {
// 构建当前服务器的时间对象
Date now = new Date();
System.out.println(now);
//返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
System.out.println(now.getTime());
//SimpleDateFormat 是一个以与语言环境相关的方式来格式化和分析日期的具体类。
//它允许进行格式化(日期 -> 文本)、分析(文本 -> 日期)和规范化
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSS");
// 格式化的目的是用于显示
System.out.println(sdf.format(now));
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy/MM/dd hh:mm:ss");
String dateStr = "2021/10/09 13:04:30";
// 解析字符串的文本,生成 Date对象
Date now2 = sdf2.parse(dateStr);
System.out.println(now2.getYear()+1900);
/**
* now > now2 返回正整数
* now = now2 返回0
* now < now2 返回负整数
*/
int result = now.compareTo(now2);
System.out.println(result);
}
}
~~~
Calendar 是更加先进的日期处理类
> 如果只是简单的对日期进行输入,用 Date 就可以了,但是如果要对日期进行复杂的运算,就要使用 Calendar 类,Calendar 和 Date 是可以互相转化的。
* Calendar 和 Date 的转换
* 使用 Calendar 进行复杂的日期运算
* Calendar 只是个工具,具体的日期还是要使用 Date 对象
~~~
public class UsuallyClass {
public static void main(String[] args) throws ParseException {
String dateStr = "2017/02/21";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
Date date = sdf.parse(dateStr);
//使用默认时区和语言环境获得一个日历(实际上常用于日期相关的计算)
Calendar rightNow = Calendar.getInstance();
//使用给定的 Date 设置此 Calendar 的时间
rightNow.setTime(date);
//添加30天时间
rightNow.add(Calendar.DAY_OF_MONTH, 30);
System.out.println(sdf.format(rightNow.getTime()));
//增加一个月时间
rightNow.add(Calendar.MONTH, 1);
System.out.println(sdf.format(rightNow.getTime()));
//获取当前日期的几号
System.out.println(rightNow.get(Calendar.DAY_OF_MONTH));
//获取当前日期的月份,实际结果是当前月份-1
System.out.println(rightNow.get(Calendar.MONTH));
//更改年份
rightNow.set(Calendar.YEAR, 2019);
System.out.println(sdf.format(rightNow.getTime()));
//日期前推一天
rightNow.add(Calendar.DAY_OF_MONTH, -1);
System.out.println(sdf.format(rightNow.getTime()));
}
}
~~~
## java.lang.Math
> `Math`类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。
~~~
public class UsuallyClass {
public static void main(String[] args) throws ParseException {
//圆周率常量
System.out.println(Math.PI);
//获取当前参数绝对值,参数什么类型,返回值什么类型(double,float,int,long)
int num1 = -256;
num1 = Math.abs(num1);
System.out.println(num1);
//返回两个数中较大/较小的值
int num2 = Math.max(23, 31);
int num3 = Math.min(23,31);
System.out.println(num2);
System.out.println(num3);
//返回一个[0,1)的伪随机数
double num4 = Math.random();
System.out.println(num4);
}
}
~~~
## 练习
1. String s = "113@ ere qqq yyui"
请输出所有子串
113
ere
qqq
yyui
~~~
public static void main(String\[\] args) {
String s = "113@ ere qqq yyui";
s = s.replaceAll("@", "");
String \[\] ss=s.split(" ");
for (int i = 0; i < ss.length; i++) {
System.out.println(ss\[i\]);
}
}
~~~
2. 获取当前的日期,并把这个日期转换为指定格式的字符串,如2088-08-08
~~~
java
public static void main(String[] args) {
//获取当前日期对象 now;
Date now = new Date();
//创建SimpleDateFormat对象 df,并制定日期格式
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//调用df的format(Date date) 方法,传入now; 接收返回的字符串
String datestr = df.format(now);
//打印这个字符串
System.out.println(datestr);
}
~~~
3. 生成一个随机100内小数,转换为保留两位小数的字符串,不考虑四舍五入的问题。
~~~
public static void main(String[] args) {
double random = Math.random()*100;
System.out.println("随机数为:");
System.out.println(random);
String str = random+"";
int index = str.indexOf(".");
//System.out.println(index);
String substring = str.substring(0, index + 3);
System.out.println("转换为:");
System.out.println(substring);
}
~~~
- JAVA基础
- JAVA开发准备
- JAVA介绍
- 开发JAVA的准备
- JAVA的运行原理
- JDK配置
- 我的第一个JAVA程序
- 类与对象
- 基础语言要素
- 数据类型
- eclipse的安装与使用
- 变量
- 直接量
- 运算符
- 流程控制
- 数组结构
- 面向对象
- 隐藏与封装
- 深入构造器
- 类的继承
- 多态
- 包装类
- final修饰符
- 抽象类
- 接口
- 内部类
- 设计模式
- 单例模式
- 工厂模式
- 集合框架
- 集合排序
- 常用类学习
- 异常处理
- Java基础测试
- 综合案例一
- JAVA高级
- 泛型
- 多线程
- 线程的创建
- 线程的生命周期
- 线程同步
- 线程通信
- 输入输出流(I/O编程)
- File文件操作
- 字节流与字符流
- 数据库
- 数据库介绍
- 数据库安装
- SQL
- 表的基本操作
- 修改数据语句
- 数据检索操作
- 多表数据操作
- 表结构设计
- 综合应用
