常用类day 15

常用类

  1. 数组:查重 排序 复制 查找
  2. 内部类:成员内部类–和类中的属性,方法同级别 ,在内部类中不能声明static成员
    静态内部类–可以声明static成员
    局部内部类–在外部类的方法中生命的类,仅在方法内部使用
    匿名内部类–相当于接口的实现类
public interface Usb{void service();
}
main(){Usb mouse=new Usb(){//匿名内部类,在声明的同时,直接创建对象,相当于此类实现Usb接口public void service(){}}
}
  1. Object
    1. getClass() 返回值类型是Class 获取当前对象的类型
    2. hashCode() java根据哈希算法得到的一个哈希值 是整数,同一个对象或字符串的哈希值是固定的,不同对象的哈希值可能会重复 重写haseHode()
    3. equals()比较引用类性的值是否相等
      案例–声明对象数组,数组中存放不同的对象(地址不同 并不代表对象不同,通过重写equals 属性值相同则对象相同)
    4. toString()new出的对象 对象里存储的默认是堆空间的地址,如果重写了toString(),获取对象的时候,就将获取到toString里面的内容
    5. finalize() 释放对象所占用的堆内存空间, 通过System.gc()
      【说明】当调用System.gc()方法后,并不是立即就清理内存,根据垃圾回收算法来判断何时

包装类

8个基本类型 byte 1 short 2 int 4 long 8 float 4 double 8 char 2 boolan 1
例如:集合

byteByte
showtShort
intInteger
longLong
floatFloat
doubleDouble
booleanBoolean
charCharacter

【说明】基本类型和包装类类型之间自动转换
包装类的作用:

  1. 让基本类型作为引用类型来使用
  2. 类中封装了一些方法,例如类型转换的方法
    装箱:把子类类型转换父类类型,把基本类型转换为引用类型 自动完成
    拆箱:把父类类型转换为子类类型(强转),把引用类型转为基本类型(自动完成)
package com.qf.pro2103.day15;

public class Demo2 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int num1=10;
		Integer num2=num1;  //装箱,基本类型int 自动转换为引用类型Integer
		int numm3=num2;  //拆箱,引用类型Integer,自动转为基本类型int
	}

}

