1、包装类
Java语言中,为了能够把基本数据类型当做对象处理,通过包装类将八个基本数据类型包装成类,并提供了多种方法供以调用。
Java中8个基本数据类型各自对应的包装类
package com.xiang.wrapper;
public class TestA {
public static void main(String[] args) {
String a ="10";
int aa=20;//基本类型的数据
Integer bb = new Integer(30);//包装类表示的数据
//把String类型的数据转成int类型
int i = Integer.parseInt(a);
System.out.println(Integer.SIZE);//32
System.out.println(Integer.MAX_VALUE);
System.out.println(Integer.MIN_VALUE);
System.out.println(i);
System.out.println(aa);
System.out.println(bb);
}
}
/*
32
2147483647
-2147483648
10
20
30
*/
package com.xiang.wrapper;
//基本类型的数据和包装类之间的相互转化
public class TestB {
public static void main(String[] args) {
int aa = 10;
//把基本类型的数据转成包装类
Integer bb = new Integer(aa);
//把一个包装类转成基本类型
int cc = bb.intValue();
int a = 10;
//自动装箱 基本类型--->包装类
Integer b=a;//底层使用Integer.valueOf()完成自动装箱的操作
//自动拆箱 包装类--->基本数据类型
int c =b;//底层使用intValue()完成自动拆箱的过程
}
}
在这里插入代码package com.xiang.wrapper;
public class TestC {
public static void main(String[] args) {
int a = 10;
Integer b = 10;//自动装箱
System.out.println(a==b);//T + - * / == 自动的拆箱的操作
System.out.println(b.equals(a));//T自动装箱 a会自动转成包装类
Integer aa =new Integer(10);
Integer bb = new Integer(10);
System.out.println(aa==bb);//false
System.out.println(aa.equals(bb));//T
Integer aaa=122;//自动装箱
Integer bbb=122;
System.out.println(aaa==bbb);//T
System.out.println(aaa.equals(bbb));//T
Integer aaaa=258;
Integer bbbb=258;
System.out.println(aaaa==bbbb);//F
System.out.println(aaaa.equals(bbbb));//T
}
}
片
2、String类
package com.xiang.string;
public class StringA {
public static void main(String[] args) {
String a ="xiang";
String b=new String("xiang");
}
}
package com.xiang.string;
import java.util.Locale;
import java.util.UUID;
public class StringB {
public static void main(String[] args) {
String a="xiang翔xiang";
String b="";//空字符串 在常量池中是空的字符串
String c=null;//空对象 没有任何的地址
System.out.println("==============字符串简单方法=================");
System.out.println(a.length());//返回字符串的长度 掌握
System.out.println(b.isEmpty());//判断字符串是否为空
System.out.println(a.startsWith("xiang"));//判断字符串是用xx开头语
System.out.println(a.endsWith("翔"));//判断字符串是用xx结尾
System.out.println(a.toUpperCase());//使字符串中所有英文全部大写
System.out.println(a.toLowerCase());//使字符串中所有英文全部小写
System.out.println("==============字符串查找/截取方法(全部掌握)=================");
System.out.println(a.charAt(5));//我们可以知道String底层是一个char类型的数组,返回的是指定下标对应的字符
System.out.println(a.indexOf("翔"));//根据指定字符串查询指定的下标,只返回查询到的第一个元素下标,查询不到返回-1
System.out.println(a.indexOf("x",4));//从指定位置查询字符串下标
//1.jpg 1.1.1.jpg
System.out.println(a.lastIndexOf("x",7));
System.out.println(a.substring(5));//从下标为5的位置开始截取字符串 一直到结束
System.out.println(a.substring(5,6));//[5,6) 指定开始截取字符串的开始和结束下标
//获得.jpg后缀
String fileName="1.2.3.jpg";
//获得最后一个.所在的下标
int i=fileName.lastIndexOf(".");
System.out.println(i);
String substring = fileName.substring(i);
System.out.println(substring);
String uuid = UUID.randomUUID().toString();
System.out.println(uuid);
System.out.println(uuid+substring);
}
}
/*输出结果:
11
true
true
false
XIANG翔XIANG
xiang翔xiang
==============字符串查找方法=================
翔
5
6
6
翔xiang
翔
5
.jpg
6a5a0999-d863-4496-9c4d-6c7e4c446676
6a5a0999-d863-4496-9c4d-6c7e4c446676.jpg
*/
package com.xiang.string;
import java.io.UnsupportedEncodingException;
import java.util.Arrays;
public class StringC {
public static void main(String[] args) throws UnsupportedEncodingException {
String str ="xiang翔";
System.out.println("==============字符串中转化方法=======================");
byte[] bytes = str.getBytes();
String str2 = new String(bytes, "GBK");//可以给指定的字符串进行重新的编码,我们以后会使用
System.out.println(str2);
System.out.println("==============字符串中拼接、替换、查询是否含有方法=======================");
String str3="x-i-a-n-g-b";
System.out.println(str3.contains("l"));//是否包含指定的字符串
System.out.println(str3.replace("b","翔"));//替换所有指定的字符串内容
System.out.println(str3.replaceAll("b","翔"));//替换所有指定的字符串内容支持正则表达式
System.out.println(str3.concat("xxx"));//字符串的拼接
// str3 = str3.concat("a").concat("b").concat("c");
// System.out.println(str3);
//按照指定的字符串进行分割,返回值是一个String数组
String[] split = str3.split("-");
System.out.println(Arrays.toString(split));
String str4 = " x ia n g b ";
System.out.println(str4.trim());//去除字符串中开始和结束的空格
System.out.println(str4.replace(" ",""));//替换
}
}
package com.xiang.string;
public class StringD {
public static void main(String[] args) {
String str="sxt";
String str2="Sxt";
System.out.println(str.equals(str2));
System.out.println(str.compareTo(str2));//忽略大小写比较
System.out.println(str.compareToIgnoreCase(str2));//不忽略大小写比较
}
}
package com.xiang.string;
import java.util.Locale;
public class StringE {
public static void main(String[] args) {
String str1 = "bjsxt";
System.out.println(str1.toUpperCase());
System.out.println(str1);
System.out.println(str1.length());
System.out.println(str1.isEmpty());//是否为空
System.out.println(str1.charAt(4));//取出指定位置的值
System.out.println("bjsxt".equals(str1));
System.out.println("bjsxdsdat".compareTo(str1));//若数为正则前面的数大,为负则为后面的数大
System.out.println(str1.concat("p"));//拼接
}
}
package com.xiang.string;
public class Test01 {
public static void main(String[] args) {
String s0= "5";
String s1= "52";
String s2= "5"+"2";
String s3= "5"+2;
String s4= s0+2;
System.out.println(s1==s2);
System.out.println(s1==s3);
System.out.println(s1==s4);
/*
true
true
false
*/
}
}
3、StringBuffer和StringBuilder类
package com.xiang.string;
public class StringF {
public static void main(String[] args) {
StringBuilder stringBuilder =new StringBuilder("bjsxt");
long l = System.currentTimeMillis();
for (int i = 0; i < 100000; i++) {
stringBuilder.append("sxt");
}
long l1 = System.currentTimeMillis();
System.out.println(l1-l);
}
}
/*
String 拼接使用StringBuilder效率更高
*/
package com.xiang.string;
public class StringG {
public static void main(String[] args) {
StringBuilder builder = new StringBuilder("xiang");
// builder.append("bda");//内容追加的方法
// builder.insert(3,"翔");//可以在指定位置追加内容
// System.out.println(builder.charAt(2));//取出指定下标字符
// builder.setCharAt(3,'u');//可以给指定位置设置字符
// builder.replace(1,3,"翔");//[1,3) 进行指定字符替换
// builder.deleteCharAt(3);//删除指定位置字符
// builder.delete(1,3);//删除多个字符 [1,3)
// builder.reverse();//倒叙输出字符串
System.out.println(builder);
//String 类型转成stringBuilder
String str="xiang";
StringBuilder stringBuilder = new StringBuilder(str);
//stringBuilder 转成String
String s = stringBuilder.toString();
}
}
package com.xiang.string;
public class StringH {
public static void main(String[] args) {
StringBuilder builder = new StringBuilder("bjsxt");
System.out.println("真实内容长度:"+builder.length());//真实内容长度
System.out.println("底层数组长:"+builder.capacity());//底层数组的长度
for (int i = 0; i < 16; i++) {
builder.append("s");
}
System.out.println(builder);
System.out.println("真实内容长度:"+builder.length());//真实内容长度
System.out.println("底层数组长:"+builder.capacity());//底层数组的长度
builder.append("s");
System.out.println("底层数长度(扩容1):"+builder.capacity());//底层数组的长度
for (int i = 0; i < 22; i++) {
builder.append("a");
}
builder.append("a");
System.out.println("底层数长度(扩容2):"+builder.capacity());//底层数组的长度
}
}
/*
StringBuilder底层默认char数组长度为16
StringBuilder底层的扩容机制是 原有长度*2+2
*/
package com.xiang.string;
/*
String常用面试题
*/
public class StringI {
public static void main(String[] args) {
String a ="a";
String b ="b";
String c = "c";
String d = "d";
String str = "abcd";
//字符串拼接的时候如果全部是常量 和直接写一个结果的含义是一样
String str2 = "a"+"b"+"c"+"d";//创建了一个对象
String str3 = a+b+c+d;//创建了1个对象
//只要含有变量的连接 采用的就是这个优化机制
StringBuilder builder =new StringBuilder();
builder.append(a);
builder.append(b);
builder.append(c);
builder.append(d);
System.out.println(str==str2);
System.out.println(str2==str3);
}
}
4、Date类和DateFormat类
package com.xiang.date;
import java.util.Date;
/*
日期类中常用方法
*/
public class DateA {
public static void main(String[] args) {
Date date = new Date();
System.out.println(date);
System.out.println(date.getYear());//从1900年到现在的差值
System.out.println(date.getMonth());//0-11个月
System.out.println(date.getDate());//今天是当前月第几天
System.out.println(date.getDay());//周几
System.out.println(date.getHours());//24小时
System.out.println(date.getMinutes());//分钟
System.out.println(date.getSeconds());//秒
System.out.println(date.getTime());//自1970-01-01 00:00:00以来的毫秒数
System.out.println(date.toLocaleString());//获得年月日时分秒
}
}
package com.xiang.date;
import java.sql.Date;
/*
Date中三个子类
sql包下的类
Date:只含有年月日
Time:只含有时分秒
Timestamp:时间戳 既含有年月日又含有时分秒
*/
public class DateB {
public static void main(String[] args) {
// Date date = new Date();
//只含有年月日,没有时分秒
java.sql.Date date1 = new java.sql.Date(System.currentTimeMillis());
System.out.println(date1);
//字符串类型的数据转成Date类型的数据
String d="2019-09-10";
Date date = Date.valueOf(d);
System.out.println(date);
}
}
package com.xiang.date;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/*
作用:格式化日期类
*/
public class DateFormatA {
public static void main(String[] args) throws ParseException {
Date date = new Date();
// System.out.println(date);
//设置时间格式
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
//调用格式化方法
String format = dateFormat.format(date);
System.out.println(format);
System.out.println("==================================");
String str="2021-09-03 09:09:09";
// java.sql.Date date1 = java.sql.Date.valueOf(str);
DateFormat dateFormat1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date parse = dateFormat1.parse(str);
System.out.println(parse);
}
}
5、Calendar类
package com.xiang.calendar;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
public class MyCalendar {
public static void main(String[] args) {
//1.创建日历类对象
Calendar calendar = new GregorianCalendar();
System.out.println(calendar);
System.out.println(calendar.get(Calendar.YEAR));
System.out.println(calendar.get(Calendar.MONTH));
System.out.println(calendar.get(Calendar.DAY_OF_MONTH));
System.out.println(calendar.get(Calendar.HOUR));
System.out.println(calendar.get(Calendar.MINUTE));
System.out.println(calendar.get(Calendar.SECOND));
// calendar.set(Calendar.YEAR,2000);//可以对年月日进行修改实现
//获得本月中一共有多少天
int max = calendar.getActualMaximum(Calendar.DATE);
System.out.println(max);
/*
Calendar 和Date 类之间的相互转化
*/
//把date类对象转化成calendar类对象
Date date =new Date();
Calendar calendar2 =new GregorianCalendar();
calendar2.setTime(date);
//判断给定的年份是否为闰年
GregorianCalendar ca = (GregorianCalendar) GregorianCalendar.getInstance();
System.out.println(ca.isLeapYear(GregorianCalendar.YEAR));
//把calendar类对象转化成date类对象
Date time = calendar2.getTime();
}
}
package com.xiang.calendar;
import java.time.Instant;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class MyCalendar2 {
public static void main(String[] args) {
Instant now = Instant.now();
System.out.println(now);
System.out.println(now.MAX);
System.out.println(now.MIN);
System.out.println(now.EPOCH);
//LocalDate这个日期中只含有年月日
LocalDate localDate =LocalDate.now();
System.out.println(localDate);
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy年MM月dd日");
String format = localDate.format(dtf);
System.out.println(format);
//String 类型数据转成LocalDate类型
LocalDate parse = LocalDate.parse("2021-09-03");
}
}
6、Math类和Random类
package com.xiang.math;
import java.util.Random;
/*
数学类对象
*/
public class MathA {
public static void main(String[] args) {
System.out.println(Math.PI);
System.out.println(Math.E);
System.out.println(Math.round(3.5));//四舍五入
System.out.println(Math.ceil(3.1));//向上取整
System.out.println(Math.floor(3.1));//向下取整
System.out.println(Math.random());//[0,1)
System.out.println(Math.sqrt(64));//开平方
System.out.println(Math.pow(2,3));//2^3
System.out.println(Math.abs(-11));//取绝对值
System.out.println(Math.max(2,3));//比大
System.out.println(Math.min(2,3));//比小
System.out.println(Math.addExact(2,3));//加法
//产生一个随机数 0-9内随机整数
Math.floor(Math.random()*10);
}
}
package com.xiang.random;
import java.util.Random;
public class RandomA {
public static void main(String[] args) {
Random random = new Random();
//产生0-10内随机整数
int i = random.nextInt(10);
System.out.println(i);
//获得4位随机整数
int s = random.nextInt(9000)+ 1000;
System.out.println(s);
}
}
7、枚举
所有的枚举类型隐性地继承自 java.lang.Enum。枚举实质上还是类!而每个被枚举的成员实质就是一个枚举类型的实例,他们默认都是public static final修饰的。可以直接通过枚举类型名使用他们
注意
- 强烈建议当你需要定义一组常量时,使用枚举类型
- 另外尽量不要使用枚举的高级特性
package com.xiang.demo;
public class Student {
private String name;
private Gender sex;
public Student(String name, Gender sex) {
this.name = name;
this.sex = sex;
}
public Student(){
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Gender getSex() {
return sex;
}
public void setSex(Gender sex) {
this.sex = sex;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", sex='" + sex + '\'' +
'}';
}
}
package com.xiang.demo;
public enum Gender {
男 , 女
}
package com.xiang.demo;
public class Test {
public static void main(String[] args) {
Student stu =new Student("张三",Gender.男);
}
}