浅知常用类

学常用类就是学API,学API就是学查字典,多敲代码才是正道。

String类

在Java中,字符串被作为String的对象处理。String类位于java.lang包中,该包会被自动导入所有的程序。String对象创建后不能被修改,是不可变的,所谓的修改其实是创建了新的对象,所指向的内存空间不同。如果需要一个可改变的字符串,我们可以使用StringBuffer或者StringBuilder。

String类提供了许多用来处理字符串的方法,例如,获取字符串的长度.length()方法,对字符串进行截取.substring(int beginIndex,int endIndex)方法,将字符串转换为大写或小写.toUpperCase()方法和.toLowerCase()方法,字符串分割.split(Stirng regex, int limit)方法等。注意索引从0开始,使用.indexOf(…)进行字符或字符串查找时,如果匹配返回位置索引;如果没有匹配结果,返回-1。使用.substring(beginIndex,endIndex)进行字符串截取时,包括beginIndex位置的字符,不包括endIndex位置的字符,取头不取尾。

当频繁操作字符串时,会产生很多临时变量,我们可以使用StringBuilder类或StringBuffer类存储字符串来避免这个问题。StringBuilder类和StringBuffer类基本相似,StringBuffer是线程安全(线程同步)的,而StringBuilder是非线程安全(非线程同步)的,所以性能略高。因此一般情况下,如果需要创建一个内容可变的字符串对象,应优先考虑使用StringBuilder类。

StringBuilder类的常用方法:.append(参数)追加内容到StringBuilder对象的末尾,.insert(位置,参数)将内容插入到StringBuilder对象的指定位置,.toString()将StringBuilder对象转换为String对象,.length()获取字符串长度。

包装类

将基本的数据类型以及一些辅助方法包装到类中,把基本数据类型转换为对象。这些包装类分为两类,一类是对象性包装类,不继承任何其他类(Object的直接子类),另一种是数值型包装类,继承于Number类。例:Boolean和Character两个类就是正常的属性方法封装,但是数值型的Integer类和Double类就是继承了一个Number类。

Java中的基本数据类型不是对象,无法通过向上转型获取到Object提供的方法,也无法参与转型,泛型,反射等过程。而String类就可以,因为它不是基本数据类型,属于引用类型。

为了让基本数据类型也具备对象的特性(能调用方法、功能多样),Java为每个基本数据类型都提供了一个包装类,这样我们就可以像操作对象那样来操作基本数据类型。包装类主要提供了两大类方法:1、将本类型和其他基本类型进行转换的方法2、将字符串和本类型及包装类互相转换的方法。

拆箱:将包装类中包装的基本数据类型数据取出,即,把包装类对象转换成基本类型的值,JDK1.5之后提供自动拆箱。

装箱:将基本数据转换成包装类,使其具有对象的性质,JDK1.5之后提供自动装箱。

       装箱的过程就是创建对象的过程,拆箱的过程就是调用方法的过程

手动装箱:Integer i = new Integer(10);或者 Integer i =Integer.valueOf(10);

自动装箱:Integer i = 10; JDK帮你补全代码

手动拆箱:int n = i.intValue();

自动拆箱:int n = i;

Integer和基本类型相加就会先自动拆箱称为基本类型然后再相加减

例:

int num = 10;

integer num2 = 5;//直接赋值,自动装箱

int i = num+num2;//先自动拆箱再相加减

Integer()构造器中分两种情况,在整数值不超过-128~127的范围内,会根据传入数据的值返回已经创建好的指定的对象,而超过该范围,则会重新创建不同的对象(地址肯定不同)。

在某个范围内的整数型数值的个数是有限的,而浮点数不是,所以像Double.valueOf(double d)直接new了一个新对象。

装箱拆箱的实现过程:装箱过程是通过调用包装类的valueOf方法实现的,而拆箱过程是通过调用包装类的xxxValue方法实现的。

Java中基本类型和字符串之间的转换

基本类型转换为字符串有三种方法:

  1. 使用包装类的toString()方法
  2. 使用String类的valueOf()方法
  3. 用一个空字符串加上基本类型,得到的就是基本类型对应的字符串

字符串转换成基本类型有两种方法:

  1. 调用包装类的parseXxx静态方法
  2. 调用包装类的valueOf()方法转换为基本类型的包装类,会自动拆箱

Date类的使用

  1. 创建一个代表系统当前日期的Date对象

Date d = new Date();

  1. 创建一个指定的时间的Date对象

使用带参数的构造器Date(int year,int month,int day)可以构造指定日期的Date类对象,Date类中年份的参数应该是实际需要代表的年份减去1900,实际需要代表的月份减去1以后的值。//创建一个代表2022年5月1日的Date对象  Date d1 = new Date(2022-1900,5-1,1);

  1. 正确获得一个date对象所包含的信息

int year = d1.getYear()+1900;

int month = d1.getMonth()+1;

//获取日期

int date = d1.getDate();

       int hour = d1.getHours();//默认为0

       int minute = d1.getMinute();

       int second = d1.getSecond();

       //获取星期(东西方文化差异,0代表星期日,1代表星期一,一周从星期日开始)

       int day = d1.getDay();

Calendar类

该类的功能比Date类强大,可以方便的进行日期的计算,获取日期中信息时考虑了时区等问题。而且在实现方式上也比Date要复杂一些。

Calendar类是一个抽象类,构造方法是protected的,所以无法使用Calendar类的构造方法创建对象。Calendar calendar = Calendar.getInstance();//默认为当前日期

创建一个2022年5月1日的对象Calendar c1 = Calendar.getInstance();c1.set(2022,5-1,1);

月份下标从0开始

Calendar类对象信息的设置与获得

Set设置

利用字段类型设置 例:c1.set(Calendar.DATE,1);//将该日期设置为1号,其他所有数值根据这个日期重算。

Add设置

c1.add(Calendar.DATE,10);//c1所表示对象的10天后

c1.add(Calendar.DATE,-10);//c1所表示对象的10天前

使用get()获得

//获得月份

int month = c1.get(Calendar.Month)+1;//月份下标从0开始

//获得星期

int day = c1.get(Calendar.DAY_OF_WEEK);

与Date类不同,1代表星期日,2代表星期一,以此类推。

SimpleDateFormat

默认的时间格式对我们不太友好,要想与我们日常看到的日期格式一样需要调用java.text包中的SimpleDateFormat类来对日期时间进行格式化,可以将日期转换为指定格式的文本,也可以将文本转换为日期。

//创建Date对象,表示当前时间

Date d = new Date();

//创建SimpleDateFormat对象,指定目标格式

SimpleDateFormat sdf = new SimpleDateFormat(“yyyy年MM月dd日 HH:mm:ss”);//字母含义固定

//调用format()方法,格式化时间,转换为指定格的字符串

String today = sdf.format(d);

//输出转换后的字符串

System.out.print(today);

2022年5月1日 17:01:23

字节是计算机存储信息的基本单位,1个字节等于8位,GBK编码中的一个汉字字符存储需要2个字节,1个英文字符存储需要1个字节。一个汉字对应2个字节值,且字节值为负数,原因是每个字节是8位,最大值不超过127,如果超过就会溢出,以负数形式显示。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值