就是应用程序编程接口 是对java预先定义的类或接口功能和函数功能的说明文档,目的是提供
给开发人员进行使用帮助说明。
是所有类的基类
用于操作数组工具类,里面定义了常见操作数组的静态方法。
equals 方法
sort排序
binarySearch -使用二分搜索算法搜索指定数组(binarySearch(type[] a, type key))
tostring类
1.概念:
由多个字符组成的一串数据,值一旦创建就不改变,一旦改变就会创建一个新的对象;
● 第一种:
String s = “abc”;
先在栈中创建一个对String类的对象引用变量s,然后去字符串常量池中查找
有没有"abc", 如果没有则在常量池中添加”abc”, s引用变量指向常量池中
的”abc”,如果常量池中有,则直接指向改地址即可,不用重新创建.
● 第二种:
一概在堆中创建新对象,值存储在堆内存的对象中。
String s = new String(“abc”);
package stringDemo2;
public class gain {
public static void main(String[] args) {
String str = "abcdefg";
System.out.println(str.length());//返回字符串长度(return value.length;)
System.out.println(str.charAt(1));//输入index索引返回该索引位置的字符(char);
System.out.println(str.indexOf("c"));//返回该字符的索引,(从前往后找,只返回首次找到的字符索引);
System.out.println(str.indexOf("c", 4));//返回该字符的索引,(从指定位置往后找,只返回首次找到的字符索引);
System.out.println(str.lastIndexOf("c"));//从后往前找,同上;
}
}
输出
7
b
2
-1
2
package stringDemo2;
public class cut out {
public static void main(String[] args) {
String str="abcdefg";
System.out.println(str.substring(3));//返回该索引往后的字串
System.out.println(str.substring(2,6));//返回从start到end的字符(start包含end不包含);
}
}
输出
defg
cdef
package stringDemo2;
import java.io.UnsupportedEncodingException;
import java.util.Arrays;
public class zhuanhuan {
public static void main(String[] args) throws UnsupportedEncodingException {
String str="中国";
byte b[]=str.getBytes("gbk");//将字符串转化为指定编码,并将字符串储存于字节数组(注:解码的编码要与译码时相同)
System.out.println(Arrays.toString(b));
String s=new String(b,"gbk");//解码过程
System.out.println(s);
String s1="abcd";
char[] chars=s1.toCharArray();//将字符串转化为字符并储存在字符数组中;
System.out.println(Arrays.toString(chars));//以字符数组形式输出;
String s2=new String(chars);//还原
String s3=String.valueOf(chars);//还原
System.out.println(s2);
System.out.println(s3);
}
}
输出
[-42, -48, -71, -6]
中国
[a, b, c, d]
abcd
abcd
package stringDemo2;
public class judge{
public static void main(String[] args) {
String str1="abcdefg";
String str2="abcdefg";
String str3="AbcdefG";
String str="abc";
String s= "";
// String s1=null;
System.out.println(str1.equals(str2));//比较字符串内容是否相同(返回类型:boolean);
System.out.println(str1.equalsIgnoreCase(str3));//比较字符串内容是否相同(不区分大小写)(返回类型:boolean);
System.out.println(str1.contains(str));//是否包含子串(连续)(返回类型:boolean);
System.out.println(s.isEmpty());//判断字符串是否为空串(返回类型:boolean);NULL并非空串;
System.out.println(str1.startsWith("abc"));//判断字符串是否以该字串开头;(返回类型:boolean)
System.out.println(str1.endsWith("efg"));//判断字符串是否以该字串结尾;(返回类型:boolean)
System.out.println(str1.compareTo(str3));//比较两字符串大小;
// (若长度相同则返回不同值的asc值之差)(字符串长度不同则返回length之差);(返回类型:int);
}
}
输出
true
true
true
true
true
true
32
package stringDemo2;
public class tihuan {
public static void main(String[] args) {
String str=" abcde1a3f5g ";
String str1=str.replace("a","A");//替换连续子串;
System.out.println(str1);
String str2=str.replaceAll("\\d","A");//正则”模式匹配“替换
System.out.println(str2);
String str3=str.replaceFirst("\\d","A");//正则”模式匹配“替换第一次出现的regex;
System.out.println(str3);
String str4=str.trim();//去除字符串两端” “空格;
System.out.println(str.length());
System.out.println(str4.length());
}
}
输出
Abcde1A3f5g
abcdeAaAfAg
abcdeAa3f5g
13
11
字符串广泛应用 在Java 编程中,在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作字符串 需要注意是,String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,这样不仅效率低下,而且大量浪费有限的内存空间,而StringBuffer与StringBuilder就可以解决这个问题 。
当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。
因为StringBuffer类与StringBuilder类之间只有在多线程时会有区别,故而只对StringBuffer做以下详解:
在API中是这样解释StringBuffer的:
也就是说StringBuffer会提供一个字符缓冲区(默认大小为长度为16的字符数组),每当写入的内容超过16时会自动增加容量;
构造方法
public StringBuffer()
public StringBuffer(String str)
● 添加功能
public StringBuffer append(String str)
public StringBuffer insert(int offset,String str)
● 删除功能
public StringBuffer deleteCharAt(int index)
public StringBuffer delete(int start,int end)
● 替换功能
public StringBuffer replace(int start,int end,String str)
● 反转功能
public StringBuffer reverse()
● 截取功能
public String substring(int start)
public String substring(int start,int end)
● 截取功能和前面几个功能的不同
返回值类型是String类型,本身没有发生改变
public class StringBufferDemo {
public static void main(String[] args) {
// new StringBuffer();//无参,底层char数组长度默认为16;
// new StringBuffer(30);//int 参数 底层数组长度默认为指定长度30;
StringBuffer stringBuffer = new StringBuffer("abcd");//此时地址StringBuffer@491
stringBuffer.append("efg");//此时value char数组地址为@496”未超出初始长度’str.length+16‘“
stringBuffer.append("asdafdaf");//仍未超出
stringBuffer.append("zxcvasdfasdfg");//此时超出’str.length+16‘value char地址改变,但stringbuffer对象地址不改变;
System.out.println(stringBuffer);//
StringBuffer sb = new StringBuffer();
sb.append("abc");//向字符串末尾追加字符串;不改变原字符串地址;
System.out.println(sb);
sb.insert(2,"acs");//向指定位置插入字符串;
System.out.println(sb);
sb.delete(1,2);//删除指定区间的字符串;
System.out.println(sb);
sb.deleteCharAt(2);//删除该索引的字符;
System.out.println(sb);
sb.replace(2,3,"ac");//将指定区间替换为指定字符串;(不同于string的操作,stringbuffer是在原数组中操作);
System.out.println(sb);
sb.reverse();//反转数组;
System.out.println(sb);
String str=sb.substring(2);//返回的是string值;
System.out.println(sb);
}
}
abcdefgasdafdafzxcvasdfasdfg
abc
abacsc
aacsc
aasc
aaacc
ccaaa
ccaaa
● String:是字符常量,适用于少量的字符串操作的情况
● StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况
● StringBuffer:适用多线程下在字符缓冲区进行大量操作的情况、
package systemDemo;
import java.util.Arrays;
import java.util.Random;
public class SystemDemo {
public static void main(String[] args) {
System.out.println(Math.PI);
System.out.println(Math.max(10,1));
System.out.println(Math.min(10,1));
System.out.println(Math.pow(10,2));
System.out.println(Math.sqrt(9));
System.out.println(Math.random());//0-1之间的随机数
System.out.println(Math.abs(-1));
System.out.println(Math.floor(10.9));//向下取整
System.out.println(Math.ceil(10.1));//向上取整
System.out.println(Math.round(10.4));//四舍五入
Random random = new Random();
System.out.println(random.nextBoolean());//true/false随机;
System.out.println(random.nextInt());//在int中返回随机值
System.out.println(random.nextInt(100));//在100中返回随机值不包含100
byte[] bytes = new byte[5];
random.nextBytes(bytes);
System.out.println(Arrays.toString(bytes));//生成n个Byte类型的随机值;
//System类
long s=System.currentTimeMillis();//1970.1.1到程序运行的时间差;
System.out.println(s);
int[]a={1,2,3,5,6};
int[] ints = new int[10];
System.arraycopy(a,0,ints,2,3);//src原数组,srcPos原数组开始copy的索引,dest新数组,
// destPos将原数组在新数组中开始copy的索引,length要从原数组中copy的长度
System.out.println(Arrays.toString(ints));
System.exit(0);//退出JVM;
System.gc();//垃圾回收;
}
}
3.141592653589793
10
1
100.0
3.0
0.8425993335676571
1
10.0
11.0
10
false
247880112
25
[-89, -60, 68, 116, 117]
1638459490798
[0, 0, 1, 2, 3, 0, 0, 0, 0, 0]