常用类(下)

包装类

  • 基本数据类型所对应的引用数据类型
  • Object 可统一所有数据,包装类的默认值是null
基本数据类型包装类型
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
booleanBoolean
charCharacter

类型转换与装箱、拆箱

  • 8种包装类提供不用类型间的转换方式
  • Number父类中提供的6个共性方法
  1. parseXXX( )静态方法
  2. valueOf( )静态方法
  • 注意:需保证类型兼容,否则抛出NumberFormatException异常
package com.dian.commonclass.packagingClass;

public class Demo1 {
    public static void main(String[] args) {
//        int num=10;
        //装箱:基本类型 → 引用类型
        //基本类型
        int num1=18;
        //使用Integer类创建对象
        Integer integer1 = new Integer(num1);
        Integer integer2 = Integer.valueOf(num1);
        System.out.println("装箱");
        System.out.println(integer1);
        System.out.println(integer2);

        // 拆箱, 引用类型 → 基本类型
        Integer integer3 = new Integer(100);
        int num2=integer3.intValue();
        System.out.println("拆箱");
        System.out.println(num2);
        //JDK1.5之后,提供自动装箱和拆箱
        int age=30;
        //自动装箱
        Integer integer4=age;
        //自动拆箱
        int age2=integer4;
        System.out.println("-----------------------");
        //基本类型和字符串之间转换
        //1.基本类型转成字符串
        int n1=255;
        //1.1使用+号
        String s1=n1+"";
        //1.2 使用Integer中的toString()方法
        String s2=Integer.toString(n1,16);
        System.out.println(s1);
        System.out.println(s2);

        //2.字符串转成基本类型
        String str="150";
        int n2=Integer.parseInt(str);
        System.out.println(n2);
        //boolean 字符串形式转成基本类型,"true" ---> true 非“true ———> false
        String str2="true";
        String str3="trsss";
        boolean b1=Boolean.parseBoolean(str2);
        boolean b2=Boolean.parseBoolean(str3);
        System.out.println(b1);
        System.out.println(b2);

    }
}

整数缓冲区

  • Java预先创建了256个常用的证书包装类型对象
  • 在实际应用当中,对已创建的对象进行复用
package com.dian.commonclass.packagingClass;

public class Demo2 {
    public static void main(String[] args) {
        //面试题
        Integer integer1 = new Integer(100);
        Integer integer2 = new Integer(100);
        System.out.println(integer1==integer2);   //false
        System.out.println("****************************************");
        // 相当于调用 Integer.valueOf(100);
        // 100在valueof范围内,两个给的一样的地址,后面200就超了,相当于new了一个integer,地址不一样了,所以是false
        Integer integer3 = Integer.valueOf(100);  // 自动装箱
        Integer integer4 = Integer.valueOf(100);
        System.out.println(integer3 == integer4); // true

        Integer integer5 = Integer.valueOf(200);  // 自动装箱
        Integer integer6 = Integer.valueOf(200);
        System.out.println(integer5 == integer6); // false
    }
}

String类

  • 字符串是常量,创建之后不可改变
  • 字符串字面值存储在字符串池中,可以共享
  • String s = "Hello";产生一个对象,字符串池中存储
  • String s = new String("Hello"); 产生两个对象,堆、池各一个

package com.dian.commonclass.stringClass;

import java.util.Arrays;

