JAVA常用类库
常用的String类,Date类,DateFormat类,Candendar类,System类;
String类
String类表示字符串;Java程序中的所有字符串文字(例如"abc" )都被实现为此类的实例。String对象是不可变的,它们可以被共享。
String创建对象的方式
(1)使用构造方法创建对象;
(2)使用""创建对象;
String对象的特点:
(1)使用new关键字创建的String对象,每一次new都会申请一个内存空间,虽然内容相同,但是地址值不同;
(2)以"“方式给出的字符串,只要字符序列相同,无论代码中出现几次,JVM都只会建立一个Strng对象,并在字符串池中维护;
字符串常量池:当使用双引号创建字符串对象的时候,系统会检查字符串是否在字符串常量池中存在:
不存在,就创建;
存在,不会重新创建,而是直接复用;
String s1 = “abc”;
String s2 = “ab”;
String s3 = s2 + “c”;
Systrm.out.println(s1 == s3);//false
解释:
当字符串之间使用+号串联的时候,系统底层会创建一个StringBulider对象,
然后再调用append()方法完成拼接;
拼接后,再调用其toString()方法转换成String类型;
String s1 = “abc”;
String s2 = “a” + “b” + “c”;
Systrm.out.println(s1 == s2);//true
解释:
java存在常量优化机制,在编译的时候,就会将"a”+ “b” + “c"拼接为"abc”;
字符串的比较:
使用==做比较:
基本类型:比较的是数据值是否相同;
引用类型:比较的是地址值是否相同;
字符串是对象,它比较内容是否相同,是通过一个方法来实现,这个方法叫:public boolean equals();
获取数组的长度:数组名.length;
获取字符串的长度: 使用public int length();
字符串对象.length();
获取字符串的指定索引处的值: 使用public int charAt(int index);
字符串对象.charAt(int index);
遍历字符串的通用格式:
for (int i = 0; i <s.length(); i++) {
s.charAt(i);
}
将字符串拆分为字符数组:public char[] toCharArray();
String scanner = new Scanner(System.in);
String s = scanner.nextLine();
char[] chars = s.toCharString();
for(int i = 0; i < chars.length; i++) {
chars[i];
}
统计字符次数:
手机号屏蔽案例-字符串截取:
需求:以字符串的形式从键盘接收一个手机号,将中间思维号码屏蔽;
思路:
1.键盘录入一个字符串,用Scanner实现;
2.截取字符串前三位;
调用String substring(int beginIndex, int endIndex);
String start = telString.substring(0, 3);
3.截取字符串后四位;
String substring(int beginIndex);
String end = telString.substring(7);
4.将截取后的两个字符串,中间加上进行拼接,输出结果;
sout(start + "" + end);
Date类
Date
public Date();//创建一个日期对象,该对象表示当前系统的时间;
Date date = new Date();//创建对象
System.out.println(date);//打印date,重写了toString();
public Date(long time);/以指定的毫秒值创建一个Date对象,毫秒值代表距离标准时间的毫秒值;
Date date2 = new Date(1000);//这个日期对象date2,该对象距离标准时间(1970年1月1日0:0:0)1000毫秒
Date常用成员方法
public String toString();//将此 Date对象转换为 String的形式:
public long getTime();//返回自1970年1月1日以来,由此 Date对象表示的00:00:00 GMT的毫秒 数 。
注意:public Date()把毫秒值转换成了对象;public long getTime()把对象转换成了毫秒值;
Date date3 = new Date();//创建日期对象date3
date3.getTime();//date3调用成员方法getTime();
DateFormat类
DateFormat类是一个抽象类,不能直接创建对象;只能使用它的子类来创建对象(多态的方式创建对象);DateFormat的直接子类是SimpleDateFormat类(简单的日期格式化类).
SimpleDateFormat构造方法
public SimpleDateFormat(String pattern);//以指定的模式创建一个日期格式化对象;
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒");//创建日期格式化对象
SimpleDateFormat常用成员方法
public String format(Date d);//格式化一个日期对象,返回格式化后的一个字符串;
public static void demo1() {
SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒");//创建日期格式化对象
Date date = new Date();//创建日期对象date
String time = simpleDateFormat1.format(date);//格式化一个日期对象,返回一个字符串;
System.out.println(time);
}
public Date parse(String s);//解析一个字符串形式的日期,并返回一个Date对象;
public static void demo() {
SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒");//创建日期格式化对象
Date date2 = simpleDateFormat2.parse("2020年10月8日8时42分30秒");//
System.out.println(date2);
}
Calendar类
Calendar是日历类,该类将所有可能用到的时间信息封装成静态成员变量,方便获取;
Calendar类是抽象类,Calendar类在创建对象是并非直接通过new创建对象,而是通过静态方法创建对象,将语言敏感内容处理好,再返回子类对象.
Calnedar的静态方法获取子类对象
public static Calendar getInstance();//Calendar类作为静态方法的返回值,返回该子类的对象;
Calendar calendar = Calendar.getInstance();//通过Calendar的静态方法返回该子类的对象;
System.out.println(calendar);//重写了toString();
Calnedar类的成员方法
(1)public int get(int filed);//获取Calendar对象中的某一个字段/成员变量的值;
public static void getTimeDemo() {
Calendar calendar1 = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);//获取年份
int month = calendar.get(Calendar.MONTH);//获取一年中的月份(0-11)
int day = calendar.get(Calendar.DAY_OF_MONTH);//获取一个月中的天数
int hour = calendar.get(Calendar.HOUR_OF_DAY);//一小时的分钟数
int minute = calendar.get(Calendar.MINUTE);//一小时的分钟数
int second = calendar.get(Calendar.SECOND);//一分内的秒数
System.out.println("时间:" + year + "年" + month + "月" + day + "日" hour + ":" + minute + ":" + second);
}
(2)public void add(int filed, int amount);//给指定的对象的字段添加指定的值;
public static void addFiledDemo() {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.YEAR, 1);//年份加了1;
calendar.add(Calendar.Month, 2);//月份加了2;
calendar.add(Calendar.DAY_OF_MONTH, 2);//天数加了2天
...
}
(3)public void set(int filed,int value);//直接修改指定的对象的字段的值;
public void setFiledDemo() {
Calendar calendar2 = Calendar.getInstance();
calendar.set(Calendar.YEAR, 2018);//年份直接修改成了2018
calendar.set(Calendar.MONTH, 3);
calendar.set(Calendar.DAY_OF_MONTH, 12);
System.out.println(calendar.set(Calendar.YEAR, 2018) + "年" + calendar.set(Calendar.MONTH, 3) + "月" + calendar.set(Calendar.DAY_OF_MONTH, 12) + "日");//输出的结果是2018年3月12日
}
(4)public Date getTime();//返回该Calendar对象对应的Date对象;
public static void getTimeDemo() {
Calendar calendar3 = Calendar.getInstance();
Date date3 = calendar3.getTime();
System.out.println(date3);//输出系统当前时间
}
(5)getActualMaximum():获取某字段的最大值;
System类
System类代表程序所在系统;System类不能被实例化;因为构造方法私有化了.
System类的常用方法
public static void exit(int code);//退出JVM;参数用作状态码,根据惯例,非0的状态码表示异常终止;
调用System.exit()有效地等效于Runtime.getRuntime().exit(n);
for(int i = 0; i < 10; i++) {
System.out.println(i);//输出了0就退出类
System.exit(0);
}
public static long currentTimeMillis();//获取当前系统时间的毫秒数;
long time = System.currentTimeMillis();
System.out.println(time);//获取毫秒数
public static void gc();//运行java的垃圾回收器;
public static String getProoerty(String propertyName);获取某一个属性的值;
System.getProperty(java.version);//java运行时环境版本
System.getProperty(java.home);//java的安装目录
System.getProperty(java.class.path);//java类路径
Math类
Math类包含执行基本数学运算的方法
Math构造方法私有化了,不能被继承;
所有的方法都是静态方法;直接使用类名来调用这些方法.
Math类的常用方法
public static 返回值类型 abs();//返回值为(int,float,long,double)的绝对值;
int abs = Math.abs(-100);
System.out.println(abs);//100
double abs1 = Math.abs(-1200.7);
System.out.println(abs1);//1200.7
float abs2 = Math.abs(120.1f);
System.out.println(abs2);//120.1
long abs3 = Math.abs(1234L);
System.out.println(abs3);1234
public static 返回值类型 max(返回值类型 a, 返回值类型 b);//返回两个(int,long,float,double)值中的较大者
int max = Math.max(10, 12);
long max1 = Math.max(120L, 1211);
double max2 = Math.max(120.3, 189);
float max3 = Math.max(123.f, 156);
System.out.println(max);//12
System.out.println(max1);//1211
System.out.println(max2);//189.0
System.out.println(max3);//156.0
public static 返回值类型 min(返回值类型 a, 返回值类型 b);//返回两个值中的较小值;
int min= Math.min(10, 8);//8
public static double ceil(double a);
返回大于或者等于参数a的最小double值,等于一个数学整数;
double ceil = Math.ceil(12);
double ceil1 = Math.ceil(12.3);
double ceil2 = Math.ceil(-13);
double ceil3 = Math.ceil(-12.5);
System.out.println(ceil);//12.0
System.out.println(ceil1);//13.0
System.out.println(ceil2);//-13.0
System.out.println(ceil3);//-12.0
public static double random();//返回一个随机数,值的范围[0.0,1);
//获取伪随机数
double random = Math.random();//0.8
public static double floor(double a);
//返回小于或等于参数的最大(最接近正无穷大) double值,等于一个数学整数。
double floor = Math.floor(12);
double floor1 = Math.floor(13.8);
double floor2 = Math.floor(-12);
double floor3 = Math.floor(-13.8);
System.out.println(floor);//12.0
System.out.println(floor1);//13.0
System.out.println(floor2);//-12.0
System.out.println(floor3);//-14.0
public static long round(double a);//四舍五入
long round = Math.round(12.0);
long round2 = Math.round(12.5);
int round4 = Math.round(15);
int round1 = Math.round(135);
long round3 = Math.round(12.3);
long round5 = Math.round(-12.3);
long round6 = Math.round(12.9);
System.out.println(round);//12
System.out.println(round1);//135
System.out.println(round2);//13
System.out.println(round3);//12
System.out.println(round4);//15
System.out.println(round5);//-12
System.out.println(round6);//-13
public static double pow(double a, double b);//求次幂
double pow = Math.pow(4, 2);//16.0
Arrays
Arrays:该类包含用操作数组的各种方法。
Arrays常用方法
static void toString();返回指定数组的内容的字符串表示形式。
static void sort();按照数字顺序排列指定的数组。
static int[] copyOf(int[] original, int newLength) //数组扩容
int[] array = {1,3,5,2,4,9,7,8};
Arrays.toString(array);
Arrays.aort(array);