欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

常用类

程序员文章站 2022-03-20 12:26:03
1.包装类 把八大基本数据类型封装到一个类中(包装类),并提供属性和方法。让我们更加方便的操作基本数据类型。但包装类的出现并不是为了取代基本数据类型,也取代不了。 包装类位于java.lang包中。 Number 类 Number数值类型是byte、double、float、int、long 和 s ......

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