Java进阶总结8——常用类

Java进阶总结8——常用类

1.字符串

1.1 String

//常量池  存储的是常量,虚拟机在编译的时候就已经将这些数据存储在常量池中

//堆区:new String的引用,拼接的新字符串

//字符串进行比较的时候 ==比较的是引用地址

 

package day14.string;

public class StringDemo {

public static void main(String[] args) {

//1.创建字符串的两种方式

String str="ABCD";//字面量

//2.通过构造方法创建一个对象//堆中分配的内存

String str1=new String("ABCD");

//3.

String str2="ABC";

//4.合并字符串,堆中分配的内存

String str3=str2+"D";

//5.合并字符串

String str4="AB"+"CD";

//String主要分配内存的地方有两个  1.堆区  2.常量池

 

if (str==str4) {

System.out.println("相等");

}else {

System.out.println("不相等");

}

//equals比较的是字面量是否相等,不比内存

if (str1.equals(str3)) {

System.out.println("字面量相等");

}else {

System.out.println("字面量不相等");

}

//判断一个字符是否等于常量,要用常量和对象比较

String str5=null;

if ("123".equals(str5)) {

System.out.println("相等");

}

//判断地址是否为空

if (str5==null) {

System.out.println("地址为空");

}

//判断内容是否为空

if ("".equals(str5)) {

System.out.println("内容为空");

}

System.out.println(str);

}

}

输出结果:

package day14.string;

 

import java.io.UnsupportedEncodingException;

 

import javax.naming.ldap.StartTlsRequest;

 

public class StringDemo1 {

public static void main(String[] args) throws UnsupportedEncodingException {

//通过构造方法创建一个字符串

String str=new String();

System.out.println(str.isEmpty());//判断一个字符串是不是空“”

System.out.println(str.length());//获取字符串的长度

 

byte[]b={1,2,4,6};//将byte数组转成一个字符串

System.out.println(str);

 

str=new String(b,"gbk");//指定编码格式

System.out.println(str);

char[]c={'a','d','g','c','e'};

 

str=new String(c,1,3);//将数组c从下标1开始,截取长度为3,转成字符串

System.out.println(str);

 

char cr=str.charAt(0);//获取指定元素的char字符

System.out.println(cr);

 

//返回一个负数表示字符串小于另一个字符串,等于0表示相等,正数表示大于

int result=str.compareTo("ad");//比较字符串

result=str.compareToIgnoreCase("Hbb");//忽略大小写

System.out.println(result);

 

//判断字符串是否包含某个字符串

System.out.println(str.contains("d"));

System.out.println(str.equalsIgnoreCase("Dg"));//比较字符串,不区分大小写

System.out.println(str.equals("Dg"));//比较字符串,区分大小写

 

//静态方法将char数组转换成string

str=String.copyValueOf(c);

System.out.println(str);

 

//判断字符串已e结尾

System.out.println(str.endsWith("e"));

//已某个字符为前缀

System.out.println(str.startsWith("a"));

 

//字符串查询indexof()查询字符在字符串中第一次出现的索引

System.out.println(str.indexOf('g'));

System.out.println(str.indexOf("dg"));//字符串首次出现的位置

//最后一次出现的位置

System.out.println(str.lastIndexOf('g'));

System.out.println(str.lastIndexOf("ce"));

 

//字符串大小写转换,生成新的字符串

System.out.println(str.toUpperCase());//转大写

System.out.println(str.toLowerCase());

 

//截取字符串

System.out.println(str.substring(3));//从3到结尾

System.out.println(str.substring(2, 4));//[2,4)

 

//分割字符串,返回一个的数组

str="提笔、凝神、静气,述其文而汇其意,塑其形而传其神,文不离意,以意浮其文";

String list[]=str.split(",");

for(String string:list){

System.out.println(string);

}

//替换

System.out.println(str.replace("提笔", "执笔"));

 

}

}

输出结果:

1.2 StringBuilder/StringBuffer

