Java常用类总结

一:主要内容

 

 二:字符串相关类

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  1 package TestString;
  2 
  3 import org.junit.Test;
  4 
  5 public class TestString {
  6     /*
  7      * String:代表不可变的字符序列。底层使用char[]存放。
  8      * String 是final的。
  9      */
 10     @Test
 11     public void test1(){
 12         String str1 = "aa";
 13         String str2 = "aa";
 14         String str3 = new String("aa");//在堆里面创建一块新地址,存储的value是指定常量池里面aa的地址引用
 15         System.out.println(str1==str2);//true 指向常量池同一块地址
 16         System.out.println(str1==str3);//false  两者地址不同
 17         System.out.println(str1.equals(str3));//true  比较的是内容
 18         String str4 = "123";
 19         String str5 = str1+str4;
 20         String str6 = "aa"+"123";
 21         String str7 = "aa123";
 22         System.out.println(str5 == str7);//false  含有变量的表达式相当于在堆里面产生了一个新地址
 23         System.out.println(str7 == str6);//true   指向同一块地址
 24         System.out.println(str6 == str5.intern());//true  取得是地址里面存储的引用地址和str6指向的是同一块内存
 25         System.out.println(str5 == str6.intern());//false   对str6无效
 26         Person p1 = new Person("AAA");
 27         Person p2 = new Person("AAA");
 28         System.out.println(p1.name == p2.name);//true
 29     }
 30     /*
 31      * public int length() public char charAt(int
 32      * index):返回在指定index位置的字符。index从0开始 public boolean equals(Object
 33      * anObject):比较两个字符串是否相等。相等返回true。否则返回false public int compareTo(String
 34      * anotherString) public int indexOf(String s):返回s字符串在当前字符串中首次出现的位置。若没有,返回-1
 35      * public int indexOf(String s ,int
 36      * startpoint):返回s字符串从当前字符串startpoint位置开始的,首次出现的位置。 public int
 37      * lastIndexOf(String s):返回s字符串最后一次在当前字符串中出现的位置。若无,返回-1 public int
 38      * lastIndexOf(String s ,int startpoint) public boolean startsWith(String
 39      * prefix):判断当前字符串是否以prefix开始。 public boolean endsWith(String
 40      * suffix):判断当前字符串是否以suffix结束。 public boolean regionMatches(int
 41      * firstStart,String other,int otherStart ,int length):
 42      * 判断当前字符串从firstStart开始的子串与另一个字符串other从otherStart开始,length长度的字串是否equals
 43      */
 44     @Test
 45     public void test2(){
 46         String str = "qwqeqdqwd";
 47         System.out.println(str.length());
 48         System.out.println(str.charAt(0));
 49         System.out.println(str.compareTo("aaaaaa"));
 50         System.out.println(str.indexOf("w",2));
 51         System.out.println(str.lastIndexOf("w"));
 52         System.out.println(str.startsWith("q"));
 53         System.out.println(str.regionMatches(1,"wqe",0,"qd".length()));
 54     }
 55 
 56     /*
 57      *     public String substring(int startpoint)
 58         public String substring(int start,int end):返回从start开始到end结束的一个左闭右开的子串。start可以从0开始的。
 59         pubic String replace(char oldChar,char newChar)
 60         public String replaceAll(String old,String new)
 61         public String trim():去除当前字符串中首尾出现的空格,若有多个,就去除多个。
 62         public String concat(String str):连接当前字符串与str
 63         public String[] split(String regex):按照regex将当前字符串拆分,拆分为多个字符串,整体返回值为String[]
 64 
 65      */
 66     @Test
 67     public void test3(){
 68         String str1 = "北京尚硅谷教育北京";
 69         String str2 = "上海尚硅谷教育";
 70         String str3 = str1.substring(2, 5);
 71         System.out.println(str3);
 72         System.out.println(str1);
 73         String str4 = str1.replace("尚硅谷","尚学堂");
 74         System.out.println(str4);
 75         System.out.println("127.0.0.1".replaceAll("\\d","*"));//replaceAll支持正则表达式的方式进行替换
 76         System.out.println(" 123 4 ".trim());
 77         System.out.println("aa".concat("bb"));
 78         String ip = "127.0.0.1";
 79         String[] array = ip.split("\\.");//split是按照正则表达式的方式进行切割
 80         for (int i = 0; i < array.length; i++) {
 81             System.out.print(array[i]+" ");
 82         }
 83     }
 84     /*
 85      * 1.字符串 与基本数据类型、包装类之间转换
 86      * ①字符串 --->基本数据类型、包装类:调用相应的包装类的parseXxx(String str);
 87      * ①基本数据类型、包装类--->字符串:调用字符串的重载的valueOf()方法
 88      *
 89      * 2.字符串与字节数组间的转换
 90      * ①字符串---->字节数组:调用字符串的getBytes()
 91      * ②字节数组---->字符串:调用字符串的构造器
 92      *
 93      * 3.字符串与字符数组间的转换
 94      * ①字符串---->字符数组:调用字符串的toCharArray();
 95      * ②字符数组---->字符串:调用字符串的构造器
 96      */
 97     @Test
 98     public void test4(){
 99         //1.字符串 与基本数据类型、包装类之间转换
100         String str1 = "123";
101         int i = Integer.parseInt(str1);
102         System.out.println(Boolean.parseBoolean("true"));
103         System.out.println(i);
104         String str2 = i + "";
105         str2 = String.valueOf(i);
106         System.out.println(str2);
107         System.out.println();
108         //2.字符串与字节数组间的转换
109         String str = "abcd123";
110         byte[] b = str.getBytes();
111         for(int j = 0;j < b.length;j++){
112             System.out.println((char)b[j]);
113         }
114         String str3 = new String(b);
115         System.out.println(str3);
116         System.out.println();
117         //3.字符串与字符数组间的转换
118         String str4 = "abc123中国人";
119         char[] c = str4.toCharArray();
120         for(int j = 0;j < c.length;j++){
121             System.out.println(c[j]);
122         }
123         String str5 = new String(c);
124         System.out.println(str5);
125     }
126 }
127 class Person{
128     String name;
129     Person(String name){
130         this.name = name;
131     }
132 }

