目录
1.字符串 String
1.1 不可变性(Immutability)
1.2 字符串常用方法
1.3 字符串常用方法举例
1.4 字符串 String——编程练习
2.基本类型与包装类型
2.1 包装类型 ( Wrapper Class)
2.2 基本类型和包装类型的转换:
2.3 包装类的作用
2.4 包装类——编程练习
1.字符串 String
String 类是一个非常核心的类,用于表示和操作字符序列。
由于其不可变性和广泛的应用,了解String类的特性和常用方法对于任何Java程序员来说都是必要的。
下面,我会概述String类的一些关键特性和常用操作。
1.1 不可变性(Immutability)
不可变性:一旦String对象被创建,它的值就不能被改变。如果需要对字符串进行修改,实际上是创建了一个新的String对象。这种设计有助于缓存字符串和重用字符串常量,也有利于多线程环境下的安全性。
创建字符串
1.直接赋值:使用双引号创建字符串,
例如:String s = "Hello";
2.通过构造器:使用new关键字创建一个新的字符串对象,例如:String s = new String("Hello");
1.2 字符串常用方法
String 类提供了大量方法来进行字符串的操作,以下是一些最常用的方法:
length():返回字符串的长度。
charAt(int index):返回指定索引处的字符。
substring(int beginIndex, int endIndex):返回一个新字符串,它是此字符串的一个子字符串。
equals(Object another):比较字符串的内容是否相等。
equalsIgnoreCase(String another):忽略大小写比较字符串的内容是否相等。
contains(CharSequence s):判断字符串是否包含指定的字符序列。
indexOf(int ch):返回指定字符在此字符串中第一次出现处的索引。
toLowerCase() 和 toUpperCase():将字符串转换为全部小写或全部大写。
trim():返回字符串的副本,忽略前导空白和尾部空白。
replace(CharSequence oldChar, CharSequence newChar):返回一个新的字符串,它是通过用newChar替换此字符串中出现的所有oldChar得到的。
1.3 字符串常用方法举例
1. 字符串拼接
使用加号可以直接拼接字符串。
示例:
String s = "阿发" + "你好";
2. 字符串长度
String s = "阿发nihao";
int n = s.length();
注意:
中文字符和英文字符都只占1个字符
3. 空字符串:长度为0的字符串
String s = "";
int n = s.length();
注意:
空字符串和null是两回事
空字符串是一个正常的字符串对象。null不指向任何对象。
4. 子串
String s = "阿发nihao";
String sub = s.substring(1, 4); // 1,2,3, 不含4
注意:
substring(beginIndex, endIndex) 不含endIndex
5. 判断内容是否相同
String s1 = new String("nihao");
String s2 = new String("nihao");
if(s1.equals(s2))
{
System.out.println("相同");
}
注:
- 不能写成 if ( s1 == s2 ) {}
6. 比较大小:按字典序比较
例如: 一个班有30个学生,按字母顺序排序。。
String s1 = "liming";
String s2 = "lilei";
if( s1.compareTo( s2 ) < 0)
System.out.println(s1 + "位于前面");
else
System.out.println(s2 + "位于前面");
注:忽略大小写的比较,用compareToIgnoreCase()
7. 格式化
String s = String.format("姓名:%s, 年龄: %d , 身高:%.2f"
, “你的名字", 20, 1.75);
注:
String.format()是一个静态方法
格式化时:%s 对应字符串
%d 对应整数
%.2f 表示显示2位小数
8. 查找 indexOf
如果有这个子串,则返回位置索引;否则返回-1
String s = "China is a great country";
int pos = s.indexOf("great");
if(pos <0)
{
System.out.println("没找到");
}
9. 前缀后缀
startsWith() : 判断前缀
endsWith(): 判断后缀
示例:
String filename = "test.mp4";
if( filename.endsWith("mp4") )
{
System.out.println("支持此视频格式!");
}
1.4 字符串 String——编程练习
给定一个由多个单词组成的字符串,单词之间由一个或多个空格分隔。你的任务是编写一个Java程序来满足以下要求:
移除字符串两端的空格。
将字符串中连续的多个空格替换为单个空格。
找出字符串中最长的单词,并将其转换为大写。
打印修改后的字符串和最长单词到控制台。
输入:" Java and Python are popular programming languages "
输出:
修改后的字符串:"Java and Python are popular programming languages"
最长单词:Longest Word: "PROGRAMMING"
字符串 String——提示
给定一个由多个单词组成的字符串,单词之间由一个或多个空格分隔。你的任务是编写一个Java程序来满足以下要求:
移除字符串两端的空格。使用trim()方法去除字符串两端的空格
将字符串中连续的多个空格替换为单个空格。split(" +")来分割字符串中的单词(注意正则表达式中的空格和加号,加号表示一个或多个空格),
找出字符串中最长的单词,并将其转换为大写。toUpperCase()方法来转换字符串为大写
打印修改后的字符串和最长单词到控制台。
2.基本类型与包装类型
在Java里面,每一个基本类型都对应一个包装类型
long <=> Long
int <=> Integer
short <=> Short
byte <=> Byte
double <=> Double
float <=> Float
boolean <=> Boolean
Char <=> Character
2.1 包装类型 ( Wrapper Class)
将对应的基本类型封装在内,得到一个类
大概就是这种形式:
class Integer
{
private int value = 0;
... Getter / Setter / 其他方法 ...
}
使用Integer等包装类,都就可以统一用“对象”的思路来处理问题。
所有的类都是Object的子类,Interger也是。
但int, double, boolean...却不是。
所以有了包装类之后,有些地方会方便一些。
2.2 基本类型和包装类型的转换:
Integer a = new Integer(10);
int b = a.intValue();
也可以写得简洁一些(Java支持自动转换)
Integer k = 123;
int m = k;
数值类型可以与String类型转换
例如,
int -> String :
String s = String.valueOf( 123 );
String -> int :
int a = Integer.valueOf("123");
2.3 包装类的作用
为什么要设计这些包装类?
提供一些用于转换的方法
将所有类型统一成 “类”的范围,都是Object的子类。
注:包装类还有许多其他方法,暂不介绍。
2.4 包装类——编程练习
编写一个Java程序,完成以下任务:
创建一个包含各种包装类对象(Integer, Double, Character, Boolean)的数组。
遍历这个数组,对于数组中的每一个元素,执行以下操作:
如果元素是Integer或Double类型,计算并打印其值的二倍。
如果元素是Character类型,判断并打印其是否为字母(使用Character.isLetter()方法)。
如果元素是Boolean类型,打印其相反的值(即,如果是true打印false,反之亦然)。
包装类——参考代码框架
java">public class WrapperClassDemo {public static void main(String[] args) {Object[] myArray = {Integer.valueOf(10),Double.valueOf(2.5),Character.valueOf('a'),Boolean.TRUE};for (Object obj : myArray) {// 在这里实现对数组元素的判断和处理}}
}
在遍历循环中,使用instanceof判断obj的实际类型,并执行相应的操作。记得对于Integer和Double类型,需要进行类型转换才能进行数学运算。