```java
package com.qf.pro2103.day15;

public class Demo3 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//把字符串转换为数值类型
		String strAge="20";
		//把字符串转换为整形后才能做算术计算
		int intAge=Integer.valueOf(strAge);  //valueOf 转换后是Integer,然后 拆箱
		int intAge2=Integer.parseInt(strAge);//parseInt 直接转换为int
		
		String strPi="3.14";
		float pi=Float.parseFloat(strPi);
		
		System.out.println(intAge);
		System.out.println(intAge2);
	}

}

【面试题】


public class Demo4 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//声明了两个引用类型变量
		Integer num1=126;
		Integer num2=126;
		System.out.println(num1==num2);  //true
		Integer num3=361;
		Integer num4=361;
		System.out.println(num3==num4);  //false
		//面试题问:输出结果是什么? 为什么
		//由于整型值比较常用,所以java默认缓存了256个整数值
		//-128~127之间的值,所以当使用此范围的数值时,共用缓存区地址中的数值
		//如果超出范围,那么将独立开辟空间存储
	}

3.String 重点

//方法一
String name="xxx";
//方法二
String name1=new String("xxx");

String:不可变字符串,不能改变里面的值
本质:是一个final修饰的char类型的数组,随所以字符串一旦赋值不能改变
private final char value[];

		//使用方式1:
		String name1="xxx1";
		//使用方式2:
		String name2=new String("xxx2");
		
		//为什么没有输出应用类型的地址?
		//因为重写了toString方法
		System.out.println(name1);
		System.out.println(name2);
		//改变字符串的值,改变的并不是原字符串的值
		//新开辟方法区中常量池的空间,存放改变后的字符串的值
		name1=name1+",生日快乐!";
		System.out.println(name1);
public class Demo7 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String name="xxx";
		//每次存放字符串的时候,到常量池中查找,此字符串值是否存在
		//如果有,则直接复用其地址
		String name2="xxx";
		System.out.println(name==name2);
		System.out.println(name.equals(name2));
		name2=name2+",生日快乐!";
		System.out.println(name==name2);
	}

字符串重用方法:

  1. length() 字符串中字符的个数
  2. charAt(索引) 返回的是字符串中对应索引位置的字符
  3. contains(字符串) 返回boolean值,判断参数字符串是否在字符串中,如果在,返回true,不在,返回false
  4. toCharArray() 把字符串转换为字符型数组
  5. indexOf(参数字符串) 查找参数字符串在字符串中首次出现的索引位置,如果不在返回-1
  6. trim() 去除字符串两端的空格,返回是去除两端空格后的字符串
  7. replace(“要替换的内容”,“替换成的内容”) 把字符串中参数1的部分,用参数2给替换掉
  8. toUpperCase() 把字符串中的小写字母转为大写
  9. toLowerCase() 把字符串中的大写字母转为小写
  10. endsWith(参数) 判断字符串是否以参数结尾,如果是返回true,否则返回false
  11. split(分割标记) 把字符串按照参数进行分割,返回分割后的数组
  12. substring(beginindex) 从字符串的参数所指的索引位置开始截取,一直截取到最后,返回截取到的字符串
  13. substring(beginindex,endindex) 从字符串的参数1的索引位置开始截取,截取到参数2所对应的索引位置,但是不包含参数2的位置
    【说明】String是不可变字符串,当频繁改变字符串值时,不建议使用String ,浪费内存空间
    使用 StringBuffer 或 StringBuilder,可变字符串
    StringBuffer和StringBuilder的使用方式是相同的
    区别:StringBuffer:线程安全,但是效率较低
    StringBuilder:非线程安全,但是效率高
public static void main(String[] args) {
		// TODO Auto-generated method stub
		StringBuffer sb=new StringBuffer("xxx");
		//给上面的字符串拼接值
		sb.append(",你在干什么?");  //追加
		System.out.println(sb);
		//参数1:插入的索引位置
		//参数2:插入的内容
		sb.insert(0, "嗨!");  //插入
		System.out.println(sb);
		sb.insert(5,",正在上课呢");
		System.out.println(sb);
		//sb.deleteCharAt(0); //删除指定索引位置的字符
		sb.delete(0, 2);  //从参数1的位置开始删除,删除到参数2的位置,但是不包含参数2
		System.out.println(sb);
	}

4.BigDecimal

基本类型中的float,double 存放的是近似值,不能用作价钱来使用
BigDecimal是精确存储及计算的小数类型

import java.math.BigDecimal;

public class Demo11 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//精确计算
		int num=10;
		BigDecimal price=new BigDecimal("0.5");
		BigDecimal totalPrice=price.multiply(new BigDecimal(num));
		System.out.println(totalPrice);
		
		BigDecimal first=new BigDecimal("1.0");
		BigDecimal second=new BigDecimal("0.9");
		
		BigDecimal add=first.add(second); //加法
		BigDecimal sub=first.subtract(second);//减法
		BigDecimal mul=first.multiply(second); //乘法
        //参数1:除数
        //参数2:保留的小数位数
        //参数3:如何保留,通常四舍五入
		BigDecimal div=first.divide(second,3,BigDecimal.ROUND_HALF_UP);//除法
		System.out.println(add);
		System.out.println(sub);
		System.out.println(mul);
		System.out.println(div);
	}

}

【说明】在计算时,小数要以字符串形式参与,这样是精确数
在除法计算时,遇到除不开的情况需要指定,保留的小数位数,及如何取舍

5.日期时间

Date 默认是西方的时间格式,不符合中国的时间认知格式,需要进行格式转换
SimplDateFormat 对时间进行格式化

import java.text.SimpleDateFormat;
import java.util.Date;

public class DateUtil {
	//得到一个符合中国时间格式的字符串时间
	public static String getDateTime(){
		//1、先创建时间对象
		Date date=new Date();
		//2、创建格式化对象
		//在参数中指定时间格式
		SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		//3、对时间进行格式化
		String str=sdf.format(date);
		return str;
	}
}
import java.util.Date;

import com.qf.pro2103.util.DateUtil;

public class Demo12 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Date dt=new Date();
		//输出当前时间
		System.out.println(dt);
		//变成  年-月-日  小时:分:秒
		String str=DateUtil.getDateTime();
		System.out.println(str);
	}

}

如果要获取当前时间中的一部分,使用日历对象

import java.util.Calendar;

public class Demo13 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//getInstance()  得到日历对象,在此方法中new出的日历对象
		Calendar calendar=Calendar.getInstance();
		//日历中默认是当前时间
		//通过日历对象来获取信息
		int year=calendar.get(Calendar.YEAR);
		System.out.println(year);
		int month=calendar.get(Calendar.MONTH);
		//月份:0-11
		System.out.println(month+1);
		//日期
		int day=calendar.get(Calendar.DAY_OF_MONTH);
		System.out.println(day);
		//小时
		int hour=calendar.get(Calendar.HOUR_OF_DAY); //24小时制   HOUR 12小时制
		System.out.println(hour);
		//分钟
		int minute=calendar.get(Calendar.MINUTE);
		System.out.println(minute);
		//秒
		int second =calendar.get(Calendar.SECOND);
		System.out.println(second);
		
	}

}

通过修改日历来设置时间 增加、减少时间

import java.util.Calendar;

public class Demo14 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Calendar calendar=Calendar.getInstance();
		//设置日期
//		calendar.set(Calendar.DAY_OF_MONTH, 5);
//		
//		System.out.println(calendar.getTime());
		//当前时间两个小时后的时间
		calendar.add(Calendar.HOUR_OF_DAY, 2);
	}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

隋zy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值