三:StringBuilder和StringBuffer

 

 

 

 

 

 

 

 

 1 package TestString;
 2 
 3 import org.junit.Test;
 4 
 5 public class TestStringBuffer {
 6     /*
 7      * 对比String,StringBuffer,StringBuilder三者在添加上的效率:
 8      * 效率从高到底: StringBuilder > StringBuffer > String
 9      * StringBuffer支持在原地址上进行内容的修改,是线程安全的,StringBuilder不是线程安全的,但是速度很快
10      */
11     public static void main(String[] args) {
12         String text = "";
13         long startTime = 0L;
14         long endTime = 0L;
15         StringBuffer buffer = new StringBuffer("");
16         StringBuilder builder = new StringBuilder("");
17 
18         startTime = System.currentTimeMillis();
19         for(int i = 0;i<20000;i++){
20             buffer.append(String.valueOf(i));}
21         endTime = System.currentTimeMillis();
22         System.out.println("StringBuffer的执行时间:"+(endTime-startTime));
23 
24         startTime = System.currentTimeMillis();
25         for(int i = 0;i<20000;i++){
26             builder.append(String.valueOf(i));}
27         endTime = System.currentTimeMillis();
28         System.out.println("StringBuilder的执行时间:"+(endTime-startTime));
29 
30         startTime = System.currentTimeMillis();
31         for(int i = 0;i<20000;i++){
32             text = text + i;}
33         endTime = System.currentTimeMillis();
34         System.out.println("String的执行时间:"+(endTime-startTime));
35     }
36     /*
37  * java.lang.StringBuffer和StringBuilder:代表可变的字符序列,可以对字符串内容进行增删
38  *  StringBuffer append(String s),   StringBuffer append(int n) ,
39  StringBuffer append(Object o) ,  StringBuffer append(char n),
40  StringBuffer append(long n),  StringBuffer append(boolean n),
41  StringBuffer insert(int index, String str)
42  public StringBuffer reverse() :反转此StringBuffer
43  StringBuffer delete(int startIndex, int endIndex)
44  public char charAt(int n )
45  public void setCharAt(int n ,char ch)
46  StringBuffer replace( int startIndex ,int endIndex, String str)
47  public int indexOf(String str)
48  public String substring(int start,int end)
49  public int length()
50  总结:添加:append() 删除:delete(int i,int j) 修改:setCharAt(int index,char ch) 查 charAt(int n);
51  插入:insert(int index,String str)  反转:reverse() 长度:length()
52  */
53     @Test
54     public void test(){
55         StringBuffer sb = new StringBuffer();
56         sb.append("a");
57         sb.append(1);
58         sb.insert(1,"T");
59         System.out.println(sb);
60         System.out.println(sb.reverse());
61         System.out.println(sb.delete(1,2));
62         System.out.println(sb.charAt(1));
63         sb.setCharAt(1,'s');//修改1处的字符
64         System.out.println(sb);
65         System.out.println(sb.append("wasd110120"));
66         System.out.println(sb.indexOf("wasd"));
67         System.out.println(sb.substring(2));
68     }
69 }

四:日期类

 

 

 

 

 

 

 

 

 1 package TestString;
 2 
 3 import org.junit.Test;
 4 
 5 import java.text.ParseException;
 6 import java.text.SimpleDateFormat;
 7 import java.util.Calendar;
 8 import java.util.Date;
 9 