public class Demo3 {
    public static void main(String[] args) {
        String name="hello";//存在常量池中,常量池在方法区
        name="zhangsan";//”张三“赋值给name变量,给字符串复制时,并没有修改数据,而是重新开辟一个空间
        String name2="zhangsan";

        //演示字符串的另一种创建方式,new String();
        String str=new String("javayyds");
        String str2=new String("javayyds");
        System.out.println(str==str2);
        System.out.println(str.equals(str2));
        System.out.println("--------------字符串方法的使用1-------------");
        // 1. length(); 返回字符串长度
        // 2. charAt(int index); 返回某个位置的字符
        // 3. contains(String str); 判断是否包含某个字符串
        String content="javayyds能不能好起来";
        System.out.println(content.length());
        System.out.println(content.charAt(content.length()-1));
        System.out.println(content.contains("java"));
        System.out.println(content.contains("php"));
        System.out.println("--------------字符串方法的使用2-------------");
        //字符串方法的使用
        // 4. toCharArray(); 返回字符串对应数组
        // 5. indexOf(); 返回子字符串首次出现的位置
        // 6. lastIndexOf(); 返回字符串最后一次出现的位置
        System.out.println(Arrays.toString((content.toCharArray())));
        System.out.println(content.indexOf("java"));
        System.out.println(content.indexOf("java",4));
        System.out.println(content.lastIndexOf("java"));
        System.out.println("--------------字符串方法的使用3-------------");
        // 7. trim(); //去掉字符串前后空格
        // 8. toUpperCase(); toLowerCase(); 转换大小写
        // 9. endWith(str); startWith(str);  判断是否以str 结尾、开头
        String  content2="  hello  world   ";
        System.out.println(content2.trim());
        System.out.println(content2.toUpperCase());
        System.out.println(content2.toLowerCase());
        String filename="hello.java";
        System.out.println(filename.endsWith(".java"));
        System.out.println(filename.startsWith("hello"));
        System.out.println("--------------字符串方法的使用4-------------");
        // 10. replace(char old, char new); 用新的字符或字符串替换旧的字符或字符串
        // 11. split(); 对字符串拆分
        System.out.println(content.replace("java","php"));
        String say = "java is the best language";
        String[] arr = say.split("[ ,]+"); // "[ ,]+" 表示空格 逗号切分 +号表示切分可以多个 比如多个空格
        System.out.println(arr.length); // 5
        for(String string : arr){
            System.out.println(string);
        }
        //补充两个方法equals、compare();比较大小
        System.out.println("****************************************");
        String s1 = "hello";
        String s2 = "HELLO";
        System.out.println(s1.equalsIgnoreCase(s2));// 忽略大小写比较true
        String s3 = "hello";
        String s4 = "HELLO";
        System.out.println(s3.compareTo(s4));// compareTo(); 两字符不同时比较字符字典序的ascii码,首字母比较后相减,
        // 字符相同时比较长度 返回差值,例如hello跟helloabc,返回-3

    }
}

上图的实际案例

package com.dian.commonclass.stringClass;
//需求:
//
//        已知String str = "this is a text";
//        将str中的单词单独获取
//        将str中的text替换成practice
//        在text前面插入一个easy
//        将每个单词的首字母改为大写
public class Demo3Text {
    public static void main(String[] args) {
        String str="this is a text";
        //将str中的单词单独获取
        String[] str1=str.split("[  ,]+");
        for(String arr:str1){
            System.out.println(arr);
        }
        //将str中的text替换成practice
        System.out.println(str.replace("text","practice"));
        //在text前面插入一个easy
        System.out.println(str.replace("text","easy text"));
        //将每个单词的首字母改为大写
        for(int i = 0; i < str1.length; i ++){
            char first = str1[i].charAt(0);
            char upperfirst = Character.toUpperCase(first);
            String news = upperfirst + str1[i].substring(1);
            System.out.println(news);
        }
    }
}

可变字符串

  • StringBuffer : 可变长字符串,运行效率慢、线程安全
  • StringBuilder : 可边长字符串、运行快、线程不安全

效率都比String高且节省内存

package com.dian.commonclass.stringClass;
//效率比String高,比String节省内存
public class BufferBuilder {
    public static void main(String[] args) {
        // StringBuffer 和 StringBuilder 用法一致
        StringBuffer sb = new StringBuffer();
        // 1. append(); 追加
        sb.append("java不错");
        System.out.println(sb.toString());
        // 2. insert(); 添加、插入
        sb.insert(0, "在第一个位置插入");
        System.out.println(sb.toString());
        // 3.replace(); 替换
        sb.replace(0, 9, "str"); // 左闭右开
        System.out.println(sb.toString());
        // 4. delete(); 删除
        sb.delete(0, 5); // 左闭右开
        System.out.println(sb.toString());
        // 5. 清空
        sb.delete(0, sb.length());
    }
}

BigDecimal类

  • 位置 java.math 包中
  • 作用 精确计算浮点数
  • 创建方式 BigDecimal bd = new BigDecimal("1.0");
package com.dian.commonclass.bigDecimalClass;

import java.math.BigDecimal;

public class Demo7 {
    public static void main(String[] args) {
        double d1=1.0;
        double d2=0.9;
        System.out.println(d1-d2);

        //面试题
        double result=(1.4-0.5)/0.9;
        System.out.println(result);
        System.out.println("*******************");
        //BigDecimal,大的浮点数精确计算
        BigDecimal bd1= new BigDecimal("1.0");
        BigDecimal bd2= new BigDecimal("0.9");
        //减法
        BigDecimal r1=bd1.subtract(bd2);
        System.out.println(r1);
        //加法
        BigDecimal r2=bd1.add(bd2);
        System.out.println(r2);
        //除法
        BigDecimal r3=bd1.multiply(bd2);
        System.out.println(r3);

    }
}

