1.谁的方法?(哪个类)
2.什么方法?(静态还是成员)
3.功能是什么?(能做什么?)
4.需要传入什么参数?
5.返回什么类型?
6.方法名
1.String
1.1 概述
位于java.lang.String;是字符串类
不需要导包。
它的底层是一个字符数组,所以它的很多特性就是数组的特性。
1.字符串一旦创建,这个字符串对象不能更改。
2.字符串需要使用双引号来表示。
3.为了提高字符串访问效率,提出来一个机制,字符串常量池。
1.2 String si = "dwfere"; String s2 = new String("dwfere");
1.3 基本使用: 尽量不要使用 String 进行大量的字符串拼接操作。
1.4 构造方法
1.字面量
String s1 = "abc";
2.
String s2 = new String("xxxx");
3.字节数组
byte [] bytes = {97,98,99,100,101};
String s3 = new String(bytes);
4.截取字节数组的一部分
String s4 = new String(bytes,3,2);
5.字符数组
char [] chars = {'a'a,'b','c','d','e'};
6.截取字符数组的一部分
String s6 = new String(chars,2,2);
1.5 常用方法
int length():返回字符串的长度: return value.length
char charAt(int index): 返回某索引处的字符return value[index]
boolean isEmpty():判断是否是空字符串:return value.length == 0
String toLowerCase():使用默认语言环境,将 String 中的所有字符转换为小写
String toUpperCase():使用默认语言环境,将 String 中的所有字符转换为大写
String trim():返回字符串的副本,忽略前导空白和尾部空白
boolean equals(Object obj):比较字符串的内容是否相同
boolean equalsIgnoreCase(String anotherString):与equals方法类似,忽略大小写
String concat(String str):将指定字符串连接到此字符串的结尾。 等价于用“+”
int compareTo(String anotherString):比较两个字符串的大小
String substring(int beginIndex): 返回一个新的字符串, 它是此字符串的从
beginIndex开始截取到最后的一个子字符串。
String substring(int beginIndex, int endIndex) :返回一个新字符串,它是此字 符串从beginIndex开始截取到endIndex(不包含)的一个子字符串。
boolean endsWith(String suffix):测试此字符串是否以指定的后缀结束
boolean startsWith(String prefix):测试此字符串是否以指定的前缀开始
boolean startsWith(String prefix, int toffset):测试此字符串从指定索引开始的
子字符串是否以指定前缀开始
boolean contains(CharSequence s):当且仅当此字符串包含指定的 char 值序列 时,返回 true
int indexOf(String str):返回指定子字符串在此字符串中第一次出现处的索引
int indexOf(String str, int fromIndex):返回指定子字符串在此字符串中第一次出 现处的索引,从指定的索引开始
int lastIndexOf(String str):返回指定子字符串在此字符串中最右边出现处的索引
int lastIndexOf(String str, int fromIndex):返回指定子字符串在此字符串中最后 一次出现处的索引,从指定的索引开始反向搜索
注:indexOf和lastIndexOf方法如果未找到都是返回-1
String replace(char oldChar, char newChar):返回一个新的字符串,它是
通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。
String replace(CharSequence target, CharSequence replacement): 使 用指定的字面值替换序列替换此字符串所有匹配字面值目标序列的子字符串。
String replaceAll(String regex, String replacement) : 使 用 给 定 的
replacement 替换此字符串所有匹配给定的正则表达式的子字符串。
String replaceFirst(String regex, String replacement) : 使用给定的
replacement 替换此字符串匹配给定的正则表达式的第一个子字符串。
boolean matches(String regex):告知此字符串是否匹配给定的正则表达式。
String[] split(String regex):根据给定正则表达式的匹配拆分此字符串。
String[] split(String regex, int limit):根据匹配给定的正则表达式来拆分此 字符串,最多不超过limit个,如果超过了,剩下的全部都放到最后一个元素中
String s1 = "我爱你中国!";
1. char charAt(int index): 获取字符串中某个位置上的字符
s1.charAt(2) //获取字符串中的 你。
2. boolean startsWith(String prefix):是否以指定字符串开始
"HelloWord".startsWith("H");
是否以指定字符串结尾
"HelloWord".endsWith(".java");
// 3 boolean equals(Object obj) : 比较两个字符串是否相等
System.out.println("abc".equals("Abc"));
// true 不区分大小写比较
System.out.println("abc".equalsIgnoreCase("Abc"));
System.out.println("------------");
// 4 byte[] getBytes() : 把字符串转换为字节数组
byte[] bytes = "abc".getBytes();
for (byte b : bytes) {
System.out.println(b);
}
// 5 char[] toCharArray() : 把字符串转换为字符数组
char[] chars = "abc".toCharArray();
for (char c : chars) {
System.out.println(c);
}
// 字节数组转换字符串 : new String(bytes,起始值,个数);
// 字符串转字节数组 : getBytes();
// 字符数组转字符串 : new String(chars,起始值,个数);
// 字符串转字符数组 : toCharArray();
// 6 int indexOf(String str) : 获取字符串中,指定字符串的起始索引,找不到就返回-1
System.out.println("abcdebcfg".indexOf("bc"));
// 7 int lastIndeOf(String str) : 获取字符串中,指定字符串最后一次出现的索引,找不到返回-1
System.out.println("abcdebcfg".lastIndexOf("bc"));
// 8 int length() : 返回字符串的长度
System.out.println("abc".length());
// 9 String replaceAll(String regex, String replacement) : 把指定字符串,用某个字符串替换
// replace : 这个方法 和 replaceAll 几乎一样,只是 replaceAll 支持正则表达式,而 replace 不支持正则表达式
// 1111111 因为.在正则表达式中 可以匹配任意字符,所以把所有字符都替换为1
System.out.println("abc.dae".replaceAll(".", "1"));
// abc1dae .就是. , 不识别正则表达式
System.out.println("abc.dae".replace(".", "1"));
System.out.println("====");
// 10 String[] split(String regex) : 分割字符串,需要指定分隔符,返回字符串数组,支持正则表达式
String myTime = "2021,07,13";
// 以逗号分割,返回字符串数组
String[] time = myTime.split(",");
for (String string : time) {
System.out.println(string);
}
// 11 String substring(int beginIndex) : 获取该字符串中,以某个下标为起始的子字符串(包含)
// defg
System.out.println("abcdefg".substring(3));
// 12 String substring(int beginIndex, int endIndex) : 获取该字符串中,以某个下标为起始(包含),到指定位置结束(不包含)
// 注意 起始包含,结束不包含
// de
System.out.println("abcdefg".substring(3,5));
// 13 String trim() : 去除字符串两边的空格
// a b
System.out.println(" a b ".trim());
// 14 转大写转小写
// ASDADNCA
System.out.println("asdADnca".toUpperCase());
// asdadnca
System.out.println("asdADnca".toLowerCase());
// 输出一个引用类型的时候,会自动调用该对象的toString方法
Object obj = null;
// 当obj为null时,确不会出现空指针异常
System.out.println(obj);
// 15 static String valueOf(Object obj) : 调用指定对象的toString方法,并且使用三目运算符屏蔽了空指针异常
System.out.println(String.valueOf(obj));
2.StringBuffer 和 StringBuilder 是什么?
是一个可变的字符串缓冲区,适合做拼接操作。
原理:
先定义好长度,容纳更多的字符。
如果预留的空间不足,会进行自动扩容。
StringBuffer 和 StringBuilder 的区别?
StringBuilder: 非线程安全,在多线程环境下使用,可能会出现问题,所以常用于方法中。
StringBuffer: 线程安全,在多线程环境下使用,不会出现问题,所以常用于类中。
StringBuilder sb = new StringBuilder();
sb.append("a");
sb.append("b");
sb.append("c").append("d");
System.out.println(sb);//abcd
1.反转
System.out.println(sb.reverse());//dcba
2.指定位置添加数据
sb.insert(1,"2");//a2bcd
3.已有元素个数
System.out.println(sb.lenght());
4.当前容量
System.out.println(sb.capacity());
3. 包装类
3.1概述
byte java.lang.Byte
short java.lang.Short
int java.lang.Integer
long java.lang.Long
float java.lang.Float
double java.lang.Double
boolean java.lang.Boolean
char java.lang.Character
3.2使用
byte i = 10;
Byte i2 = new Byte(i);
System.out.println(i2);
3.3 Integer
3.3.1 基本使用
Integer i = new Integer(10);
Integer i = new Integer("10");
重点
static int parseInt(String s)//把纯数字的字符串转换为int类型
int i = Integer.parseInt("12345");
double d = Double.parseDouble("2.5");
二进制
String s1 = Integer.toBinaryString(10);
String s2 = Integer.toOctalString(10);
String s3 = Integer.toHexString(10);
3.3.2类型转换
1 int 转成 Integer
Integer i = Integer.valueOf(19);
2 Integer 转成 int
int i1 = i.intValue();
3 String 转成 Integer
Integer i2 = Integer.valueOf("103");
4 Integer 转成 String
String i3 = i2.toString();
5.int 转成 String
String i4 = i1 + "";
6.String 转成 int
int i5 = Integer.parseInt(i4);
3.3.4 装箱和拆箱
Integer i6 = 22;//装箱
int i7 = i6;//拆箱
4. System
System类内部包含in、out和err三个成员变量,分别代表标准输入流(键盘输入),标准输出流(显示器)和标准错误输出流(显示器)。
currentTimeMillis:获取当前系统时间对应的毫秒数
long StartTime = System.currenTimeMillis();
long EndTime = System.currenTimeMillis();
System.out.println("系统耗时:" + (EndTime - StratTIme));
//退出程序
System.exit(0);//0表示正常退出。
5. Date
时间类,时间原点是 1970.1.1 8:00:00
5.1 构造方法
//无参,获取当前系统时间
Date d1 = new Date();
//有参,传入的是毫秒数,时间原点到指定毫秒数的时间
Date d2 = new Date(10000);
5.2 时间格式化
年 y
月 M
日 d
时 H
分 m
秒 s
毫秒 S
// 获取当前时间
Date date = new Date();
//创建时间格式化对象
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh-mm-ss");
//格式化当前时间
String strTime = sdf.format(date);
System.out.println(strTime);
5.3 日历
//创建日历
Calendar c = Calendar.getInstance();
//获取年
int year = c.get(Calendar.YEAR);
//获取月
int month = c.get(Calendar.MONTH)+1;
//获取日
int day = c.get(Calendar.DAY_OF_MONTH);
//获取时 HOUR_OF_DAY 24小时 HOUR 12小时
int hour = c.get(Calendar.HOUR_OF_DAY);
//获取分
int minute = c.get(Calendar.MINUTE);
//获取秒
int second = c.get(Calendar.SECOND);
//获取星期
int weekday = c.get(Calendar.DAY_OF_WEEK);
System.out.println(c);