- String类
初始化对象:
构造方法:
String()//创建一个内容为空的字符串。
String(String str)//根据指定的字符串内容创建对象。
String(char[] arr)//根据指定的字符串数组创建对象。
String(byte[] arr)//根据指定的字节数创建对象.
//创建一个内容为空的字符串。
String s1 = new String();
System.out.println(s1);
//根据指定的字符串内容创建对象。
String s2 = new String("abc");
System.out.println(s2);
//根据指定的字符串数组创建对象。
char[] cArr = {'a','b','c'};
String s3 = new String(cArr);
System.out.println(s3);
//根据指定的字节数组创建对象。
byte[] bArr = {97,98,99,100};
String s4 = new String(bArr);
System.out.println(s4);//abcd
//直接赋值:
String s = "abc";
- String类常用成员方法。
①判断功能、获取、转换、切割等功能。
//判断功能--------------------------------------------------------
String str = "hello";
System.out.println(str.equals("hello"));//比较字符串内容是否相同,区分大小写。
System.out.println(str.equalsIgnoreCase("Hello"));//比较字符串内容是否相同,不区分大小写。
System.out.println(str.startsWith("h"));//判断是否以指定的字符串开头。
System.out.println(str.endsWith("o"));//判断是否以指定的字符串结尾。
System.out.println(str.contains("ll"));//判断是否包含指定字符串。
//获取功能---------------------------------------------------------
System.out.println(str.length());//获取字符串长度。
System.out.println(str.charAt(2));//获取指定索引上的字符。
System.out.println(str.indexOf("l"));//获取指定字符串第一次出现的索引位置。
System.out.println(str.lastIndexOf("l"));//获取字符串最后一次出现的索引位置。
System.out.println(str.substring(2));//从指定索引位置截取字符串,默认到结尾。
System.out.println(str.substring(2,4));//获取指定范围字符串
//转换功能---------------------------------------------------------
char [] cArr = str.toCharArray();//将字符串转成字符数组。
for (int i = 0;i <cArr.length;i++){
System.out.println(cArr[i]);
}
byte[] bArr = str.getBytes();//字符串转字节数组。
for (int i = 0;i<bArr.length;i++){
System.out.println(bArr[i]);
}
System.out.println(str.replace("ll","oo"));//新值替换旧值。
System.out.println(str.toUpperCase());//字符串转大写。
System.out.println(str.toLowerCase());//字符串转小写。
System.out.println(str.valueOf(123));//将int数字转字符串类型数字。
if (str.valueOf(123) instanceof String)
{
System.out.println("String类型");
}
//其他-----------------------------------------------------------
String str1 = "a,b,c";
String[] sArr = str1.split(",");//指定规则切割字符串
for (int i = 0; i < sArr.length; i++){
System.out.println(sArr[i]);
}
String str2 = " a,b,c ";
System.out.println(str2.trim());//去除字符串两端空格。
- StringBuffer类
由于字符串是常量,因此一旦创建,其内容和长度是不可改变的(重新赋值的时候是重新开辟了内存空间,而不是内容与长度的改变)。如果需要对一个字符串进行修改,则只能创建新的字符串。为了对字符串进行修改,Java提供了一个StringBuffer类(也称字符串缓冲区)。
StringBuffer类和String类最大的区别在于它的内容和长度都是可以改变的。StringBuffer类似一个字符容器,当在其中添加或删除字符时,并不会产生新的StringBuffer对象。
常用方法:
StringBuffer sb = new StringBuffer();//创建内容为空的字符串缓冲区对象。
sb.append("a");//添加数据
sb.append("b");
sb.append("c");
sb.append("d");
sb.append("e");
System.out.println(sb);
sb.insert(2,"d");//将字符串插入指定索引位置。
System.out.println(sb);
sb.deleteCharAt(0);//删除指定索引处的字符。
System.out.println(sb);
sb.delete(0,1);//删除指定索引范围的字符。
System.out.println(sb);
sb.replace(1,2, "d");//替换指定位置数据,参数1:开始索引,参数2:结束索引,参数3:替换的数据。
System.out.println(sb);
sb.setCharAt(0,'A');//修改指定索引处的字符
System.out.println(sb);
sb.reverse();//反转数据
System.out.println(sb);
String str = sb.toString();//转换为字符串对象。(转换后可调用String类里的方法 *** 作数据)
if (str instanceof String){
System.out.println("String类型");
}
-
StringBuilder类
StringBuilder类也可以对字符串进行修改,StringBuffer类和StringBuilder类的对象都可以被多次修改,并不产生新的未使用对象,成员变量与StringBuffer一样。
与StringBuffer区别:
①线程安全:
StringBuffer:线程安全,StringBuilder:线程不安全。因为 StringBuffer 的所有公开方法都是 synchronized 修饰的,而 StringBuilder 并没有修饰。②缓冲区:
StringBuffer 每次获取 toString 都会直接使用缓存区的 toStringCache 值来构造一个字符串。
StringBuilder 则每次都需要复制一次字符数组,再构造一个字符串。③性能:
StringBuffer 是线程安全的,它的所有公开方法都是同步的,StringBuilder 是没有对方法加锁同步的,所以毫无疑问,StringBuilder 的性能要远大于 StringBuffer。
使用场景:
StringBuffer 适用于用在多线程 *** 作同一个 StringBuffer 的场景,如果是单线程场合 StringBuilder 更适合。 -
System类
这句代码中就使用了System类。System类定义了一些与系统相关的属性和方法,它所提供的属性和方法都是静态的,想要引用这些属性和方法,直接使用System类调用即可。
long time = System.currentTimeMillis();//获取当前系统时间
System.out.println(time);
//System.exit(0);//终止当前正在运行的java虚拟机。
Properties prop = System.getProperties();//取得当前系统属性。
System.out.println(prop);
String name = System.getProperty("os.name");//取得当前指定系统属性。
System.out.println(name);
int[] arr1 = {1,2,3,4,5,6,7,8};
int[] arr2 = new int[8];
//(复制数组)参数1:数据源,参数2:源数组起始索引,参数3:目标数组,参数4:目标数组起始索引,参 int[] arr1 = {1,2,3,4,5,6,7,8};
int[] arr2 = new int[8];
System.arraycopy(arr1,0,arr2,0,3);
for (int i = 0;i< arr2.length;i++)
System.out.println(arr2[i]);
- Runtime类
Runtime类用于表示虚拟机运行时的状态,它用于封装JVM虚拟机进程。每次使用java命令启动虚拟机都对应一个Runtime实例,并且只有一个实例,因此在Runtime类定义的时候,它的构造方法已经被私有化了(单例设计模式的应用),对象不可以直接实例化。若想在程序中获得一个Runtime实例,只能通过以下方式:
Runtime run = Runtime.getRuntime();
由于Runtime类封装了虚拟机进程,因此,在程序中通常会通过该类的实例对象来获取当前虚拟机的相关信息。
Runtime rt = Runtime.getRuntime();//获取Runtime对象。
//rt.exec("notepad.exe");//执行dos命令。
System.out.println(rt.freeMemory());//获取虚拟机空闲内存。
System.out.println(rt.maxMemory());//获取虚拟机最大可用内存。
System.out.println(rt.totalMemory());//获取虚拟机总内存
System.out.println(rt.availableProcessors());//获取虚拟机处理器个数
- Math类
提供了大量的静态方法方便实现数学计算,求绝对值、最大值、最小值等。
System.out.println(Math.abs(-1));//求绝对值
System.out.println(Math.ceil(8.2));//向上取整
System.out.println(Math.floor(7.9));//向下取整
System.out.println(Math.round(4.5));//四舍五入
System.out.println(Math.max(3,4));//计算两个数的最大值
System.out.println(Math.min(3,4));//计算两个数的最小值
System.out.println(Math.sqrt(4));//开平方
System.out.println(Math.pow(2,3));//计算指数函数
System.out.println(Math.random());//获取0.0~1.0之间随机小数(不包含1.0)
- Random类
java.util中的Random类,可以在指定范围内随机产生数字。
构造方法:
Random r = new Random();//创建随机数对象
int num = r.nextInt(10);
System.out.println(num);
Random r1 = new Random(5);//根据指定种子创建随机数对象
int num1 = r1.nextInt(10)+10;//可通过+10表示获取10-20范围的随机数
System.out.println(num1);
- 日期时间类
//Instant,时间元年:1970年1月1日 0点0分0秒,世界时间,与国内时差8小时。
//Instant i1 = Instant.now();
System.out.println(Instant.now());//获取当前系统时间。
System.out.println(Instant.ofEpochSecond(60));//根据时间元年过了指定秒数获取对象
System.out.println(Instant.ofEpochMilli(1000*60));//根据时间元年过了指定毫秒数获取对象
Instant instant = Instant.parse("1970-01-01T00:01:00.1Z");
System.out.println(instant);//根据字符串时间获取对象
System.out.println(Instant.from(instant));//根据指定时间获取对象。
System.out.println(instant.getEpochSecond());//获取秒数
System.out.println(instant.getNano());//抛开整秒不算,获取纳秒
②其他时间、日期类
LocalDate、LocalTime、LocalDateTime常用方法使用。
public static void method01(){
//获取日期对象
LocalDate d = LocalDate.now();//获取当前系统时间日期对象。
System.out.println(d);
System.out.println(LocalDate.parse("2022-03-08"));//根据字符串日期获取对象。
System.out.println(LocalDate.of(2022,3,12));//根据指定年月日获取日期对象。
DateTimeFormatter pattern=DateTimeFormatter.ofPattern("yyyy年MM月dd日");
System.out.println(d.format(pattern));//根据指定格式转为字符串
System.out.println();
}
public static void method02(){
//获取日期字段
LocalDate d = LocalDate.now();//获取当前系统时间日期对象。
System.out.println(d);
System.out.println(d.getYear());//获取年份
System.out.println(d.getMonthValue());//获取月份
System.out.println(d.getDayOfMonth());//获取日期
}
public static void method03(){
//判断相关
LocalDate d1 = LocalDate.of(2024,3,12);
LocalDate d2 = LocalDate.of(2022,3,11);
LocalDate d3 = LocalDate.of(2022,3,11);
System.out.println(d1.isBefore(d2));//判断是否在指定日期之前
System.out.println(d1.isAfter(d2));//判断是否在指定日期之后
System.out.println(d2.isEqual(d3));//判断指定日期是否相同
System.out.println(d1.isLeapYear());//判断是否是润年
}
public static void method04(){
//增减日期
LocalDate d1 = LocalDate.of(2024,3,12);
System.out.println(d1.plusYears(1));//增加或减少年份(正数向后加、负数向前减)
System.out.println(d1.plusMonths(1));//增加或减少月
System.out.println(d1.plusDays(1));//增加或减少日
}
public static void method05(){
//增减日期
LocalDate d1 = LocalDate.of(2024,3,12);
System.out.println(d1.minusYears(1));//增加或减少年份(正数向前减、负数向后加)
System.out.println(d1.minusMonths(1));//增加或减少月
System.out.println(d1.minusDays(1));//增加或减少日
}
public static void method06(){
//修改日期
LocalDate d1 = LocalDate.of(2024,3,12);
System.out.println(d1.withYear(2022));//年
System.out.println(d1.withMonth(1));//月
System.out.println(d1.withDayOfMonth(1));//日
}
//LocalTime类,包含时分秒,与LocalDate类似
public static void method07() {
LocalTime time = LocalTime.now();
System.out.println(LocalTime.now());
System.out.println(LocalTime.of(10,10,10));
DateTimeFormatter pattern= DateTimeFormatter.ofPattern("HH时mm分ss秒");
System.out.println(time.format(pattern));
System.out.println(time.getHour());
System.out.println(time.plusHours(1));
}
//LocalDateTime类
public static void method08() {
LocalDateTime time = LocalDateTime.now();
System.out.println(time);
System.out.println(LocalDateTime.of(2022,10,10,10,10,10));
DateTimeFormatter pattern= DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");
System.out.println(time.format(pattern));
System.out.println(time.getYear());
LocalDate t1 = time.toLocalDate();//对象转换年月日
LocalTime t2 = time.toLocalTime();//对象转换时分秒
System.out.println(t1);
System.out.println(t2);
}
//Duration类:时间间隔对象
public static void method09() {
LocalTime time1 = LocalTime.of(1,1,1);
LocalTime time2 = LocalTime.of(2,2,2);
Duration duration = Duration.between(time1,time2);
System.out.println(duration.toHours());//小时
System.out.println(duration.toMinutes());//分钟
System.out.println(duration.toMillis());//毫秒
System.out.println(duration.toNanos());//纳秒
}
//Period类:日期间隔对象
public static void method10() {
LocalDate d1 = LocalDate.of(2022,8,8);
LocalDate d2 = LocalDate.of(2023,9,9);
Period period= Period.between(d1, d2);
System.out.println(period.getYears());//年
System.out.println(period.getMonths());//月
System.out.println(period.getDays());//日
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)