欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

第五章API(二)

时间:2023-07-04
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"));   }}

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。