栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

第五章 API(二)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

第五章 API(二)

String类 String类概述

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

两种创建形式

●第一种:

String s = "abc";

先在栈中创建一个对String类的对象引用变量s,然后去字符串常量池中查找有没有"abc", 如果没有则在常量池中添加”abc”, s引用变量指向常量池中的”abc”,如果常量池中有,则直接指向改地址即可,不用重新创建

●第二种:

一概在堆中创建新对象,值存储在堆内存的对象中

String s = new String("abc");







   public static void main(String[] args) {
         
​
         
         String s = "abc";
         String s1 = "abc";
         System.out.println(s==s1);//true
         System.out.println(s.equals(s1));//true
         
         String s3 = new String("abc");
         String s4 = new String("abc");
         System.out.println(s3==s4);//false
        System.out.println(s3.equals(s4));//true
​
    }
 
判断 
       
        
         
​
        String s1 = "abc";
        String s2 = new String("abC");
        System.out.println(s1.equals(s2));//比较字符串内容是否相等
        System.out.println(s1.equalsIgnoreCase(s2));//比较字符串内容是否相等(忽略大小写)
​
        System.out.println(s1.contains("c"));//是否包含指定的子串
        System.out.println(s1.isEmpty());//判断是否为空("")
        System.out.println(s1.startsWith("ab"));//判断以指定字符串开头
        System.out.println(s1.endsWith("bc"));//判断以指定字符串结尾
​
        String s3 = "abc";
        String s4 = "efg";
        System.out.println(s3.compareTo(s4));//字符串比大小
获取
       
        String s = "abcdefgd";
        //          01234567
        System.out.println(s.length());
​
        char c = s.charAt(4);//获取指定位置(索引)的字符
        System.out.println(c);
​
        int index = s.indexOf("d");//从前向后找 只找首次出现的位置
        System.out.println(index);
​
        int index1 = s.indexOf("d",index+1);//从前向后找 从指定位置开始
        System.out.println(index1);
​
        int index2 = s.lastIndexOf("d");//从后向前查找,首次出现的位置
        System.out.println(index2);
​
        String s1 = "abcdefgd";
        //           01234567
​
        String s2 =  s1.substring(3);//从指定的为开始截取字符串,直接到最后一位,最终返回一个新的字符串对象
        System.out.println(s1);
        System.out.println(s2);
​
        String s3 = s1.substring(2,6);//截取指定区间 包含开始位置,不包含结束位置
        System.out.println(s3);
    }
转换
   byte[] getBytes()
   char[] toCharArray()
   static String valueOf(char[] chs)
   String toLowerCase()
   String toUpperCase()
   String concat(String str)
   Stirng[] split(分割符);

 public static void main(String[] args) throws UnsupportedEncodingException {
        
        //byte[] getBytes()
          String 字符串转化为字节码
          字节码再转化成字符串
        String s = "你好";//默认是utf-8编码  在utf-8编码中,一个汉字占3个字节
        byte[] b = s.getBytes("UTF-8");//编码
        System.out.println(Arrays.toString(b));
        
        String s1 =  new String(b,"UTF-8");//解码
        System.out.println(s1);
        
        String s1 =  new String(b,3,3,"UTF-8");//解码
        System.out.println(s1);
        
        //char[] toCharArray()
          String 字符串转化为char数组
          char 数组转化回字符串
        String s = "abcd";
        char[] chars =  s.toCharArray(); //将字符串转换为一个新的char数组
        System.out.println(Arrays.toString(chars));
​
        String s1 =  new String(chars); //将char数组 转为字符串
        System.out.println(s1);
        String s2 =  String.valueOf(chars);
        System.out.println(s2);
        
        //转换大小写
        String s3 = "abcdEFG一";
        System.out.println(s3.toUpperCase());//转大写
        System.out.println(s3.toLowerCase());//转小写
​
​
        
​
        String s4 = "ab&cde&efg";
        String[] strings = s4.split("&");//按照指定的分隔符,将字符串拆分为数组
        System.out.println(Arrays.toString(strings));
​
    }
替换
    String replace(char old,char new)
    String replace(String old,String new) 
    replaceAll(String regex, String replacement)
    replaceFirst(String regex, String replacement)

        String s = "  abcdef cg ";
        String s1 = s.replace("cd", "CC");
        System.out.println(s1);
        System.out.println(s.length());
        System.out.println(s.trim());//去除字符串前后的空格

        split(String regex)
        replaceAll(String regex, String replacement)
        replaceFirst(String regex, String replacement)

        String s0 = "ab5cd2ef3g";
        String[] ss = s0.split("\d");
        System.out.println(Arrays.toString(ss));
​
        String s0 = "abc33d2e44cdg";
        String s00 = s0.replaceAll("\d", "CC");
        System.out.println(s00);
​
        String s2 = s0.replaceFirst("cd", "CC");
        System.out.println(s2);
正则表达式

正则表达式: 规则表达式, 使用一些特定的符号来制定一个规则

使用此规则与一个字符串进行模式匹配, 匹配成功返回true,否则返回false

输入手机号,验证输入的内容是一个手机号格式(11位数字 1开头)

String s = "3123123213"; 验证手机格式,需要判断每一个字符是否符合要求

基础语法
        Pattern p  = Pattern.compile("a*b");//定义一个规则
        Matcher m =  p.matcher("aaaab");//输入内容
        boolean b = m.matches();//匹配
        System.out.println(b);
规则
实例
        //验证手机号  qq号 数字 6-12 0不能开头
        //String phone = "13000000001";
        //System.out.println(phone.matches("1[35789]\d{9}"));
