四、String、Arrays、Math

四、String、Arrays、Math_第1张图片

  戳我跳到个人主页

  本人码云(建议pc端打开,手机可能会出现字体过小问题。)
  本人会不定期在码云上更新一些算法或数据结构的基础程序,后期也会学习进阶程序,也会更新大厂的面试题。
  如果您有好的建议和想法,欢迎在本人码云相应代码评论区评论哦。希望大家都能在编程这条路上越走越远。也祝看到这篇博客的人,能真正搞懂这方面知识,当然,若有错误,请提出改正,谢谢大家啦。

  本人后续会在这里更新操作系统和计组的笔记,敬请期待!
  有赞必回,评论必回,顺着网线回访!

四、String、Arrays、Math

  • 一.String
    • (1)基础
      • 1.创建
      • 2.字符串的常量池
      • 3.字符串常用方法
      • 4.字符串常见转换方法
      • 5.字符串分割
    • (2)常用方法
      • 1.子串
      • 2.拼接
      • 3.不可变字符串
      • 4.检验字符串是否相等
      • 5.空串与 null 串
      • 6.码点与代码单元
      • 7.构建字符串
  • 二.Arrays
    • 1.概述
    • 2.练习
  • 三.Math

一.String

(1)基础

1.创建

三种构造方法:
[1] public String();	//空字符串
[2] public String( char[] array);//字符数组
[3] public String( byte[] array);//byte数组

一种直接创建:
[4] String str = "Summer";

//first way
String str1 = new String();
--> 空字符串
//second way
char[] a = {'a', 'b', 'c', 'd'};
String str2 = new String(a);
--> abc
//third way
byte[] b = {48,49,50};
String str3 = new String(b);
--> 012
//forth way
String str4 = "Splendid";
--> Splendid



2.字符串的常量池

  • 对于基本数据类型,= =是进行数值的比较
  • 对于引用数据类型,= =是进行地址值的比较
  • 只有直接用双引号创建的字符串才在常量池中!!!

3.字符串常用方法

public int length () 获取字符串长度
public String concat ( String str ) 将当前字符串和参数字符串拼接成新的字符串、并返回
public char charAt ( int index ) 获取指定索引位置的单个字符(从 0开始)
public int indexOf ( String str ) 查找参数字符串在本字符串当中首次出现的索引位置,如果没有返回-1
创建长度为 19 的字符串
String str1 = "Good Bye, Bruce Lee";

获取长度
int amount = str.length();		// 19

将Respect添加到原字符成为一个新的字符串
字符串一旦创建,不可改变,凡是认为改变的时候,一般都是创建了一个新的字符串
String str2 = str1.concat("Respect");

获取 0 号索引位置字符
char ch = str1.charAt(0);		// G

查找 oo 出现的第一个位置
int num = str1.indexOf("oo");	// 1

4.字符串常见转换方法

public char[] toCharArray () 将当前字符串拆分为字符数组作为返回值
public byte[] getBytes () 获得当前字符串底层的字节数组
public String replace ( oldString, newString ) 将所有出现的老字符串替换成为新的字符串,返回替换之后的结果新字符串
创建字符串
String str1 = "Hello";
String str2 = "会不会玩啊!你大爷的!你大爷的!你大爷的!";

通过字符串创建数组
char ch[] = str1.toCharArray();	-->Hello
byte bo[] = str1.getBytes();	-->72 101 108 108 111

替换
String str3 = str1.replace( 'l', 'k' );
String str4 = str1.replace( "Hello", " GoodBye" );
String str5 = str2.replace( "你大爷的!", "***" );

-->
Hekko
GoodBye
会不会玩啊!*********

5.字符串分割

public String[] split ( String regex );

注意:split函数的参数regex是一个正则表达式,不能用英文的点。

String str = "Hello,World,Java,Project";
按照英文逗号分割字符串,放在一个字符串数组里
String []str2 = str.split(",");
--> Hello World Java Project

(2)常用方法

  从概念上说,Java字符串就是Unicode字符序列。例如,串"Java\u2122"由五个Unicode字符J、a、v、a和注册符号TM。Java没有内置的字符串类型,而是在标准Java类库中提供了一个预定义类,很自然地叫String。
每个用双引号括起来的字符串都是String类的一个实例:

String e = "" ; 	//一个空字符串
String greeting = "Hello!" ;

1.子串

String类的substring方法可以从一个较大的字符串提取出一个子串。例如:

String g = "Hello!";
String s = g.substring(0, 3);
--> Hel

substring(2, 6),则复制的是2、3、4、5四个位置,不包含6。

substring有一个优点,容易计算子串的长度。字符串substring(a, b) 的长度是 b - a

2.拼接

与绝大多数程序设计语言一样,Java语言允许使用 + 运算符拼接两个字符串。

String a = "good ";
String b = "morning";
String c = a + b;
--> good morning

当将一个非字符串变量与一个字符串进行拼接后,将被转换为一个字符串,这种特性通常应用于输出语句中。

int age = 18;
String str = "PG" + age;
--> PG18
// 字符串的内容也可以由数字开头

如果需要把多个字符串放在一起,用一个定界符分隔,可以使用静态join方法

String a = String.join("/","S","M","L","XL");
--> S/M/L/XL

3.不可变字符串

