常用类第二篇

String类/StringBuffer类/StringBuilder类

String类

字符串是由多个字符组成的一串数据(字符序列)的字符串常量,java中所有字

符串都是String类的实例.

public final class String
extends Object
implements Serializable, Comparable<String>(排序), CharSequence

字符串: 一串字符, 一串字符页数由多个单个的字符组成的,只是给我们对外表示为一个整体的串.

底层还是一个一个的独立的字符

字符: 指的是一个单独的字符 计算机中能够显示的所有符号都是一个个独立的,对应有一个编码表

java中所有字符串都是String类的对象 "abc" 就是一个String对象 java中的字符串不变; 它们的值在创建后不能被更改

String s1 = new String("abc");//abc 字符串对象地址是1001 s1+="def";// 1002字符串对象 abcdef 创建一个新的字符串对象,并把新数组 填充到字符串对象中,并且把新对象地址赋值s1 s1+="gh"; //abcedfgh 1003

s1+="ijk"; //abcdefghijk 1004

创建字符串对象

1.String a1 = "ABC";

2.String a2 = new String("abc");

package com.ffyc.javaapi.stringDemo;
public class StringDemo1 {
    public static void main(String[] args) {
        /*
        The value is used for character storage. 
        private final char value[];
        */ 
        String s = "abc";
        //在内存中创建了一个String对象,创建后值就不可变
        String s1 = new String("abc");
        s1 +="def";
        s1 +="gh";
        s1 +="ijk"; 
        System.out.println(s1);
    }
}
package com.ffyc.javaapi.stringDemo;
public class StringDemo2 {
    public static void main(String[] args) {
        String s1 = "abc"; 
        String s2 = "abc"; 
        System.out.println(s1==s2);
        //true隐式的创建,先去字符串常量池中检测,有没有对应的字符串        //如果没有就会在字符串常量池中创建一个字符串对象
        //如果有直接将常量池的对象地址返回
        String s3 = new String("abc");
        String s4 = new String("abc");
        System.out.println(s3==s4);//false
        System.out.println(s3.equals(s4));//true 
    }
}
package com.ffyc.javaapi.stringDemo;
import java.util.Arrays;public class StringDemo3 {
    /*
    构造方法 
    String()  无参构造方法 
    String(String s)    有一个String类型参数 
    String(byte[] b)    把一个byte数组转为一个字符串  
    String(char c)      把一个char类型的数组转为字符串  
    String(StringBuffer sb) 
    String(StringBuilder sb) 
    getBytes()  把字符转为byte数组 
    toCharArray()   将字符串转为char数组
    */
    public static void main(String[] args) { 
        String s = new String();
        String s1 = new String("abc");
        byte [] bytes = "abc".getBytes();//编码  把字符转为byte数组 数字化传输 
        System.out.println(Arrays.toString(bytes)); 
        String s2 = new String(bytes);//解码  把byte数组转换为字符串
        System.out.println(s2);
        //排序  
        char[] chars = "bca".toCharArray();//将字符串转为数组
        Arrays.sort(chars);//以数组的形式进行操作 
        String s3 = new String(chars);//把char数组转为字符串
        System.out.println(s3);  
        System.out.println(String.valueOf(chars));
    }
}
package com.ffyc.javaapi.stringDemo;
public class StringDemo4 {  
    /*
    ● 判断功能
    boolean equals(Object obj)//判断内容是否相等
    boolean equalsIgnoreCase(String str)//不区分大小写 验证码
    boolean contains(String str)是否包含某一个指定的字符串 
    boolean isEmpty()是否为空  
    boolean startsWith(String prefix)是否以什么开头
    boolean endsWith(String suffix)是否以什么结尾   
    boolean comporeTo(String anotherString)比较字符串之间按照编码大小比较 
    */ 
    public static void main(String[] args) {
        String s1 = "abc";  
        System.out.println(s1.equals("abc")); 
        System.out.println(s1.equalsIgnoreCase("abC")); 
        System.out.println(s1.contains("bc")); 
        System.out.println(s1.isEmpty());     
        System.out.println(s1.startsWith("a")); 
        System.out.println(s1.endsWith("a"));   
        System.out.println("a".compareTo("b"));
    }
}
package com.ffyc.javaapi.stringDemo;
public class StringDemo5 {
    public static void main(String[] args) {  
        /* 
        获取功能   
        int length()获取长度  
        char charAt(int index)获取指定位置字符   
        int indexOf(String str)返回指定字符第一次出现的位置   
        int indexOf(String str,int fromIndex)返回从指定位置开始查找字符首次出现位置 
        String substring(int start)截取字符串,从指定位置开始到最后  
        String substring(int start,int end)截取字符串,从指定位置开始到指定位置结束  
        */  
        String s = "abcdefg"; 
        System.out.println(s.length());  
        System.out.println(s.charAt(0));  
        System.out.println(s.indexOf("b")); 
        int index = s.indexOf("c");    
        System.out.println(s.indexOf("c",index+1));  
        System.out.println(s.substring(2,6)); 
    }
}
package com.ffyc.javaapi.stringDemo;
import java.util.Arrays;public class StringDemo6 {
    public static void main(String[] args) {  
        /* 
        转换功能
        byte[] getBytes()将字符串转换为byte数组   
        char[] toCharArray()将字符串转换为char数组   
        static String valueOf(char[] chs)将char数组转化为字符串
        String toLowerCase()字符串中英文字母转换为小写       
        String toUpperCase()字符串中英文字母转换为大写   
        String concat(String str)将两个字符串连接返回新的字符串只能连接字符串   
        Stirng[] split(分割符);按照规则拆分字符串
        */ 
        String s = "abcDEF";  
        System.out.println(s.toLowerCase());   
        System.out.println(s.toUpperCase());
        String s1 = "cgef";     
        System.out.println(s.concat(s1));
        String s2 = "abc:def:efg:hij:ho";
        String[] aarray =  s2.split(":"); 
        System.out.println(Arrays.toString(aarray));  
    }
}

