学习内容
4.1、数组
4.2、字符串
4.3、StringBuffer类
学习产出
4.1 数组
数组的特征: 一组数据或变量(集合)、 类型都相同、每个变量称为元素;通过数组名、下标获取其中每个元素的值。
4.1.1.一维数组
定义 一般形式: 数据类型 数组名【】 = mew 数据类型【数组容量】
int scores[] = new int[10]
or
int[] scores = new int[10]
数组对应一段连续的内存单元、数组名对应首地址,下标访问各变量。
初始化 一般形式: 数据类型 数组名[ ] = { 值1, 值2, … , 值n};
int scores[] = {
88, 77, 81, 79, 91, 53, 66, 78, 84, 70};
//【】内不用指定数组容量
数组名.length用于获取数组容量!!!
3.1.2. 多维数组
我们用的较多的是二维数组,二维数组就是有行有列的数组。需要用到双重循环对其赋值或者访问!
4.2 字符串
- .字符组成的序列, 双引号括起来;
- 用得非常多的一种类型、引用类型; 因此,字符串变量是对象!
- java.lang 包中, 但一般不用在程序的头部使用 import java.lang;
- 一个字符串,其实就是一个 字符类型的数组。
- .字符串变量
// s1 等于 s2 吗?s2等于s3吗?s3等于s1吗?
public class Tester {
public static void main(String[] args) {
String s1 = new String("Hello");
String s2 = "Hello";
String s3 = "Hello";
System.out.println("s1==s2? "+ (s1==s2));
System.out.println("s2==s3? "+ (s2==s3));
System.out.println("s1==s3? "+ (s1==s3));
}
}
3.2.1 字符串的构造方法
构造方法1: String()
String s = new String();
s = “this is a test.";
构造方法2: String(String s)
String s2 = new String("this is a string");
构造方法3: String(char a[])
char[] arr3 = {
'a', 'b', 'c'};
String s5 = new String( arr3 );
3.2.2 字符串的常用方法
方法 | 说明 |
---|---|
length() | 取得字符串的字符长度 |
equals() | 判断两个字符串中的字符是否等于 |
toLowerCase() | 转换字符串中的英文字符为小写 |
toUpperCase() | 转换字符串中的英文字符为大写 |
特别强调:字符串比较可以比较 变量的地址值, 也可以比较变量的 内容(串)。
3.2.3 字符串的转换
1)字符串==>数值
Int x = Integer.parseInt(str);
float n = Integer.parseFloat(str);
Double b = Double.valueOf(str).doubleValue();
2)数值==>字符串
String.valueOf( 各类型数值变量 or 常量)
例如:String str = String.valueOf(124.345);
String s2 = String.valueOf(3000);
3)字符串 ==> 字节数组
byte b[ ] = 字符串对象.getBytes();
例如: byte b[ ] = “this is a string”.getBytes();
4)字节数组 => 字符串
public class Tester {
public static void main(String[] args) {
byte[] bts = {
1,65,98,4,5};
String str = new String(bts, 1, 2);
System.out.println(str); // 输出什么?
byte[] en = "welikejava".getBytes();
String str2 = new String(en, 2, 4);
System.out.println(str2); // 输出什么?
byte[] cn = "我们喜欢Java".getBytes();
String str3 = new String(cn, 6, 5);
System.out.println(str3); // 输出什么?
}
}
运行结果:
Ab
like
欢Jav
3.2.4 StringTokenizer字符分析器
StringTokenizer 类, 来自 java.util 包中,其对象被称为字符分析器。
构造方法:
StringTokenizer(String str, String delimeter)
将 str 字符串封装到一个对象中, 分隔符由 delimeter 变量指定,可指定多个字符。
例如:
String str = “this is a test. Please test your codes.”;
StringTokenizer token = new StringTokenizer(str, “ ”);
// token对象称为字符分析器,将分析str字符串,采用 空格 作为分析时的分隔符号。
常用方法:
- hasMoreTokens() 检测被分析的字符串中是否还有语言符号,有则返回true,否则false,多用在循环的条件中;
- nextToken() 逐个获取被分析字符串中的语言符号;
- countTokens() 计算总共调用了nextToken方法的次数,可统计出解析出来的语言符号的个数。
例如: 将如下字符串中的 单词 全部找出来 ---- 去掉空格和句点符号。
String str = "this is a test. Please test your code. After the test, you can release you program. ";
常规办法: 可以利用 String 类中的 split 方法,将每个单词(又称为Token,语言符号)或标点符号,分割存放到一个String[ ]中,然后针对数组循环,碰到那些符号的,跳过。
字符分析器:
import java.util.StringTokenizer;
public class Tester {
public static void main(String[] args) {
String str = "this is a test. Please test your code. After the test, you can release you program. ";
StringTokenizer token = new StringTokenizer(str, ". ,"); // 三种符号,作为分隔符
while(token.hasMoreTokens()){
String s = token.nextToken();
System.out.println(s);
}
}
}
3.2.5 正则表达式
正则表达式的特点:
- 位于java.util.regex 包中;
- 是一种可以用于模式匹配和替换的规范;
- 由普通的字符、特殊字符组成的文字模式;该模式用来描述在查找文字主体时待匹配的一个或多个字符串;
- 正则表达式将某个字符模式与所搜索的字符串进行匹配;
- 多用于在文本中搜索、替换、析出有价值的信息。例如:当你从网上爬取一些网页后,希望将网页中的有用信息摘取出来;
- 构成正则表达式的一些字符
常用的正则表达式!!
正则表达式的应用:
A. 模式类: java.util.regex 包中 Pattern
Pattern类提供了一个 compile() 类方法 ( 类名.方法名()
调用),用于编译一个正则表达式,然后初始化创建出一个模式对象。 例如: Pattern p =
Pattern.compile(regx); // regx 是一个正则表达式
B. 匹配类: java.util.regex 包中 Matcher
利用Pattern的对象 p.matcher(“要解析的字符串”) 来创建出一个 Matcher 的 对象 m。然后利用m.find()
和m.group()就可以解析出匹配正则表达式的字符串。
C. 使用Pattern、Matcher类及正则表达式,来解析数据
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Tester {
public static void main(String[] args) {
Pattern p; //模式对象
Matcher m; //匹配对象
String regex = "(http://|www)\56?\\w+\56{1}\\w+\56{1}\\p{Alpha}+";
p = Pattern.compile(regex); //初始化模式对象
String s = "新浪:www.sina.cn,央视:http://www.cctv.com";
m = p.matcher(s); //得到检索s的匹配对象m
while(m.find()) {
String str = m.group();
System.out.println(str);
}
}
}
运行结果:
4.3 StringBuffer类
能够实现对字符串中某个字符的插入、修改、删除、替换等操作。
public class Tester {
public static void main(String[] args) {
StringBuffer sb = new StringBuffer();
sb.append("123");
sb.append("456");
sb.append("789");
System.out.println(sb.toString());
}
}
//123456789
总结
这一章节的知识相比就不是那么陌生了,与c语言和python都有很多相似之处,道理也都是相通的,学起来感觉轻松很多。
如有不足,欢迎各位大佬指正~