String类中没有用于修改字符串的方法,所以在Java文档中称String类对象为不可变字符串。
但是可以用substring加法运算符拼接,进行改变字符串内容,这相当于修改字符串变量,让他引用另一个字符串。

例如:将greeting字符串从Hello变到Help!

String a = "Hello";
b = a.substring(0, 3) + "p!";
--> Help!

4.检验字符串是否相等

、可以使用equals方法检测两个字符串是否相等
s.equals(t)
1、如果字符串 s 和字符串 t 的内容相等,则返回 true,否则,则返回false.
2、s 和 t 可以是字符串内容,也可以是字符串字面量,所以下面表达式是合法的。 "Hello".equals ( greeting );

、要想检测两个字符串是否相等,但是不区分大小写,可以用equalsIgnoreCase方法
"jackie".equalsIgnoreCase(JackIe);

一定不要使用= =运算符判断两个字符串是否相等
这个方法只能检验两个字符串是否放置在同一位置上。
当然,放置在同一个位置上的两个字符串必然相等。 但是,完全有可能将多个字符串的拷贝放置在不同的位置上。

String g = "hello";

boolean b1 = "hello".equals ( g );
boolean b2 = "jackie lee".equalsIgnoreCase("Jackie Lee");
--> b1 = true、b2 = true
if ( g == "hello" )
//probably true
if ( g.substring(0, 3) == "hel" )
//probable false
why?
:如果虚拟机始终将相同的字符串共享,就可以使用 == 运算符检验是否相等。
但实际上只有字符串常量是共享的,而 + 或 substring 等操作产生的结果并不是共享的。
因此,千万不要使用 == 运算符检验字符串是否相等,以免在程序上出现糟糕的bug。

什么是字符串常量?马上就会提到

C程序员从不会用 = = 运算符来检验,他们会用strcmp函数,在Java中,compareTo方法与strcmp完全类似,
因此可以这样用:if ( greeting.compareTo ( "Hello" ) == 0 )
不过,使用equals更为清晰。

5.空串与 null 串

空串""是一个长度为0的字符串,可以调用代码检验一个字符串是否为空:

if ( str.length() == 0 )	-->为空
或者
if ( str.equals("") )		-->为空

空串是一个Java对象,有自己的长度(0)内容(空)

不过,String变量还可以放一个特殊的值,null,这表示目前没有任何对象与该对象关联。可以调用,要检查一个字符串是否为null,要使用以下代码:

if ( str == null )
	System.out.println( str + "是毫无意义的字符串" );

判断既不是 null,又不为空时,先判断不是 null

if ( str != null && str.length() != 0 )
	print(str + "既不是null,也不是空字符串");

6.码点与代码单元

Java字符串由char值序列而成,char数据类型是一个采用 UTF-16 编码表示Unicode码点。大多数(目前,不做了解,以后再了解)

7.构建字符串

有时候、需要将小字符串构建成长字符串,使用StringBuilder类。

StringBuilder str = new StringBuilder ("I'm very");

//当每次需要添加一部分内容时,就调用append方法;
str.append(' ');
str.append("Happy");

//在需要构建字符串时,就调用toString方法,将得到一个String对象
String str2 = str.toString();
--> I'm very Happy

二.Arrays

1.概述

一、介绍:
java.util.Arrays是一个与数组相关的工具类
里面提供了大量的静态方法,用来实现数组常见的操作。
二、常用方法:
【1】public static String toString(数组):
打印数组
将参数数组变成字符串(按照默认格式:[元素1,元素2,元素3…])
【2】public static void sort(数组):
按照从小到大对数组的元素进行排序
三、备注:
[1]如果是数值,sort默认升序排序;
[2]如果是字符串,sort按照字母升序;
[3]如果是自定义类型,那么这个自定义的类需要有Comparable或Comparator接口的支持。(今后学习)

int [] array = { 10, 20, 30 };
int [] array2 = { 2, 1, 3, 10, 6 };
String [] array3 = { "Hello", ",", "Java", "!" };int 数组按照默认格式变成字符串
String str = Arrays.toString(array);
-->[10,20,30]

对数组元素排序
Arrays.sort(array2);
--> [1,2,3,6,10]

Arrays.sort(array3);
String str2 = Arrays.toString(array3);
-->[!, ,, Hello, Java]

2.练习

package API;
import java.util.Arrays;

请使用Arrays相关的API,将一个随机字符串中的所有字符升序排列,并倒序打印。

public class Work01Arrays
{
	public static void main(String args[])
	{
		String str = "jsqwjkbxqihjqxn129wu";
		
		升序,sort
		必须是数组,才能用Arrays.sort方法
		String --> 数组,用toCharArray方法
		
		char []ch = str.toCharArray();
		Arrays.sort(ch);	//升序排列
		
		//倒序输出
		for ( int i = ch.length-1; i >= 0; i -- )
			System.out.printf("%c ", ch[i]);
	}
	
}

三.Math

一、概述:
java.util.Math类是数学相关的工具类,
里面提供了大量的静态方法,完成运算。
二、常用静态方法

【1】public static double abs (double num),获取绝对值

【2】public static double ceil (double num),向上取整。12.2–>13

【3】public static double floor ( double num ),向下取整。12.9–>12

【4】public static long round ( double num ),四舍五入。3.6–>4

【5】Math.PI 类似于圆周率的值
四、String、Arrays、Math_第2张图片

你可能感兴趣的:(笔记,java,开发语言)