戳我跳到个人主页
本人码云(建议pc端打开,手机可能会出现字体过小问题。)
本人会不定期在码云上更新一些算法或数据结构的基础程序,后期也会学习进阶程序,也会更新大厂的面试题。
如果您有好的建议和想法,欢迎在本人码云相应代码评论区评论哦。希望大家都能在编程这条路上越走越远。也祝看到这篇博客的人,能真正搞懂这方面知识,当然,若有错误,请提出改正,谢谢大家啦。
本人后续会在这里更新操作系统和计组的笔记,敬请期待!
有赞必回,评论必回,顺着网线回访!
三种构造方法:
[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
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
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
会不会玩啊!*********
public String[] split ( String regex );
注意:
split
函数的参数regex
是一个正则表达式,不能用英文的点。
String str = "Hello,World,Java,Project";
按照英文逗号分割字符串,放在一个字符串数组里
String []str2 = str.split(",");
--> Hello World Java Project
从概念上说,Java字符串就是Unicode字符序列。例如,串"Java\u2122"由五个Unicode字符J、a、v、a和注册符号TM。Java没有内置的字符串类型,而是在标准Java类库中提供了一个预定义类,很自然地叫String。
每个用双引号括起来的字符串都是String类的一个实例:
String e = "" ; //一个空字符串
String greeting = "Hello!" ;
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。
与绝大多数程序设计语言一样,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
String类中没有用于修改字符串的方法,所以在Java文档中称String类对象为不可变字符串。
但是可以用substring
和加法运算符
拼接,进行改变字符串内容,这相当于修改字符串变量,让他引用另一个字符串。
例如:将greeting字符串从Hello变到Help!
String a = "Hello";
b = a.substring(0, 3) + "p!";
--> Help!
一、可以使用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更为清晰。
空串
""
是一个长度为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,也不是空字符串");
Java字符串由
char
值序列而成,char
数据类型是一个采用 UTF-16 编码表示Unicode码点。大多数(目前,不做了解,以后再了解)
有时候、需要将小字符串构建成长字符串,使用
StringBuilder
类。
StringBuilder str = new StringBuilder ("I'm very");
//当每次需要添加一部分内容时,就调用append方法;
str.append(' ');
str.append("Happy");
//在需要构建字符串时,就调用toString方法,将得到一个String对象
String str2 = str.toString();
--> I'm very Happy
一、介绍:
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]
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]);
}
}
一、概述:
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