常用类: String
String的获取功能
int length(): 获取字符串长度
public char charAt(int index): 获取指定索引处的字符
public int indexOf(int ch) 返回指定字符在此字符串中第一次出现处的索引
参数:
为什么不是char类型,
'a'--->97 两个意思一样
字符--->ASCII码表
a 97
A 65
0 48
public int indexOf(String str): 子字符串在大字符串中第一次出现的索引
public int lastIndexOf(int ch) 返回指定字符在此字符串中最后一次出现处的索引
public String substring(int beginIndex): 从指定位置开始截取,默认截取到末尾
public String substring(int beginIndex, int endIndex): 从指定位置开始截取,截取到指定位置结束(包前,不包后)
字符串中的其他功能:
替换功能:
String replace(char oldChar, char newChar) : 将指定的字符替换以前的字符
String replace(String oldString, String newString): 将以前的子字符串替换新的子字符串
String replaceAll(String regex, String replacement):
使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。
public String trim(): 去除字符串两端的多余空格;
public int compareTo():比较两个字符串
*****笔试题
String s1 = "hello" ;
String s2 ="hel" ;
看源码!
System.out.println(s1.compareTo(s2)); // 输出为2
结论: 当比较的两个字符串中有一个是另一个的子串,则返回的是两个字符串长之差 str1.length - str2.length
当比较的两个字符串不是包含关系,则返回的是两个字符串中出现的第一个不同字母的字典顺序之差;
String类型的转换功能:
byte[] getBytes(charset) : 将字符串转换成字节数组 charset 默认平台GBK编码,可省略,其他形式的编码则不能省略
public char[] toCharArray(): 将字符串转换为字符数组
valueOf(XXX 变量名) ; 可以将任意类型转换为String类型
public String toLowerCase() : 将字符串转换小写
public String toUpperCase(): 将字符串转换成大写
public String concat(String str)将指定字符串连接到此字符串的结尾。
StringBuffer 类: 线程安全的可变字符序列
线程安全 --->线程同步 ---> 执行效率低
线程不安全--->线程不同步--->执行效率高
StringBuffer的构造方法:
public StringBuffer()构造一个其中不带字符的字符串缓冲区,其初始容量为 16 个字符。
public StringBuffer(int capacity):指定容量大小
public StringBuffer(String str):构造一个字符串缓冲区:里面的容量(字符串内容英文)大小:字符串长度+16初始容量
获取功能:
public int capacity():初始容量 (默认16个字符)
int length(): 返回字符串长度 ( 初始容量 16 + 字符串的长度 )
添加功能:
StringBuffer append(xxx x): 将指定的内容追加(末尾追加)到字符串缓冲区中,返回StringBuffer本身
public StringBuffer insert(int index,xxx x): 在指定位置处,插入一个新的内容,返回StringBuffer本身
删除功能:
StringBuffer deleteCharAt(int index) : 删除指定位置处的字符,返回字符串缓冲区本身
StringBuffer delete(int start, int end) : 删除从指定位置开始到指定位置结束,返回值字符串缓冲区本身
替换功能:
public StringBuffer replace(int start,int end,String str)
从指定位置开始到指定位置结束,用给定的str字符串替换指定的字符内容
反转功能
public StringBuffer reverse() : 将此字符序列用其反转形式取代
截取功能:
String substring(int start) : 从指定位置默认截取到末尾,返回一个新的字符串
String substring(int start,int end): 从指定位置开始截取到指定位置结束
类与类之间的转化:
String-->StringBuffer:
String str ;
方式一 :有参构造 StringBuffer sb = new StringBuffer(str);
方式二: 无参构造 + append(str)方法
StringBuffer sb = new StringBuffer();
sb.append(str);
StringBuffer-->String:
方式一: toString()方法
StringBuffer sb = new StringBuffer();
sb.toString();
方式二: String有参构造
String s = new String(StringBuffer);
****** 面试题:
StringBuffer(容器)和String的区别?
StringBuffer是线程安全的类,可变的字符序列, 内存中提供字符串缓冲区;
String是不可变的字符序列
从内存角度考虑:StringBuffer优于String;
String类型: 在方法区中开辟空间--->占内存
StringBuffer 和 StringBuilder 的区别?
StringBuffer:线程安全,但效率低,常用于多线程
StringBuilder: 线程不安全,但效率高,常用与单线程
冒泡排序 和 选择排序:
冒泡排序:
1)思想:相邻的两个元素依次进行比较,每比较完一轮,最大值就会存在于最后面;
2)代码:
选择排序:
1)思想:先拿数组的第一个元素进行依次与后面的元素比较,比较完一轮后,最小值就会在最前面;
2)代码:
Arrays工具类: 针对数组进行操作的工具类。
提供了排序,查找等功能。
方法:
public static String toString(int[] a):将一个整型数组转化成一个字符串的形式;
public static void sort(int[] a):将这个整型数组进行排序,默认从小到大排序;
public static int binarySearch(int[] a,int key):根据指定的值找出在该数组中的索引,前提:该数组必须有序
基本包装类:Java为了给开发人员提供对基本数据类型的操作,
提供了一系列的包装类,里面有各种操作数据的方法;
基本数据类型 包装类型 查阅API查看包装类的各种方法
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean
*****面试题:
String和int类型的相互转换?
int ------> String
1) int 的 valueOf()方法 : string.valueOf(int i);
2) int 的 toString()方法: i.toString();
3) 字符串拼接: i + " ";
4) int --> Integer --> String
String --- > int
1) String的 parseInt( String str)方法
2)String ---> Integer -->int
JDK1.5的新特性:自动拆箱和自动装箱
自动装箱:把基本类型转换为包装类类型 底层实现: Integer.valueOf( i )
自动拆箱:把包装类类型转换为基本类型 底层实现: i.intvalue()
例: Integer i = 100; //自动装箱 相当于 Integer.valueOf( 100 )
i+ = 10; //先自动拆箱,再自动装箱 相当于 Integer.valueOf( ( i.intvalue(100)+10) )
注意:
Integer自动装箱池的范围是-128~127
Byte,Short,Long范围是-128~127
Character范围是0~127
Float和Double没有自动装箱池
*******面试题: ( 享元模式 )
Integer i5 = 128;
Integer i6 = 128;
System.out.println(i5 == i6); //false 因为 超过了一个字节的范围(-128~+127) 会new 一个Integer对象
System.out.println(i5.equals(i6));
System.out.println("-----------");
Integer i7 = 127;
Integer i8 = 127;
System.out.println(i7 == i8);//true 没有超过一个字节的范围 因为在方法区中存在一个 字节常量池 范围-128---127
System.out.println(i7.equals(i8));
正则表达式: 是指一个用来描述或者匹配一系列符合某个句法规则
的字符串的单个字符串。正确规则的表达式, 其实就是一种规则。
规则字符在java.util.regex Pattern类中
A:字符
x 字符 x。举例:'a'表示字符a
\\ 反斜线字符。
\n 新行(换行)符 ('\u000A')
\r 回车符 ('\u000D')
B:字符类
[abc] a、b 或 c(简单类)
[^abc] 任何字符,除了 a、b 或 c(否定)
[a-zA-Z] a到 z 或 A到 Z,两头的字母包括在内(范围)
[0-9] 0到9的字符都包括
C:预定义字符类
. 任何字符。我的就是.字符本身,怎么表示呢? \.
\d 数字:[0-9]
\w 单词字符:[a-zA-Z_0-9]
在正则表达式里面组成单词的东西必须有这些东西组成
D:边界匹配器
^ 行的开头
$ 行的结尾
\b 单词边界
就是不是单词字符的地方。
举例:hello world?haha;xixi
E:Greedy 数量词
X? X,一次或一次也没有 比如""空串 就是没有 1/0
X* X,零次或多次 大于等于1次 都算多次 >=0
X+ X,一次或多次 >=1
X{n} X,恰好 n 次 ==n
X{n,} X,至少 n 次 >=n
X{n,m} X,至少 n 次,但是不超过 m 次 n<= 次数 <m
正则表达式的应用:
1)public boolean matches(String regex):根据指定的正则表达式去匹配字符串,
如果匹配成功则返回true,否则返回false;
2) public String[] split(String regex): 根据指定的正则表达式去分割字符串,
将分割后的字符串依次存入一个字符串数组中,
3)public String replaceAll(String regex,String replacement):根据指定的正则表达式去匹配字符串,
匹配成功后用replacement去替换该字符串
使用正则表达式需要获取的类对象:
Pattern 模式器 用来封装正则表达式
Matcher 匹配器 用来匹配正则表达式
1) 把一个正则表达式封装进模式器里面
Pattern p = Pattern.compile("a?b");
2) 通过模式器,获取匹配器,并传入需要匹配的字符串
Matcher m = p.matcher("ab");
3) 调用匹配器中的方法,进行匹配
boolean b = m.matches();
Matcher 匹配器中的两个方法
public boolean find(): 查找是否有符合正则的字符串,有则返回 true ,没有则返回 false
public String group() : 获取到符合正则的字符串
Math类: 一些常用的数学方法
成员变量
public static final double E : 自然底数
public static final double PI: 圆周率
成员方法
public static int abs(int a) 取绝对值
public static double ceil(double a) 向上取整
public static double floor(double a) 向下取整
public static int max(int a,int b) 获取最大值
public static int min(int a, int b) 获取最小值
public static double pow(double a,double b) 获取a的b次幂
public static double random() 获取随机数 返回带正号的 double 值,该值大于等于 0.0 且小于 1.0。
public static int round(float a) 四舍五入, <=0.5 舍弃 , >0.5 入一位
public static double sqrt(double a) 获取正平方根
Random类: 产生随机数的类
构造方法
public Random() 没有给定种子,使用的是默认的(当前系统的毫秒值)
public Random(long seed) 给定一个long类型的种子,给定以后每一次生成的随机数是相同的
成员方法
public int nextInt() 没有参数 表示的随机数范围 是int类型的范围(- 2的31次方 ~ +2的31次方-1)
public int nextInt(int n) 可以指定一个随机数范围 (0<= <n)