Java程序设计学习笔记【第四篇】数组与字符串

学习内容

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)

扫描二维码关注公众号,回复: 13556847 查看本文章
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 正则表达式

正则表达式的特点:

  1. 位于java.util.regex 包中;
  2. 是一种可以用于模式匹配和替换的规范;
  3. 由普通的字符、特殊字符组成的文字模式;该模式用来描述在查找文字主体时待匹配的一个或多个字符串;
  4. 正则表达式将某个字符模式与所搜索的字符串进行匹配;
  5. 多用于在文本中搜索、替换、析出有价值的信息。例如:当你从网上爬取一些网页后,希望将网页中的有用信息摘取出来;
  6. 构成正则表达式的一些字符
    在这里插入图片描述
    常用的正则表达式!!

正则表达式的应用:

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都有很多相似之处,道理也都是相通的,学起来感觉轻松很多。
如有不足,欢迎各位大佬指正~

猜你喜欢

转载自blog.csdn.net/k1507157/article/details/115348380
今日推荐