Calendar类

  • Calendar提供了获取或设置各种日历字段的方法
  • 构造方法 protected Calendar(); 由于是protected 所以无法直接创建
  • 其他方法
方法名说明
static Calendar getInstance()使用默认时区和区域获取日历
void set(int year, int month, int date, int hourofday, int minute, int second)设置日历的年、月、日、时、分、秒
int get(int field)返回给定日历字段的值。字段比如年、月、日
void setTime(Date date)用给定的date设置此日历时间
Date getTime()返回一个date表示此日历的时间
void add(int field, int amount)按照日历的规则,给指定字段添加或减少时间量
long getTimeInMilles()毫秒为单位返回该日历的时间值
package com.dian.commonclass.CalendarClass;

import java.util.Calendar;

public class Demo8 {
    public static void main(String[] args) {
        // 1. 创建 Calendar 对象
        Calendar calendar = Calendar.getInstance();
        System.out.println(calendar.getTime().toLocaleString());
        System.out.println(calendar.getTimeInMillis());
        // 2. 获取时间信息
        // 获取年
        int year = calendar.get(Calendar.YEAR);
        // 获取月 从 0 - 11
        int month = calendar.get(Calendar.MONTH);
        // 日
        int day = calendar.get(Calendar.DAY_OF_MONTH);
        // 小时
        int hour = calendar.get(Calendar.HOUR_OF_DAY);
        // 分钟
        int minute = calendar.get(Calendar.MINUTE);
        // 秒
        int second = calendar.get(Calendar.SECOND);
        System.out.println(year+"年"+(month+1)+"月"+day+"日"+hour+":"+minute+":"+second);
        // 3. 修改时间
        Calendar calendar2 = Calendar.getInstance();
        calendar2.set(Calendar.DAY_OF_MONTH, 5);
        System.out.println(calendar2.getTime().toLocaleString());
        // 4. add修改时间
        calendar2.add(Calendar.HOUR, 1); // x为正就加 负就减
        System.out.println(calendar2.getTime().toLocaleString());
        // 5. 补充方法
        int max = calendar2.getActualMaximum(Calendar.DAY_OF_MONTH);// 月数最大天数
        int min = calendar2.getActualMinimum(Calendar.DAY_OF_MONTH);
        System.out.println(max);
        System.out.println(min);
    }
    }

SimpleDateFormat类

  • SimpleDateFormat是一个以与语言环境有关的方式来格式化和解析日期的具体类
  • 进行格式化(日期→文本)、解析(文本→日期)
  • 常用的时间模式字母
字母日期或时间示例
y2019
08年中月份08
d月中天数10
H一天中小时(0-23)22
m分钟16
s59
S毫秒356
package com.dian.commonclass.simpleDateFormat;

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

public class format {
    public static void main(String[] args) throws ParseException {
        // 1. 创建对象
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH-mm-ss");
        // 2. 创建Date
        Date date = new Date();
        // 格式化date(日期→字符串)
        String str = sdf.format(date);
        System.out.println(str);
        // 解析(字符串→时间)
        Date date2 = sdf.parse("2021/11/01 22-36-23");
        System.out.println(date2);
    }
}

System类

主要用于获取系统的属性数据和其他操作,构造方法私有的

方法名说明
static void arraycopy(...)复制数组
static long currentTimeMillis();获取当前系统时间,返回毫秒值
static void gc();建议jvm赶快启动垃圾回收期器回收垃圾
static void exit(int status);退出jvm 如果参数是0表示正常退出jvm 非0表示异常退出
package com.dian.commonclass;

public class systemClass {
//    public static void main(String[] args) {
//        //arraycopy 复制
//        //src-原数组 srcPos-从哪个位置开始复制0 dest-目标数组 destPos-目标数组的位置 length-复制的长度
//        int[] arr = {20, 18, 39, 3};
//        int[] dest = new int [4];
//        System.arraycopy(src, srcPos, dest, destPos, length);
//        System.out.println(arr, 4, dest, 4, 4);
//
//        // Arrays.copyOf(original, newLength)
//    }
//    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值