public class StringDemo01 {
public static void main(String[] args) {
// 1. 使用直接赋值的方式获取一个字符串对象
String s1 = "abc";
System.out.println(s1); // abc
// 2. 使用new的方式获取一个字符串对象
// 空参构造: 可以获取一个空白的字符串对象
String s2 = new String();
System.out.println("@"+s2+"!"); // @!
// 没啥用: 传递一个字符串, 根据传递的字符串内容再创建一个新的字符串对象
String s3 = new String("abc");
System.out.println(s3); // abc
// 传递一个字符数组, 根据字符数组的内容再创建一个新的字符串对象
char[] chs = {'a', 'b', 'c'};
String s4 = new String(chs);
System.out.println(s4); // abc
// 需求: 修改字符串内容, abc->Qbc
// abc -> {'a', 'b', 'c'} -> {'Q', 'b', 'c'} -> "Qbc"
// 传递一个字节数组, 根据字节数组的内容再创建一个新的字符串对象
// 应用场景: 再网络当中传输的数据其实都是字节信息
// 一般要把字节信息进行转换, 转成字符串, 此时就要用到这个构造了
byte[] bytes = {97, 98, 99};
String s5 = new String(bytes);
System.out.println(s5); // abc
}
}
当使用双引号直接赋值时, 系统会检查该字符串在串池(StringTable, jdk7之后在堆内存中)中是否存在
Demo02
public class StringDemo02 {
public static void main(String[] args) {
String s1 = new String("abc");
String s2 = "abc";
String s3 = "Abc";
// 1. == 比较
// 基本数据类型: 比的是数据值
// 引用数据类型: 比的是地址值
System.out.println(s1 == s2); // false
// 2. 比较字符串对象的内容是否相等
boolean res1 = s1.equals(s2);
System.out.println(res1); // true
// 3. 比较字符串对象的内容是否相等, 忽略大小写
boolean res2 = s1.equalsIgnoreCase(s3);
System.out.println(res2); // true
}
}
Demo03
import java.util.Scanner;
public class StringDemo03 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str1 = sc.next(); // 本质是new String(...);
String str2 = "abc";
System.out.println(str1 == str2); // false
}
}
public class StringDemo04 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s1 = sc.next();
for (int i = 0; i < s1.length(); i++) {
System.out.println(s1.charAt(i));
}
}
}
package com.heima.string;
public class StringDemo05 {
public static void main(String[] args) {
int[] arr = {1, 2, 3};
System.out.println(arrToString(arr));
}
public static String arrToString(int[] nums)
{
if(nums == null){
return "";
}
if(nums.length == 0){
return "[]";
}
String ret = "[";
for (int i = 0; i < nums.length; i++) {
if(i == 0) {
ret += nums[i];
}else{
ret += ", "+nums[i];
}
}
ret += "]";
return ret;
}
}
String substring(int beginIndex, int endIndex) 截取
注意点: 区间是左闭右开 [)
String substring(int beginIndex) 截取到末尾
public class StringDemo06 {
public static void main(String[] args) {
String phone = "13112349468";
String newPhone = phone.substring(0, 3)+"****"+phone.substring(7);
System.out.println(newPhone); // 131****9468
}
}
String replace(CharSequence oldValue, CharSequence newValue) 替换
public class StringDemo07 {
public static void main(String[] args) {
String str = "TMD, MTD";
System.out.println(str.replace("TMD", "***"));
}
}
public class StringBuilderDemo1 {
public static void main(String[] args) {
// 1. 创建对象
StringBuilder sb = new StringBuilder();
// 2. 添加元素
sb.append(1);
sb.append(2.3);
sb.append(true);
// System.out.println(sb); // 12.3true
// 3. 反转
sb.reverse();
// System.out.println(sb); // eurt3.21
// 4. 获取长度
int len = sb.length();
// System.out.println(len); // 8
// 5. StringBuilder -> String
String s = sb.toString();
}
}
import java.util.StringJoiner;
public class StringJoinerDemo01 {
public static void main(String[] args) {
int[] nums = {1, 2, 3};
StringJoiner sj = new StringJoiner(", ", "[", "]");
for (int i = 0; i < nums.length; i++) {
sj.add(nums[i]+"");
}
System.out.println(sj);
}
}
import java.util.Scanner;
public class Demo01 {
public static void main(String[] args) {
/**
* 阿拉伯数字转为罗马数字
* 1. 数字范围[1, 9]
*/
String[] vis = {"", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"};
Scanner sc = new Scanner(System.in);
String s = sc.next();
StringBuilder ans = new StringBuilder();
for (int i = 0; i < s.length(); i++) {
int num = s.charAt(i) - '0';
ans.append(vis[num]+" ");
}
System.out.println(ans);
}
}
public class Demo02 {
public static void main(String[] args) {
/**
* 调整字符串
* 给定两个字符串A和B
* A的旋转操作就是将A最左边的字符移动到最右边
* 如果若干次调整后, A能变成B, 则返回true, 反之返回false
*/
String a = "abcde";
String b = "cdeae";
boolean flag = false;
for (int i = 1; i < a.length(); i++) {
char[] chars = a.toCharArray();
char ch = chars[0];
for (int j = 1; j < chars.length; j++) {
chars[j-1] = chars[j];
}
chars[chars.length-1] = ch;
a = new String(chars);
if(a.equals(b)){
flag = true;
System.out.println("Yeah!");
break;
}
}
if(!flag){
System.out.println("Noo!");
}
}
}
黑马程序员. 阿玮Java零基础
https://gitee.com/yu-ba-ba-ba/awJava