StringBuffer类/StringBuilder类

buffer缓冲

package com.ffyc.javaapi.stringDemo;
public class StringBufferDemo1 {
    public static void main(String[] args) {
        /*
        String对象的值是不可改变的,会产生问题经常拼接字符串时,会创建多个字符串对象,造成浪费  
        如果某些场景下,需要大量拼接字符串时我们可以使用StringBuffer 
        StringBuffer:线程安全的,可变的字符串  这个类的方法上加了synchronized(同步锁)关键字
        capacity容量 = 16  
        new StringBuffer()默认容量为16 
        new StringBuffer(20)指定底层数组容量为20 
        new StringBuilder("abcd");容量等于内容长度加16
        char[] value;没有被final修饰可以改变 
        */
        StringBuilder s = new StringBuilder("abcd"); 
        s.append("efg");//没有创建新的StringBuffer和底层对象和数组  
        //当底层数组容量不够时会创建新的数组对象进行赋值 
        s.insert(1,"xx");//在指定的位置上插入字符串  
        System.out.println(s);  
        s.delete(1,5);//删除指定区间   
        s.replace(1,3,"AA");
        s.reverse();//反转字符串   
        System.out.println(s); 
        String s1 = s.substring(2);//截取时返回新的字符串原来字符串不变
    }
}
package com.ffyc.javaapi.stringDemo;
public class StringBuilderDemo1 {
    public static void main(String[] args) { 
        /* 
        StringBuilder:线程不安全的,可变的字符串 这个类的方法上没有加synchronized(同步锁)关键字多线程·不安全
        方法和StringBuffer基本一样  
        */ 
        StringBuilder s0 = new StringBuilder();
        s0.append("abc");
    }
}

不同点:StringBuffer是线程安全的

StringBuilder是线程不安全的

相同点:都是可变的字符串对象,底层都有一个char数组

char[] value;创建之初会创建一个指定容量的数组,增删改查都是在数组上操作

最终实现调用的都是AbstractStringBuilder父类中实现的方法

正则表达式

正则-->规则-->模式 去匹配某个字符串,看字符串是否满足某种规则

可以通过正则表达式,来指定一个规则,用规则去匹配某个字符串,可以快速进行模式匹配

正则表达式 Regular Expression 在代码中简写为regex,regexp或者RE

可以使用一些特定的字符来指定规则,然后用规则去匹配字符串

学习正则表达式常用字符

package com.ffyc.javaapi.stringDemo;
public class StringDemo7 {
    /*
    使用字符串中的内容,去与指定的正则表达式匹配,成功true,否则false 
    s.matches("正则表达式"); 
    正则表达式常用特点字符 
    */ 
    public static void main(String[] args) {
        String s = "assdsds@1212.com";
        String c = "sdfghjkkkk";
        boolean res = s.matches("\\d");
        //"\\d"数字“\D”非数字        
        //?表示一次或一次也没有*表示零次或多次+表示1次或多次{n}固定的n位{n,}至少是n位{n,m}最少n位最大m位
        boolean a = s.matches("[1][3,5,7,8,9][0-9]{9}");
        System.out.println(res);   
        System.out.println(a);  
        boolean d = c.matches("[A-z]");//大小写字母 
        boolean e=s.matches("\\w+");//[a-z,A-Z,0-9] 
        boolean r = s.matches("[\\u4e00-\\u9fa5]+");//汉字 
        //邮箱  有字母数字  @qq/163/sina .com/com.cn 
        boolean q = s.matches("\\w{6,10}@\\w{2,6}\\.(com|com.cn)");
        //.可以表示任意格式所以需要转义 
        System.out.println(q); 
    }
}

