Java 11
常用类
练习
import java.util.Scanner;
/*
字符串反转
举例:键盘录入”abc” 输出结果:”cba”
*/
public class StringTest1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String str = sc.next();
//将字符串转字符数组
char[] chars = str.toCharArray(); //['a','b','c']
for (int front = 0, end = chars.length - 1; front < end; front++, end--) {
char tmp = chars[end];
chars[end] = chars[front];
chars[front] = tmp;
}
//['c','b','a']
String resStr = new String(chars);
System.out.println("反转后:" + resStr);
}
}
/*
统计大串中小串出现的次数(作业)
举例:在字符串” woaijavawozhenaijavawozhendeaijavawozhendehenaijavaxinbuxinwoaijavagun”中java出现了5次
*/
public class StringTest2 {
public static void main(String[] args) {
String bigStr = "woaijavawozhenaijavawozhendeaijavawozhendehenaijavaxinbuxinwoaijavagun";
int counts = 0;
String smallStr = "java";
while (bigStr.contains(smallStr)){ // 4 8
counts++;
bigStr = bigStr.substring(bigStr.indexOf(smallStr)+smallStr.length());
}
System.out.println("共计找小字符串 "+smallStr+" 出现 "+counts+"次");
}
}
1、StringBuffer
String与StringBuffer的区别
我们如果对字符串进行拼接操作,每一次拼接都会构建一个新的String对象,既耗时又浪费空间,而StringBuffer就可以解决这个问题
StringBuffer是线程安全的可变字符序列
概述
StringBuffer: 可变的字符序列,可以看作一个存储字符的一个容器
构造方法:
public StringBuffer()
public StringBuffer(int capacity)
public StringBuffer(String str)
public class StringBufferDemo1 {
public static void main(String[] args) {
//public StringBuffer() 创建默认大小的StringBuffer容器
// StringBuffer sb1 = new StringBuffer();
// //获取默认StringBuffer容器的大小
// System.out.println("StringBuffer默认的容量大小为:" + sb1.capacity()); // 16
// System.out.println("sb1: " + sb1);
// System.out.println("StringBuffer实际存储字符数量:"+ sb1.length()); // 0
//public StringBuffer(int capacity) 创建指定大小容量的StringBuffer
// StringBuffer sb2 = new StringBuffer(50);
// System.out.println("StringBuffer默认的容量大小为:" + sb2.capacity()); // 50
// System.out.println("sb1: " + sb2);
// System.out.println("StringBuffer实际存储字符数量:" + sb2.length()); // 0
//public StringBuffer(String str) 创建默认大小的StringBuffer容器,其中存储了一个字符串
StringBuffer sb3 = new StringBuffer("hello");
System.out.println("StringBuffer默认的容量大小为:" + sb3.capacity()); // 21
System.out.println("sb1: " + sb3);
System.out.println("StringBuffer实际存储字符数量:" + sb3.length()); // 5
}
}
StringBuffer中的成员方法:
添加功能
public StringBuffer append(String str)
public StringBuffer insert(int offset,String str)
删除功能
public StringBuffer deleteCharAt(int index)
public StringBuffer delete(int start,int end)
替换功能
public StringBuffer replace(int start,int end,String str)
反转功能
public StringBuffer reverse()
public class StringBufferDemo2 {
public static void main(String[] args) {
StringBuffer sb = new StringBuffer();
System.out.println("sb: " + sb);
System.out.println("------------------------");
//public StringBuffer append(String str) 在StringBuffer末尾处添加新的字符串
// StringBuffer sb2 = sb.append(100);
// System.out.println("sb: "+sb);
// System.out.println("sb2: "+sb2);
// System.out.println(sb==sb2);
sb.append(100);
sb.append(12.343);
sb.append(true);
System.out.println("sb: " + sb);
System.out.println("------------------------");
//public StringBuffer insert(int offset,String str) 在StringBuffer指定位置中添加字符串
//10012.343true
sb.insert(10,"java");
System.out.println("sb: " + sb);
System.out.println("------------------------");
//public StringBuffer deleteCharAt(int index) 指定索引删除StringBuffer某一个字符
//10012.343tjavarue
sb.deleteCharAt(5);
System.out.println("sb: " + sb);
System.out.println("------------------------");
//public StringBuffer delete(int start,int end) 指定开始和结束索引,删除StringBuffer一部分字符
//10012343tjavarue
sb.delete(9,13); //[start, end)
System.out.println("sb: " + sb);
System.out.println("------------------------");
//public StringBuffer replace(int start,int end,String str) 使用字符串替换StringBuffer一部分字符
//10012343true
sb.replace(6,9,"李刚");
System.out.println("sb: " + sb);
System.out.println("------------------------");
//public StringBuffer reverse()
//100123李刚rue
sb.reverse();
System.out.println("sb: " + sb);
System.out.println("------------------------");
}
}
/*
public String substring(int start)
public String substring(int start,int end)
*/
public class StringBufferDemo3 {
public static void main(String[] args) {
StringBuffer sb1 = new StringBuffer("hello world java hadoop");
//public String substring(int start)
String s1 = sb1.substring(4);
System.out.println("sb1: "+sb1);
System.out.println("s1: "+s1);
//public String substring(int start,int end)
String s2 = sb1.substring(6, 11);
System.out.println("sb1: "+sb1);
System.out.println("s2: "+s2);
}
}
String和StringBuffer的相互转换
数据类型之间相互转换的场景:
1、方法传参所需的类型与我自己值的类型不一样
2、需要借助其它类型中的方法完成某功能
public class StringBufferDemo4 {
public static void main(String[] args) {
String s1 = "hello";
//String -> StringBuffer
StringBuffer sb1 = new StringBuffer(s1);
//StringBuffer->String
String s2 = sb1.substring(0);
String s3 = sb1.toString();
}
}
例题
1
/*
把数组拼接成一个字符串
*/
public class StringBufferTest1 {
public static void main(String[] args) {
int[] arr = {11,22,33,44,55}; // "[11,22,33,44,55]"
StringBuffer sb = new StringBuffer("[");
for(int i=0;i<arr.length;i++){
if(i==arr.length-1){
sb.append(arr[i]).append("]");
}else {
sb.append(arr[i]).append(",");
}
}
String res = sb.toString();
System.out.println(res);
}
}
2
/*
判断一个字符串是否是对称字符串
例如"abc"不是对称字符串,"aba"、"abba"、"aaa"、"mnanm"是对称字符串
*/
public class StringBufferTest2 {
public static void main(String[] args) {
String s = "abba";
//定义一个标志变量
boolean flag = true;
for(int front=0,end=s.length()-1;front<end;front++,end--){
char frontChar = s.charAt(front);
char endChar = s.charAt(end);
if(frontChar!=endChar){
System.out.println("该字符串不是一个对称字符串....");
flag = false;
break;
}
}
if(flag){
System.out.println("该字符串是一个对称字符串!!");
}
}
}
3
/*
看程序写结果:
String作为参数传递
StringBuffer作为参数传递
*/
public class StringBufferTest3 {
public static void main(String[] args) {
// String s1 = "hello";
// String s2 = "world";
// System.out.println("s1: " + s1 + ", s2: " + s2); // s1: hello,s2: world
// change(s1,s2);
// System.out.println("s1: " + s1 + ", s2: " + s2); // s1: hello,s2: world
StringBuffer sb1 = new StringBuffer("hello");
StringBuffer sb2 = new StringBuffer("world");
System.out.println("sb1: "+sb1+", sb2: "+sb2); // sb1: hello, sb2: world
change(sb1,sb2);
System.out.println("sb1: "+sb1+", sb2: "+sb2); // sb1: hello, sb2: worldworld
}
public static void change(StringBuffer sb1,StringBuffer sb2){
sb1 = sb2;
sb1.append(sb2);
System.out.println("sb1: "+sb1+", sb2: "+sb2); // sb1: worldworld, sb2: worldworld
}
public static void change(String s1,String s2){
s1 = s2;
s2 = s1+s2;
System.out.println("s1: " + s1 + ", s2: " + s2); // s1: world,s2: worldworld
}
}
2、System类
概述
System: 是和系统操作相关的类
public static void gc() 垃圾回收
public static void exit(int status) 强制退出程序
public static long currentTimeMillis()
public class SystemDemo1 {
public static void main(String[] args) {
// for(int i=0;i<=10;i++){
// if(i==5){
// System.exit(1);
// }
// System.out.println(i);
// }
//
// System.out.println("hello world");
//public static long currentTimeMillis() 获取当前的时间戳
//从1970年开始,1月1日0点0分0秒
// System.out.println(System.currentTimeMillis());
//....
}
}
3、Data类
概述
Date: java为了描述日期,提供了一个Date类
构造方法:
Date() 分配一个 Date对象,并初始化它,以便它代表它被分配的时间,测量到最近的毫秒。
Date(long date) 分配一个 Date对象,并将其初始化为表示自称为“时代”的标准基准时间以后的指定毫秒数,即1970年1月1日00:00:00 GMT。
SimpleDateFormat: java为了格式化日期提供的一个类
构造方法:
SimpleDateFormat(String pattern) 使用给定模式 SimpleDateFormat并使用默认的 FORMAT语言环境的默认日期格式符号。
//需求:将时间戳转成指定的格式输出
public class DateDemo1 {
public static void main(String[] args) throws Exception{
// Date d1 = new Date(); // 获取当前时间日期
// System.out.println(d1); // Sat Sep 28 16:01:22 CST 2024
// Date(long date) 将毫秒级别的时间戳转成Date类型对象
Date d2 = new Date(1727510083386L);
System.out.println(d2); // Sat Sep 28 15:54:43 CST 2024
//xxxx年xx月xx日 xx时xx分xx秒
//xxxx-xx-xx xx:xx:xx
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 hh时mm分ss秒 a");
String time = sdf.format(d2); // Date -> String
System.out.println(time);
Date d3 = sdf.parse("2024年09月28日 03时54分43秒 下午");// String -> date
System.out.println(d3);
}
}
4、包装类
包装类:
java针对每一个基本数据类型都提供了与之对应的引用数据类型
byte Byte
short Short
int Integer
long Long
float Float
double Double
boolean Boolean
char Character
public class IntegerDemo1 {
public static void main(String[] args) {
int a = 10;
//获取int类型的最大值
System.out.println(Integer.MAX_VALUE);
// Integer i = new Integer(100);
// Integer i = new Integer("100"); // "100" -> 100
// System.out.println(i);
Integer i = 100; // 自动装箱
//当包装类做运算的时候,会自动将其中包装的值拆出来进行运算
System.out.println(i+100); // 自动拆箱
System.out.println("--------------------------------");
//将字符串转int类型
int i1 = Integer.parseInt("100"); // String -> int
System.out.println(i1);
Integer i2 = Integer.valueOf("100"); // String -> Integer
System.out.println(i2);
Integer i3 = Integer.valueOf(100); // int -> Integer
Integer i4 = 200;
String s1 = i4.toString(); // Integer -> String
String s2 = String.valueOf(100); // int -> String
System.out.println("--------------------------------");
//Character是char的包装类
Character c1 = 'a'; // 自动装箱
Character c2 = new Character('b');
Character c3 = new Character('8');
/*
public static boolean isUpperCase(char ch)
public static boolean isLowerCase(char ch)
public static boolean isDigit(char ch)
public static char toUpperCase(char ch)
public static char toLowerCase(char ch)
*/
System.out.println(Character.isUpperCase('b'));
System.out.println(Character.isLowerCase('b'));
System.out.println(Character.isDigit('e')); // 判断字符是否是数字
System.out.println(Character.isDigit('9'));
System.out.println(Character.toUpperCase('m'));
System.out.println(Character.toLowerCase('P'));
}
}
标签:Java,String,StringBuffer,System,初学,day11,println,public,out
From: https://www.cnblogs.com/qianzhiqiang798/p/18469969