常用类

常用类

分类:

基本数据类型的包装类

字符串相关类(不可变字符序列String;可变字符序列StringBuffer,StringBuilder)

时间处理类(Date,DateFormat and SimpleDateFormat,Calender)

Math类

File类

枚举类:JDK1.5后

 

一:包装类

概念:将基本数据类型封装到一个类中,包含属性和方法,方便对类操作(包装类位于java.lang中)

why:他们的出现为了解决基本类型不能直接与面对对象开发,让基本类型以对象的形式存在

int-------------Integer

char-----------Character

double--------Double

short----------Short

float----------Float

byte----------Byte

long----------Long

boolean------Boolean

 

1:int Integer和String之间的相互转换

int装换为Integer

           int a=123;

 

           Integer i1=new Integer(a);      //通过构造方法转换

           Integer i2=Integer.valueOf(a);//通过Integer提供的静态方法转换

 

Integer转换为int

          Integer integer1=new Integer(1);

 

          int i=integer1.intValue();

 

int转换为String

          int i=20;

 

          String s=i+"";     //通过字符串拼接转换

 

String转换为int(字符串里存在数字才可以,否则会报错:java.lang.NumberFormatExcepation数据格式转换异常)

          String ss="456";

 

          int i3=Integer.parselnt(ss);     //通过Integer里的parseInt的方法转换

 

String转换Integer(字符串是不是一定要有数字)-------------和int一样,构造方法和静态方法

          String  ss="123";

 

          Integer integer1=new Integer(ss);

          Integer integer2=Integer.valueOf(ss);

 

Integer转换为String

          Integer integer=new Integer("123");-------------------为什么要传入字符串参数(toString不用传入参数)

 

          String ss=integer.toString();        //Integer的toString的方法

          String ss=integer+'"";                  //字符串拼接

 

2:自动装箱和拆箱与内存复用

自动装箱:基本数据类型自动封装到与它相同的包装类中

Integer var=数值(int装箱为Integer)如果var指向的对象在-128到127范围内赋值,生成的实例化对象由IntegerCache.cache()

方法产生,会复用已有的对象,和String的串池一样,cache()方法会将该范围产生的Integer对象入池,下次使用直接从缓冲区拿,就不会再次创建

PS所有数值型的包装类都会涉及到上面问题,-------------(手动装箱不会出现内存复用现象new每次都会在堆里开辟新空间)

PS自动装箱是通过valueOf()方法实现

Integer i1=100;

Integer i2=100;

Integer i3=200;

Integer i4=200;

System.out.println(i1==i2);//true

System.out.println(i3==i4);//false

自动拆箱:包装对象自动转化基本数据类型

Integer i=10;//自动装箱

int a =i;        //自动拆箱int a=i.intValue

System.out.println(a==i);//在运算时候都会自动拆箱

PS:本质是调用了valueOf()或者intValue()方法

 

 

二:String相关类(c语言存储字符串是字符数组)(位于java.lang包,具有很多丰富的方法:计算字符串,连接字符串,提取字符串)

1使用String存储字符串

String s ="HelloWorld";

String s =new String("HelloWorld");

2常用字符串方法

String str="abc";

str.charAt(0);------------------字符串第0的位置的字母

str.indexOf("a");---------------a元素的下标

str.concat("cde");-------------连接字符串

str1.equals(str)----------------比较两个字符串是不是值相等

str1.equalsgnoreCase(str)----是忽略大小写的比较是不是值相等

str.length();--------------------字符串长度

str.replace(str,str1)------------str1替换str

 

str.startsWith(prefix)--------------------如果字符串是以prefix开头就是返回true

str.endsWith(predix)--------------------如果字符串是以prefix结尾就是放回true

str.substring(beginIndex,endIndex);--返回该字符串一部分,下标由参数决定

str.toLowerCase();----------------------返回原来字符串所有大写字母改成小写字母

str.toUpperCase()----------------------返回原来字符串所有小写字母改成大写字母

str.trim()--------------------------------返回原来字符串头部和尾部 的空格被delete

 

PS:

        String a="abc";

        String b="abc"; //它会自动在常量池里找到abc所以地址是一样的

System.out.println(a==b);----------返回true

 

       String a="abc";

       String b=new String("abc");//它会创建一块新的空间地址不一样