/**

 * StringBuilder

 * 1.可变字符串,内容改变,但引用地址不会改变

 * 2.StringBuilder它不是线程安全的,不支持同步,读写速度比较快,一般情况下,不考虑线程安全的情况下,我们尽可能的使用该类

 * 3.该类和StringBuffer功能一样,唯一的区别是Stringbuffer现成安全,就是性能比较差

 * */

package day14.stringbuilder;

 

public class StringBuilderDemo {

public static void main(String[] args) {

 

//1.初始化一个StringBuilder对象

StringBuilder str=new StringBuilder();//空字符序列

System.out.println("str=="+str);

 

//2.在尾部追加字符

str.append(true);//将boolean类型转换成String类型,内容改变,地址不变

str.append('你');//追加char类型

str.append(0.8);//追加double类型

str.append(21);//追加int类型

str.append(new Object());//追加一个对象

char[]c={'q','e','m','z','a','。'};//追加一个数组

str.append(c);

str.append(c,1,3);//从数组下标开始,长度

str.append("Hello",0,3);//追加字符序列,开始小标和结束下标,[0,3)

 

//3.在指定位置插入数据

str.insert(1, 'a');

str.insert(3, "World");

 

//4.替换  从某个位置开始到某个位置结束,替换指定的字符串

str.replace(8, 10, "qwe");

System.out.println("str=="+str);

 

//5.查询

String str1=str.substring(12);//从某一位置开始到最后结束

System.out.println("str1=="+str1);

str1=str.substring(2,6);//从某处开始到某处结束

System.out.println("str1=="+str1);

//查询指定索引位置的元素

char c1=str.charAt(2);

System.out.println(c1);

//查询指定字符首次出现位置

int index=str.indexOf("dc");

System.out.println(index);

//查询指定字符最后一次出现位置

index=str.lastIndexOf("dc");

System.out.println(index);

 

//6.删除指定字符串

str.delete(0, 3);//[开始,结束)

System.out.println(str);

str.deleteCharAt(0);//删除指定索引位置的字符

System.out.println(str);

 

//6.反转字符串

str.reverse();

System.out.println(str);

}

}

输出结果:

2.随机数

2.1 Random

/**

 * Random 生成一个伪随机数,主要依靠种子

 * 类型:   boolean  true  false

 *   double   [0.0,1.0)

 *   float     [0.0,1.0)

 *   int       整数的范围

 *   long      long的范围

 * */

 

package day14.randoms;

 

import java.util.Random;

 

public class RandomDemo {

public static void main(String[] args) {

//初始化一个随机数

Random rand=new Random();//默认是以当前时间为种子

//Random rand=new Random(10);//每次生成的数字固定

//生成随机数据

System.out.println(rand.nextBoolean());//boolean类型

System.out.println(rand.nextDouble());//double类型

System.out.println(rand.nextFloat());//float类型

System.out.println(rand.nextInt());//int类型

System.out.println(rand.nextLong());//long类型

System.out.println(rand.nextInt(10));//[0,10)

System.out.println(10+rand.nextInt(10));//[10,20)

System.out.println((int)(rand.nextDouble()*11)+10);

}

}

输出结果:

2.2 ThreadLocalRandom

//ThreadRandom 支持多线程

//获取random,通过当前线程获取一个random对象

 

package day14.randoms;

 

import java.util.concurrent.ThreadLocalRandom;

 

public class ThreadRandomDemo {

public static void main(String[] args) {

ThreadLocalRandom rand=ThreadLocalRandom.current();

System.out.println(rand.nextDouble(10.0,20.0));//[10.0,20.0)

System.out.println(rand.nextInt(10,20));//[10,20)

}

}

输出结果:

2.3 UUID

//UUID是128位的随机数,可以产生唯一的随机数,用16进制表示

 

package day14.randoms;

 

import java.util.UUID;

 

public class UUIDDemo {

public static void main(String[] args) {

//String uid=UUID.randomUUID().toString();

//1.获取UUID对象

UUID uid=UUID.randomUUID();

//3.将对象转换成String

String str=uid.toString();

System.out.println(str);

//3.去掉-

String newStr=str.replace("-", "");

System.out.println(newStr);

}

}

输出结果:

3.知识框架

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值