Math类/Random类

Math

package com.ffyc.javaapi.MathDemo;
public class MathDemo1 {
    public static void main(String[] args) {
        /*
        Math类:提供了许多关于数学运算的方法,例如平方根,四舍五入,三角函数
        abs 绝对值  
        sqrt 平方根   
        pow(double a, double b) a的b次幂
        max(double a, double b)  
        min(double a, double b)
        random() 返回 0.0 到 1.0 的随机数
        long round(double a) double型的数据a转换为long型(四舍五入) 
        */  
        System.out.println(Math.PI); 
        System.out.println(Math.sqrt(9)); 
        System.out.println(Math.pow(2,3));//2的三次方 
        System.out.println(Math.random());//返回0-1之间的随机数 
        System.out.println(Math.round(5.4));//四舍五入
        System.out.println(Math.floor(5.9));//向下取整  
        System.out.println(Math.ceil(5.1));//向上取整  
        System.out.println(Math.max(2,5));
    }
}

Random类

package com.ffyc.javaapi.MathDemo;
import java.util.Random;
public class RandomDemo { 
    /*        Random 用来提供随机数的类     */
    public static void main(String[] args) { 
        Random random = new Random();
        System.out.println(random.nextInt());//返回int范围内的随机数
        System.out.println(random.nextLong());//返回Long范围内的随机数 
        //指定区间随机数 
        System.out.println(random.nextInt(10)+1);//0-9不包含10加一之后就是1-10了
    }
}

Date类/Calendar类/ SimpleDateFormat类

Calendar(日历)类

日历类提供了更多的关于日期操作的方法

package com.ffyc.javaapi.datelei;
import java.util.Calendar;
import java.util.GregorianCalendar;public class CalendarDemo {
    /* 
    输入一个日期(年月日),计算是当年的第几天  
    Calendar日历类,提供更为丰富的日历操作方法  
    */
    // 返回的是 Calendar这个抽象类的子类对象 
    //  Calendar calendar = Calendar.getInstance(); 
    //GregorianCalendar();创建子类对象 公历
    public static void main(String[] args) {
        //  
        Calendar calendar = Calendar.getInstance();
        Calendar calendar = new GregorianCalendar();
        System.out.println(calendar);       
        System.out.println(calendar.get(Calendar.YEAR)); 
        System.out.println(calendar.get(Calendar.DAY_OF_YEAR));
        System.out.println(calendar.get(Calendar.DAY_OF_WEEK));    }
}

Date类

获取系统当前时间

new Date();创建一个date对象,表示当前时间

getTime()//返回的是1970.1.1 0:0:0至今(程序运行的时间)之间的毫秒差

package com.ffyc.javaapi.datelei;
import java.util.Date;
public class DateDemo { 
    public static void main(String[] args) { 
        /* 
        想知道此时程序运行时间 
        Date date = new Date();
        一个日期对象,就会包含我们程序运行那一刻的时间信息
        */
        Date date = new Date();
        System.out.println(date);
        System.out.println(date.getYear()+1900);
        System.out.println(date.getMonth()+1);   
        System.out.println(date.getDate());    
        System.out.println(date.getDay());   
        System.out.println(date.getHours()); 
        System.out.println(date.getMinutes());  
        System.out.println(date.getSeconds());   
        //返回的是1970.1.1 0:0:0至今(程序运行的时间)之间的毫秒差
        System.out.println(date.getTime());
    }
}

SimpleDateFormat类

简单的日期格式化

package com.ffyc.javaapi.datelei;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class SimpleDateFormatDemo {
    public static void main(String[] args) throws ParseException {
        /* 
        在前端需要显示时,需要把java中的date对象转为指定的字符串 
        */  
        //把日期对象转为指定格式的字符串 
        Date date = new Date();
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss E"); 
        String str = simpleDateFormat.format(date);
        System.out.println(str); 
        //把字符串转为指定日期对象 
        //从前端获取都是String,需要获取年,月非常麻烦 
        SimpleDateFormat c = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss E"); 
        Date p = c.parse(str); 
        System.out.println(date.getYear()+1900);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值