10 /*
11  * 与时间相关的类:
12  * 1.System 类下的currentTimeMillis();
13  * 2.Date类:java.util.Date
14  *    如何创建其实例;其下的方法:toString()、getTime()
15  *    (以及其子类java.sql.Date)
16  * 3.SimpleDateFormat类
17  * 4.Calendar类
18  */
19 public class TestDate {
20     @Test
21     public void test(){//测试Date类,java.util.Date不易于国际化
22         java.sql.Date date = new java.sql.Date(15342515326235L);//java.sql里面的Date是与数据库表里的date格式保持一致
23         System.out.println(date);
24         Date date1 = new Date();//创建一个Date实例
25         System.out.println(date1.toString());//Thu Nov 19 14:59:58 CST 2020
26         System.out.println(date1.getTime());//1605769198595
27         Date d2 = new Date(1399879144434L);
28         System.out.println(d2);//Mon May 12 15:19:04 CST 2014
29     }
30     /*
31      * java.text.SimpleDateFormat类易于国际化
32      * 格式化:日期--->文本 使用SimpleDateFormat的format()方法
33      * 解析:文本--->日期 使用SimpleDateFormat的parse()方法
34      */
35     @Test
36     public void test2() throws ParseException {
37         SimpleDateFormat simpleDateFormat = new SimpleDateFormat();//格式化处理
38         String format = simpleDateFormat.format(new Date());
39         System.out.println(format);//20-11-19 下午3:03
40         SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yy-MM-dd HH:mm:ss");
41         String format1 = simpleDateFormat1.format(new Date());//按照指定的格式输出
42         System.out.println(format1);//20-11-19 15:07:51
43         //解析
44         Date date1 = simpleDateFormat.parse("20-11-19 下午3:07");//只能用对应格式进行解析,如果使用simpleDateFormat1就会报错。
45         System.out.println(date1);
46     }
47     /*
48      * “三天打渔两天晒网”  1990-01-01  XXXX-XX-XX 打渔?晒网?
49      */
50     //返回date1与date2之间的天数,date1早于date2
51     public int getDays(String date1,String date2) throws ParseException{
52         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
53         Date d1 = sdf.parse(date1);
54         Date d2 = sdf.parse(date2);
55         long milliTime = d2.getTime()-d1.getTime();
56         return (int)milliTime/1000/3600/24 + 1;
57 
58     }
59 
60     @Test
61     public void test3() throws ParseException{
62         String str1 = "1990-01-01";
63         String str2 = "1990-01-06";
64         int dates = getDays(str1,str2);
65 
66         if(dates % 5 == 0 || dates % 5 == 4){
67             System.out.println("晒网");
68         }else{
69             System.out.println("打渔");
70         }
71     }
72     //日历:Calendar类   get()/add()/set()/Date getTime()/setTime(Date d)
73     @Test
74     public void test4()
75     {
76         Calendar c = Calendar.getInstance();
77         int day = c.get(Calendar.DAY_OF_MONTH);
78         System.out.println(day);
79         c.add(Calendar.DAY_OF_MONTH,-2);
80         int day1 = c.get(Calendar.DAY_OF_MONTH);
81         System.out.println(day1);
82         c.add(Calendar.DAY_OF_MONTH,+2);
83         int day2 = c.get(Calendar.DAY_OF_MONTH);
84         System.out.println(day2);
85         c.set(Calendar.DAY_OF_MONTH,23);
86         Date d = c.getTime();
87         System.out.println(d);
88     }
89 }

五:Math类

 

 六:BigInteger,BigDecimal类

 

 

 1 package TestString;
 2 
 3 import org.junit.Test;
 4 
 5 import java.math.BigDecimal;
 6 import java.math.BigInteger;
 7 
 8 public class TestBigDecimal {
 9     @Test
10     public void testBigInteger(){
11         BigInteger bi = new BigInteger("123456848889874465");
12         System.out.println(bi);
13         BigDecimal bd = new BigDecimal("5646546");
14         System.out.println(bd);
15         BigDecimal bd1 = new BigDecimal("11");
16         System.out.println(bd.divide(bd1,BigDecimal.ROUND_HALF_UP));//向上取整
17         System.out.println(bd.divide(bd1,15,BigDecimal.ROUND_HALF_UP));//向上取整,保留15位小数
18     }
19 }

 JDBC

package JDBC;

//这是工具类:

import java.sql.*;

public class JdbcUtils {
    static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";
    static final String DB_url = "jdbc:mysql://localhost:3306/student?characterEncoding=utf-8&serverTimezone=UTC";
    static final String USER = "root";
    static final String PASSWORD = "root";
    public static void main(String[] args) throws ClassNotFoundException, SQLException {
        Class.forName(JDBC_DRIVER);
        Connection connection = DriverManager.getConnection(DB_url, USER, PASSWORD);
        Statement statement = connection.createStatement();
        String sql = "select * from student";
        ResultSet resultSet = statement.executeQuery(sql);
        while (resultSet.next()){
            String id = resultSet.getString("id");
            String age = resultSet.getString("age");
            String name = resultSet.getString("name");
            String sex = resultSet.getString("sex");
            System.out.println(id+age+name+sex);
        }
        resultSet.close();
        statement.close();
        connection.close();

    }
}

 

posted @ 2020-11-19 16:07  你的雷哥  阅读(313)  评论(0编辑  收藏  举报