​
        //String qq = "90000000";
        //System.out.println(qq.matches("[1-9]\d{5,11}"));
​
        String s = "qSDSw21_321e";
        //System.out.println(s.matches("[a-z]+"));
        //System.out.println(s.matches("[a-zA-Z]+"));
        //System.out.println(s.matches("[A-z]+"));
​
        //System.out.println(s.matches("\w+")); //w [a-zA-Z_0-9]
​
        //邮箱格式           .表示任何字符 \.进行转义   | 或
          String email = "qr3423421@sina.com.cn";
          System.out.println(email.matches("\w{6,18}@\w{2,5}\.(com|com\.cn)"));
StringBuffer和StringBuilder

StringBuffer线程安全的,值可变的字符串(指的是底层char[]的值在变)

char[] value; AbstractStringBuilder(int capacity) { value = new char[capacity]; } super(16); super(str.length() + 16);

当向StringBuffer中添加内容时,是将内容添加到底层的数组中,数组没有被final修饰 当数组装满时,会创建一个新的数组,将新数组地址给底层数组,StringBuffer对象是不会改变的

StringBuilder线程不安全的,值可变的字符串

   //new StringBuffer(30);
   //new StringBuffer();// 默认底层char数组长度是16
   
​
      StringBuffer stringBuffer = new StringBuffer("abcdefg");//23
                //stringBuffer.insert(2,"xx");//向指定的位置插入字符串
                //stringBuffer.deleteCharAt(1);
                //stringBuffer.delete(0,3);//删除指定区间的内容 包含开始,不包含结束
                //stringBuffer.replace(0,3, "XXX");//替换
                //stringBuffer.reverse();//逆序字符串
                //String sub =  stringBuffer.substring(2);//截取一个字符串副本返回
                //String sub =  stringBuffer.substring(2,5);//截取一个字符串副本返回
                    //System.out.println(sub);
       System.out.println(stringBuffer);
       String s1 = "abcd";
       System.out.println(s1.length());//4
       System.out.println(stringBuffer.length());//返回的是底层数组中实际转入的字符个数
       stringBuffer.append("efg111");


   //new StringBuffer(30);
   //new StringBuffer();// 默认底层char数组长度是16
   
​
      StringBuffer stringBuffer = new StringBuffer("abcdefg");//23
                //stringBuffer.insert(2,"xx");//向指定的位置插入字符串
                //stringBuffer.deleteCharAt(1);
                //stringBuffer.delete(0,3);//删除指定区间的内容 包含开始,不包含结束
                //stringBuffer.replace(0,3, "XXX");//替换
                //stringBuffer.reverse();//逆序字符串
                //String sub =  stringBuffer.substring(2);//截取一个字符串副本返回
                //String sub =  stringBuffer.substring(2,5);//截取一个字符串副本返回
                    //System.out.println(sub);
       System.out.println(stringBuffer);
       String s1 = "abcd";
       System.out.println(s1.length());//4
       System.out.println(stringBuffer.length());//返回的是底层数组中实际转入的字符个数
       stringBuffer.append("efg111");
String、StringBuffer和StringBuilder的对比
 
String、StringBuffer和StringBuilder适用场景

String:是字符常量,适用于少量的字符串操作的情况

StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况

StringBuffer:适用多线程下在字符缓冲区进行大量操作的情况

Math类

●java.lang.Math提供了一系列静态方法用于科学计算

其方法的参数和返回值类型一般为double型

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.abs(-1));
        System.out.println(Math.sqrt(9));
        System.out.println(Math.random());//返回0-1之间随机数
​
        System.out.println(Math.floor(9.9));//向下取整
        System.out.println(Math.ceil(9.1));//向上取整
        System.out.println(Math.round(9.6));//四舍五入
Random类

●Random类概述:

此类用于产生随机数

●构造方法:

public Random()

●成员方法:

public int nextInt()

public int nextInt(int n)

        Random r = new Random();
        //System.out.println(r.nextInt());//在int的范围内随机取出
        //System.out.println(r.nextInt(4));//0--<4  在指定的区间内随机取出
​
        //System.out.println(r.nextBoolean());
​
        byte[] b = new byte[5];//随机取出 数组.length个随机数
        r.nextBytes(b);
        System.out.println(Arrays.toString(b));
System类

●System类概述:

System 类包含一些有用的类字段和方法,它不能被实例化

●成员方法:

public static void exit(int status)

public static long currentTimeMillis()

        //public final static PrintStream out = null;
        // System.out.print(1);
​
        
​
        //1637483235781 是自1970.1.1 0:0:0 --- 程序运行时的那一刻的时间差(毫秒为单位)
        //Long s =  System.currentTimeMillis();
        //System.out.println(s);
​
        //System.exit(0); 退出虚拟机
​
        //System.gc(); 垃圾回收 一般程序中不使用
​
        //System.out.println("qqqqqqqqqqq");
​
        //arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
         int a[] = {1,2,3,4,5};
         int b[] = new int[10];
​
         
         System.arraycopy(a,1,b,0,4); //系统中提供的最底层的数组内容复制方法
         System.out.println(Arrays.toString(b));
​
自定义工具类
public class StringUtil {
    
    public static String subFileType(String fileName){
        if (fileName!=null){
            return fileName.substring(fileName.lastIndexOf(".")+1);
        }
        return null;
    }
​
     public static void main(String[] args) {
        System.out.println(StringUtil.subFileType("hello.js"));
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/732514.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号