常用类
String
基本使用
java.lang.String 是字符串
它的底层是一个字符数组,所以它的很多特性就是数组的特性
1 字符串一旦被创建,这个字符串对象就不可以更改了
2 为了提升字符串的访问效率,java虚拟机采用了一种缓存的技术,String是一个引用数据类型,那么String的值应该保存在堆内存吧?
但是字符串不一样,字符串对象都会在静态区有一个字符串常量池
3 在程序执行中,如果程序要用到某一个字符串,比如(“abc”),虚拟机首先会去字符串常量池中搜索,有没有这个字符串,
如果已经有了,就直接指向这个字符串,不需要再创建一个
如果没有,就创建一个,然后再指向
使用String的时候,要注意,尽量不要做频繁的拼接操作
因为字符串一旦创建,不能更改,如果拼接,会频繁的创建字符串对象,浪费空间
构造方法
// 1
String s1 = “abc”;
// 2
String s2 = new String(“abc”);
// 3 传递字节数组,转换为字符串
byte[] bytes = {97,98,99};
String s3 = new String(bytes);
System.out.println(s3);
// 4 截取字节数组中的一部分
// 下标从1开始(包含) , 取两个
String s4 = new String(bytes,1,2);
System.out.println(s4);
// 5 传递字符数组,转换为字符串
char[] chars = {'q','w','e','r'};
String s5 = new String(chars);
System.out.println(s5);
// 6 截取字符数组的一部分
String s6 = new String(chars,0,2);
System.out.println(s6);
常用方法
1 谁的方法,这里肯定是String的
2 什么方法,成员还是静态,知道是什么方法的时候,才之后怎么调用,使用类名,还是使用对象
3 方法名是什么
4 参数是什么,代表什么
5 返回值是什么
6 功能是什么,这个方法能做什么是
// 1 char chatAt(int index) : 获取字符串中,某个位置上的字符,相当于 arr[index]
String s1 = “qwer”;
char c1 = s1.charAt(2);
System.out.println(c1);
// 2 boolean endsWith(String suffix) : 判断字符串是否以指定字符串结尾
// startsWith(String prefix) 判断开始
// true
System.out.println("Hello.java".endsWith(".java"));
// false 注意 空格
System.out.println("Hello.java".endsWith(".java "));
// 3 boolean equalsIgnoreCase(String anotherString) : 不区分大小写比较两个字符串是否相等
System.out.println("abc".equals("ABC"));
System.out.println("abc".equalsIgnoreCase("ABC"));
// 4 byte[] getBytes(); : 把字符串转换为字节数组
byte[] bytes = "abc".getBytes();
for (byte b : bytes) {
System.out.println(b);
}
System.out.println("-------------");
// 5 int indexOf(String str) : 获取指定字符串的起始索引,找不到就返回-1
System.out.println("cniuhaushd213hxhdd2".indexOf("d2")); // 9
// 6 int indexOf(String str,int fromIndex) : 从指定位置开始查找,找不到返回-1
System.out.println("cniuhaushd213hcxhdd2".indexOf("c", 1));
// 7 int lastIndexOf(String str) : 最后一次出现位置的索引,找不到返回-1
System.out.println("cniuhaushd213hcxhdd2".lastIndexOf("c"));
// 8 int length() : 获取字符串长度
System.out.println("abc".length());
// 9 String replaceAll(String regex,String replacement) : 把指定字符换为指定字符
// 还有一个方法 replace 这两个功能一样,只不过 replaceAll 支持正则表达式
System.out.println("12h,dha!sioh@#213!23><".replaceAll("[^0-9a-zA-Z]",
""));// a23a4a52
// 10 String[] split(String regix) : 分割字符串,需要指定分隔符,返回值是字符串数组,支持正则表达式
String myTime = "2008,08,08";
// 如果是 以 . 点分割,需要 \\. 因为split支持正则表达式,而 . 在正则表达式中有特殊含有,所以需要转义
// 在正则表达式中,通过 \. 对 . 进行转义,但是 \ 在java中也是 转移符,所以 需要 \\.,来转义 \
String[] ymd = myTime.split(",");
for (String string : ymd) {
System.out.println(string);
}
System.out.println("------------");
// 11 String substring(int begin) : 获取该字符串以某个下标开始的子字符串(包含)
System.out.println("abcdefg".substring(2));// cdefg
// 12 String substring(int beginIndex,int endIdex); :
// 以某个下标开始(包含),到某个下标结束的子字符串(不包含)
System.out.println("abcdefg".substring(2, 6));// cdef
// 13 char[] toCharArray() : 转换为char数组
char[] c2 = "qwer".toCharArray();
for (char c : c2) {
System.out.println(c);
}
System.out.println("----------");
// 14 转大写和小写
System.out.println("asdUId".toUpperCase());
System.out.println("asdUId".toLowerCase());
// 15 String trim() : 去除字符串首尾的空格
System.out.println(" 1 dcz s ".trim());
// 16 static String valueOf(Object obj) : 调用对象的toString方法,并处理null值
StringBuffer和StringBuilder
1 StringBuffer和StringBuilder是什么?
是可变的字符串缓冲区
2 原理
预先在内存中申请一块空间,用来容纳字符序列(字符数组)
如果预留空间不够的话,会自动扩容
3 String和 StringBuffer以及StringBuilder最大的区别
String是不可变的字符序列,存储在字符串常量池中
StringBuilder和StringBuffer是可变的,底层也是char数组,并且可以自动扩容
4 StringBuffer和StringBuilder的默认初始化容量是16个字符
5 StringBuffer 和 StringBuilder 的区别
StringBuffer是线程安全,在多线程环境下使用,不会出现问题,所以常用于类中
StringBuilder是非线程安全,在多线程环境下使用,可能出现问题,所以常用于方法中
如果不考虑安全性的情况下,使用 StringBuilder 运行效率高
Date
创建时间
计算机时间 是以 1970年1月1日8点开始 (北京时间)
System.currentTimeMillis() 获取时间原点到当前时间的毫秒数
1秒 = 1000毫秒
// 获取当前系统时间
Date date = new Date();
System.out.println(date);
// 上面打印 默认是欧美习惯,可以自定义格式
// 日期格式 :
// 年 : y 月 M 日 d 小时 H 分 m 秒 s 毫秒 S
// 时间格式化对象
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss SSS");
// 格式化时间,返回String类型
String strTime = sdf.format(date);
System.out.println(strTime);
String转Date
// 准备日期
String strTime = "2020年07月15日 14:47:54 841";
// 1 创建格式化对象
// 日期格式必须和字符串中的日期格式对应才行
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss SSS");
// 2 转换为Date
Date t = sdf.parse(strTime);
System.out.println(t);
十分钟前
// 也可以传入long值,表示毫秒数
// 意思是 获取 时间原点到指定毫秒数的时间
Date t1 = new Date(1000);
SimpleDateFormat sdf = new SimpleDateFormat(“yyyy年MM月dd日 HH:mm:ss SSS”);
System.out.println(sdf.format(t1));
// 获取当前系统时间的前10分钟
Date t2 = new Date(System.currentTimeMillis() - 1000 60 10);
System.out.println(sdf.format(t2));
日历
// 获取当前日历
Calendar c = Calendar.getInstance();
// System.out.println©;
// 获取今天是本周的第几天,周日是第一天
int i = c.get(Calendar.DAY_OF_WEEK);
System.out.println(i);
// 今天是本月第几天,也就是多少号
System.out.println(c.get(Calendar.DAY_OF_MONTH));
// 获取年
System.out.println(c.get(Calendar.YEAR));
// 获取月,范围是0~11 所以 获取到之后 +1 就是当前月份
System.out.println(c.get(Calendar.MONTH) + 1);
// 获取日
System.out.println(c.get(Calendar.DAY_OF_MONTH));
// 获取 时 12小时
System.out.println(c.get(Calendar.HOUR));
// 24小时
System.out.println(c.get(Calendar.HOUR_OF_DAY));
// 获取 分
System.out.println(c.get(Calendar.MINUTE));
// 获取 秒
System.out.println(c.get(Calendar.SECOND));
// 获取指定时间的日历
String strTime = "2016.04.04";
Date d = new SimpleDateFormat("yyyy.MM.dd").parse(strTime);
// 该语句会生成指定时间对应的日历
c.setTime(d);
// 获取星期,周日是第一天
System.out.println(c.get(Calendar.DAY_OF_WEEK));
包装类
包装类 : 封装了基本类型的一些操作,更加方便使用
byte Byte
short Short
int Integer
long Long
float Float
double Double
boolean Boolean
char Character
八种包装类 都在java.lang下 ,意味着 使用不需要导入
另外 都覆写了 toString 和 equals方法等
常用方法
// int —> Integer
Integer i1 = new Integer(10);
// Integer —> int
int i2 = i1.intValue();
// static int parseInt(String str) 把 纯数字字符串转换为int
int i3 = Integer.parseInt("1231");
double d1 = Double.parseDouble("213.2");
// static String toBinaryString(int value) 把指定的值转换为二进制格式的字符串
System.out.println(Integer.toBinaryString(10));
// static String toOctalString(int value) 把指定的值转换为八进制格式的字符串
System.out.println(Integer.toOctalString(10));
// static String toHexString(int value) 把指定的值转换为十六进制格式的字符串
System.out.println(Integer.toHexString(10));
// String ---> Integer
Integer i4 = Integer.valueOf("123");
// int ---> Integer
Integer i5 = Integer.valueOf(1233);
Int,Integer,String三者转换
// int —> Integer
Integer i1 = Integer.valueOf(10);
// Integer ---> int
int i2 = i1.intValue();
// String ---> Integer
Integer i3 = Integer.valueOf("1233");
// Integer ---> String
String s1 = i3.toString();
// String ---> int
int i4 = Integer.parseInt("1233");
// int ---> String
String s2 = 19 + "";
自动拆箱和自动装箱
java1.5开始的新特性
自动装箱
把基本数据类型自动转换为包装类
自动拆箱
把包装类自动转换为基本数据类型
// 1.5之前写法
Integer i1 = new Integer(19);
int i2 = i1.intValue();
// 1.5开始
Integer i3 = 123;// 自动装箱
int i4 = i3; // 自动拆箱
// 装箱,因为接受Integer 传入 int
m1(123);
Double d = 213.2;
}
public static int m1(Integer i1){
return i1-2; // 拆箱
}
本文地址:https://blog.csdn.net/weixin_44400664/article/details/107700574
推荐阅读
-
java常用工具类 UUID、Map工具类
-
java常用工具类 数字工具类
-
java常用工具类 Random随机数、MD5加密工具类
-
java常用工具类 XML工具类、数据验证工具类
-
java常用工具类 Reflect反射工具类、String字符串工具类
-
java常用工具类 Date日期、Mail邮件工具类
-
【转载】C#中SqlConnection类的作用以及常用方法
-
分享一个常用的Python模拟登陆类
-
Java日期时间API系列12-----Jdk8中java.time包中的新的日期时间API类,日期格式化,常用日期格式大全
-
Java中数组操作 java.util.Arrays 类常用方法的使用