Java 常用类
2021-03-31 15:29
标签:处理 tor 同步 har 取数据 word ade -- 数据库数据 此类是不可被继承,因为它是final类 此类实现序化接口,支持序列化处理 String实现Comparable比较器,支持自然排序 String的字符串内容,底层也是使用char[]数组存储, 并且此数组是一个final数组 因为char是final,所以String是不可变的类 直接赋值 创建对象赋值 从内存分析String如何存储 字符串常量池的字符串内容,只会添加,不会修改,但字符串内容可以复用 面试题 它还是依赖char数组存储字符串数据 它是可变的字符数组 它默认分配16个字符长度的字符数组 其实它就是一个字符数组存储字符内容, 当调用append添加字符串,比较count+len与buf.length,如果count+len> buf.length,则进行扩容 它是线程安全的 比较简单,自己查看api 它的用法与StringBuffer是相同的,但它线程不安全,因为没加同步机制,因此性能要比StringBuffer要好 在java中每一种基本数据类型都对应一 个数据类型的包装类 byte ---->Byte short---->Short char----->Character int------> Integer long----->Long float----->Float double---->Double boolean--->Boolean 以Integer为例 将基本数据类型转换成包装类 面试题 字符串与包装类之间是如何转换 java.util.Date类:表示特定的瞬间,精确到毫秒 如何将字符串转换到日期对象 如何将日期对象转换成关系数据库日期对象 (代码接着上面的) 如何从关系数据库将日期读取到字符串,打印输出到控制器 在jdk1.8之前,提供一个日历类, 专门 ]处理日期时间运算问题 jdk1.8提供新的日期时间api来操作日期时间 LocalDate:日期(年月日) LocalDateTime:日期时间(年月日时分秒) LocalTime:时间(时分秒) 基本用法 跟数据库日期字段对接 LocalDate转字符串 从字符串----->LocalDate---->存储到数据库表的Date字段 从字符串----->LocalDateTime---->存储到数据库表的DateTime字段 从数据库表的Date字段------->java.sql.Date----->LocalDate 从数据库表的dateTime字段----->java.sql.TimeStamp---->LocalDateTime Optional 类(java.util.Optional) 是一个容器类,代表一个值存在或不存在,原来用 null 表示一个值不存在,现在 Optional 可以更好的表达这个概念。并且可以避免空指针异常。 作用:避免编写大量的if(p==null)这样判断 核心方法 Optional.of(T t) : 创建一个 Optional 实例 Optional.empty() : 创建一个空的 Optional 实例 Optional.ofNullable(T t):若 t 不为 null,创建 Optional 实例,否则创建空实例 orElse方法:如果value为空,则返回参数值,否则返回value本身 举例 三个与取整有关的方法: ceil、 floor、 round ceil的英文意义是天花板,该方法就表示向上取整,Math.ceil(11.3)的结果为12 ,Math.ceil(-11.3)的结果是-11 floor的英文意义是地板,该方法就表示向下取整,所以,Math.floor(11.6)的结果为11 ,Math.floor(-11.6)的结果是-12 最难掌握的是round方法,它表示“四舍五入”,算法Math.floor(x+0.5),即将原来的数字加上0.5后再向下取整,所以,Math.round(11.5)的结 果为12,Math.round(-11 .5)的结果为-11 一般的Float类和Double类可以用来做科学计算或工程计算,但在商业计算中,要求数字精度比较高,故用到java.math.BigDecimal类。BigDecimal类支持任何精度的定点数。 Java 常用类 标签:处理 tor 同步 har 取数据 word ade -- 数据库数据 原文地址:https://www.cnblogs.com/Y-wee/p/13557810.htmlJava 常用类
1、String类用法
1.1、特点
1.2、如何使用
String s1="hello";
String s2=new String("hello");
/*
*面试题:上面代码创建了几个对象
*答:两个,一个String对象,一个char数组对象
*/
public static void main(String[] args) {
String s1="helloworld";
String s2="hello"+"world";
String s3="hello";
String s4="world";
String s5="hello"+s4;
String s6="hello"+s4;
String s7=s3+s4;
//==比较的是内存地址
System.out.println(s1==s2);//true
System.out.println(s1==s5);//false
System.out.println(s5==s6);//false
System.out.println(s6==s7);//false
//equals比较的是字符串内容
System.out.println(s1.equals(s2));//true
System.out.println(s1.equals(s5));//true
System.out.println(s5.equals(s6));//true
System.out.println(s6.equals(s7));//true
//intern方法:强制要求直接从字符串常量池获取数据
String s8=s6.intern();
System.out.println(s8==s1);//true
String s9=new String("helloworld");
String s10=new String("helloworld");
System.out.println(s9==s10);//fasle
System.out.println(s9.intern()==s10); //fasle
System.out.println(s9.intern()=="helloworld");//true
}
/*
*分析:只要String与变量进行连接,则此对象肯定在堆空间分配(即地址不一样)
*/2、StringBuffer和StringBuilder
2.1、StringBuffer的特点
进行扩容后的数组长度=原先的数组长度*2+2;
2.2、StringBuffer的用法
2.3、StringBuilder的特点和用法
3、数据类型的包装类
3.1、用法
//写法一:直接字面值赋值
Integer a=100;
//写法二:直接创建Integer对象
Integer a1=new Integer(100);
//写法三:调用valueOf静态方法
Integer a2=Integer.valueOf(100);
//数据值在-128到127之间,使用缓存区获取数据
Integer a3=Integer.valueOf(56);
Integer a4=Integer.valueOf(56);
System.out.println(a3==a4);//true
//数据值在-128到127以外,则直接new Integer对象
Integer a5=Integer.valueOf(129);
Integer a6=Integer.valueOf(129);
System.out.println(a5==a6);//false
//将字符串转换成包装类
String value="100";
Integer iValue=new Integer(value);
//将包装类转换成字符串
String sValue=String.valueOf(iValue);
System.out.println(sValue);4、日期相关的类
4.1、jdk1.8之前时间类用法
String inDate="2020-06-06";
String inDateTime="2020-06-06 13:24:56";
//日期格式化的类,设置格式
SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd");
//转换成Date类型
Date date=sf.parse(inDate);
//设置格式
SimpleDateFormat sf_time=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//转换成Date类型
Date dateTime=sf_time.parse(inDateTime); //java.sql.Date类对象
java.sql.Date sqlDate=new java.sql.Date(date.getTime());
java.sql.Date sqlDateTime=new java.sql.Date(dateTime.getTime());
//定义Date对象
Date javaDateObj=null;
Date javaDateTimeObj=null;
//从数据库读取到的日期对象
java.sql.Date getDateObj=rs.getDate(1);
Timestamp timeStampObj=rs.getTimestamp(2);
//将java.sql.日期对象转换成java.util.Date对象
javaDateObj=getDateObj;
javaDateTimeObj=new Date(timeStampObj.getTime());
//获取Date对象,转换成字符串输出(yyyy年MM月dd日 HH时 mm分ss秒)
SimpleDateFormat sf=new SimpleDateFormat("yyyy年MM 月dd日 HH时mm分ss秒");
String javaDateTimeStr=sf.format(javaDateTimeObj);
System.out.println(javaDateTimeStr);
4.1.2、时间日期运算问题
4.1.3、Calendar类的用法
public static void main(String[] args) {
//获取日历对象
Calendar calendar=Calendar.getInstance();
//设置时间为当月第五天
calendar.set(Calendar.DAY_OF_MONTH,5);
//2小时之后的时间
calendar.add(Calendar.HOUR,2);
//获取Date对象
Date date=calendar.getTime();
//设置时间格式
SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyy-MM-dd HH:mm:ss");
//将date转换成String
String dateString=simpleDateFormat.format(date);
System.out.println(dateString);
}
4.2、jdk1.8之后时间类用法
public static void main(String[] args) {
//获取当前日期(年月日)
LocalDate localDate=LocalDate.now();
System.out.println(localDate);
//获取年份
int year=localDate.getYear();
System.out.println(year);
//获取月份
Month month=localDate.getMonth();
System.out.println(month);
//获取天
int day=localDate.getDayOfMonth();
System.out.println(day);
//获取2天后的日期
LocalDate localDate1=localDate.plusDays(2);
System.out.println(localDate1);
//获取2个月之后的日期
LocalDate localDate2=localDate1.plusMonths(2);
System.out.println(localDate2);
//获取两个月之前的日期
LocalDate localDate3=localDate2.minusMonths(2);
System.out.println(localDate3);
}
//设置格式
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd");
//获取当前年月日
LocalDate time = LocalDate.now();
//转成字符串
String localTime = df.format(time);
System.out.println(localTime);
String strCurDate="2020-08-20";
//将String根据日期格式(yyyy-MM-dd)解释成LocalDate对象
LocalDate curDateObj=LocalDate.parse(strCurDate,
DateTimeFormatter.ofPattern("yyyy-MM-dd"));
//LocalDate可以直接存储到数据库的Date字段
//条件:mysql驱动的版本>=4.2
pstmt.setObject(1, curDateObj);
String strCurDateTime="2020-08-20 16:30:56";
//将String根据日期格式(yyyy-MM-dd HH:mm:ss)解释成LocalDate对象
LocalDateTime curDateTimeObj=LocalDateTime.parse(strCurDateTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
//LocalDate可以直接存储到数据库的Date字段
//条件:mysql驱动的版本>=4.2
pstmt.setObject(2, curDateTimeObj);
//读取数据库Date
Date date=rs.getDate(1);
//将Date转换成LocalDate
LocalDate ld=date.toLocalDate();
//将LocalDate按格式转成字符串
String dateFormat=ld.format(DateTimeFormatter.ofPattern("yyyy年MM月dd日"));
//读取数据库数据
Timestamp datetime=rs.getTimestamp(2);
//将Timestamp转换成LocalDate
LocalDateTime ldt=datetime.toLocalDateTime();
//将LocalDate按格式转成字符串
String dateFormat=ldt.format(DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH时mm分ss秒"))
5、Optional类的用法
class Apple {
public void info() {
System.out.println("我是苹果");
}
}
class Person {
public Apple getAppleObj() {
return null;
}
}
public class MainTest {
public static void getAppleInfo(Person p) {
Person pObj=(Person) (Optional.ofNullable(p).orElse(new Person()));
Apple appleObj=(Apple) (Optional.ofNullable(pObj.getAppleObj()).orElse(new Apple()));appleObj.info();
/*
if(p!=null) {
Apple a=p.getAppleObj();
if(a!=null) {
a.info();
}else {
a=new Apple();
a.info();
}
}else {
p=new Person();
Apple a=p.getAppleObj();
if(a!=null) {
a.info();
}else {
a=new Apple();
a.info();
}
}
*/
}
6、Math类的用法
7、BigInteger与BigDecimal类用法
BigInteger v1=new BigInteger("9223372036854775808");
BigInteger v2=new BigInteger("9223372036854775808");
//“加”运算
BigInteger sum=v1.add(v2);
System.out.println(sum.toString());
//“减”运算
BigInteger result=v1.subtract(v2);
System.out.println(result.toString());
下一篇:PHP-文档目录