System.out.println(a==b);---------返回false

 

       String a="abc";

       String b=new String("abc");

       b=b.intern();//新空间里会去常量池里找abc

System.out.println(a==b);---------返回true

 

     String a="abc";

     String b="cde";

     String c="abcdef";

     String d=a+b;

     String e="abc"+"cde";

System.out.println(c==d);//false----c是一块新空间,用intern可以去常量池里找

System.out.println(c==e);//true-----直接在常量池里找

 

 

 

2字符串的本质

    字符串的本质是字符数组或者叫字符序列

    String类是final修饰的,不可以被继承

    使用equals比较的是字符数组每个位置的值

immutable (不可变的):String是一个不可变对象String s="ABC"; s.toLowerCase();该方法没有改变ABC的值,是创建了一个新String类abc,然后指向s

PS:String里的Spilt();可以拆分字符串;

 

 

 

3  StringBuffer类和StringBuilder类

StringBuffer:String的增强版,它中文名字叫字符缓冲区,它是一个容器

StringBuffer的声名:

StringBuffer sb=new StringBuffer();//创建空StringBuffer对象

StringBuffer sb=new StringBuffer("aaa");创建变量储存字符串aaa

sb.toString();//装换为String类型

sb.append("----");//追加字符串

PS:StringBuffer的方法StringBuffer.length()//字符串实际长度

                                   StringBuffer.capacity();//容器的能力就是容器的大小这里是16;

 

PSPSPSPPSPSPS:

总结:

String是不可变字符序列

StringBuilder可变字符序列,效率高,线程不安全

StringBuffer可变字符序列,效率低,线程安全

 

 

 

 

三:时间处理类

1Date类

Date:         System.out.println(date);//打印日期

date.getTime();        System.out.println(date.getTime());//打印1970年一月一日距离现在的毫秒数

date.parse(2021/03/16);//打印1970/01/01午夜距离参数日期的毫秒数

 

2DateFormat(位于java.text包)(是一个抽象类也是SimpleDateFormat的一个父类)

作用:格式化date

格式化风格

DateFormat.SHORT:完全数字,如12.13.52或者3:30pm

DateFormat.MEDIUM:如Jan 12 ,1952

DateFormat.LONG:如January 12,1952或者3:30:32pm

DateFormat.FULL完全指定 如Tuesday.April.1952AD或者3:30:42pm PST

用法:

将date格式化为字符串

创建date对象

创建format(多态创建)(创建的时候可以指定格式"y-M-d H:m:s"没有指定格式默认年月日用 / 时间用 :)

String s=format对象的format(date)

将字符串转换为日期类

Date d1=dateFormat.parse("2021-10-23 20:20:20");

 

 

3Calender类(protected修饰不能new,提供getinstance()方法)

获取系统时间

Calender calendar=Calendar.getInstance()

设置指定时间

Date d1=dateFormat.parse("2021-10-23 20:20:2

calendar.setTime(d1);

System.out.println(calendar);//改变系统时间而已

打印年月日时分秒,月是从0开始算的

System.out.println(canlendar.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.HOURS_OF_DAY));

System.out.println(calendar.get(Calendar.MINUTE));

System.out.println(calendar.get(Calendar.SECOND));

 

4:LocalDate/LocalTime/LocalDateTime

 

 

 

 

四:Math类

random();生成0到1左闭右开的区间

使用 int a=(int)(10*Math.random());生成0到10的整数

int b =20+(int)(10*Math.random());生成20到30的整数

 

 

 

五: 枚举类enum

jdk5开始的新的数据类型,是一种特殊类,就是固定多个常量对象的集合

定义:

『修饰符』enum 名称{

    常量a,常量b,常量c;

}

enum自动继承java.util.Enum类所以不能继承其他类(可以实现接口)

注意:

构造器:只能private修饰,保证构造函数只可以内部使用

枚举项:必须写在枚举类最前面用  ,  隔开      如果最后一项没有其他内容可以不写分号

枚举对象:数量是一定的,他们默认public static final ,外部不能创建对象

使用:

枚举对象是全局静态变量,可以直接类名调用

强烈建议定义一组常量的时候使用枚举类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值