【Java基础】第三章 | Java 常用的 API

目录

| 数据类型操作类

| 各种数据类型的转换

| 系统类

| 数学类

| 日期类


| 数据类型操作类

Object

  • Object是所有类的父类。若一个类没有继承任何类,则会默认继承Object类

  • Object类的方法,任何对象都可以调用

obj.toString();   //如重写了,则返回一个String字符串,包含对象的内容。若未重写的话,返回的是类对象的地址
obj.equals(obj2);   //如重写了,则比较的是内容(如String)。若未重写的话,比较的是对象的地址
Objects.requireNunNull(obj);   //【特别】这是一个 Objects 的静态方法,参数是对象。作用:判断对象是否为null,是的话则抛异常
Objects.requireNunNull(obj,String str);   //和上面作用一样,但是多了 str 异常的提示信息

String

str.equals(str2);   //比较内容是否相同。若str是null则会报错。因此str和"abc"比较的话,推荐写成 "abc".equals(str)
str.equalsIgnoreCase(str2);   //忽略大小写比较字符串内容
char[] charArrays = str.toCharArray();   //字符串转字符数组
byte[] byteArrays = str.toByteArray();   //字符串转字节数组
str.replace(oldString , newString);   //替换字符串的子串
str.length();   //获取字符串长度
str.concat(str2);   //拼接字符串(效率高于加法。但是要求两个都是String)
str.charAt(a);   //返回索引a处的char
str.indexOf(String str);   //查询子串第一次在字符串中出现的索引
str.substring(int a);   //截取 [a,str.length()] 的子串
str.substring(int a1 , int a2);   //截取[a1 , a2) 的子串
str.split(String str);   //按str分割字符串,返回字符串数组

StringBuilder

  • StringBuilder能提高字符串处理效率的类,因为它在处理字符串的时候不用额外产生很多临时的匿名类

  • 原理:StringBuilder有一个字符串缓冲区,可以提高字符串的操作效率

    StringBuilder在内存中始终是一个数组,占用空间少,效率高。并且其底层数组的长度是固定的,若超出了长度容量,则其会自动扩容。

  • StringBuilder相比于String的优点:在处理较多字符串的拼接处理的时候,我们使用StringBuilder,能大大提高程序的运行效率。

//构造方法
StringBuilder bu = new StringBuilder();   //构造一个空Builder
StringBuilder bu = new StringBuilder(String str);   //构造一个有初始内容的Builder	

//成员方法
buNew = bu.append(String str);   //拼接String,【原先的Builder也会变化!!】【并且也会返回一个新的Builder,可以选择接收或者不接受】
							     //实际上,返回的是 bu.this == bu,相当于把bu的地址赋值给了buNew。基于此,我们在调用append的时候无需接收返回值
bu.append(String str1).append(String str2).……;   //链式拼接
String str = bu.toString();   //把StringBuilder 转为 String

包装类

 

//装箱(JDK1.5之后支持自动装箱)
Integer in1 = new Integer(1);   //构造方法 + int参数 装箱
Integer in2 = new Integer("2"); //构造方法 + String参数(内容必须是纯数字) 装箱
Integer in3 = Integer.valueOf(3);  //静态方法 + int参数 装箱
Integer in4 = Integer.valueOf("4");//静态方法 + String参数(内容必须是纯数字) 装箱

//拆箱(JDK1.5之后支持自动拆箱)
int num = Integer的对象.intValue();
  • 自动拆箱的应用:

    • 如list.add(1);会自动转为list.add(new Integer(1));。

    • 再如包装类加减法运算,会先自动拆箱为基本类型再运算、装箱。(包装类是对象,对象是无法直接参与运算的)


| 各种数据类型的转换

基本类型和字符串的转换

//基本类型 → 字符串
String str = 基本数据类型 + "";   //方法一
String str2 = 包装类名.toString(int num);  如 String str2 = Integer.toString(2);   //方法二
String str3 = String.valueOf(int num);  //方法三

int[ ] → String

String s = "";
for(int i=0;i<arr.length;i++){
   s = s + arr[i];//拼接成字符串,最终放在变量s中
}

String → int[ ]

String str="123456";
    int[] a = new int[str.length()];
    for(int i=0;i<str.length();i++) {
        a[i]  = str.charAt(i)-'0';
    }

String → char[ ]

String str="123456";
char[] c = str.toCharArray() ;
System.out.println(c);

String → byte[ ]

byte[] a = str.getBytes();

char / array [ ] → String

char[] c = {'a','s','d','4','5',};
String str = new String(c);
System.out.println(str);
*不适用于int[ ]

char[ ] → int[ ]

char[] c = { '1', '2', '3', '4', '5', };
    int[] a = new int[c.length];
    for (int i = 0; i < 5; i++) {
        a[i] = c[i] - '0';
        System.out.println(a[i]);
}

int[ ] → char[ ]

int[] a = {1,2,3,4,5};
char[] c = new char[a.length];
for (int i = 0; i < 5; i++) {
    c[i] = (char) (a[i]+'0');
    System.out.println(c[i]);
}

int → String

String str = Integer.toString(i);
String s = String.valueOf(i);
String s = "" + i;

String → int

int i = Integer.valueOf(str).intValue();
int num = String.parseInt/Double/……(String str);  如 int num = String.parseInt("2");

String byte[ ] char[ ] 的转换

//byte[]转为String,对应的数字会变为对应ASCII字符
byte[] array = {61,62,63};
String a = new String(array,0,3);
​
//String转为char[],对应的字符原封不动
char[] array2 = str.toCharArray();
​
//String转为byte[],对应的字符会变为对应的ASCII码
byte[] array3 = str.getBytes();

| 系统类

System

  • System中的方法都是静态的,因此无需创建对象即可使用

System.currentTimeMills;   //以毫秒为单位的当前时间。其差值可以用于计算程序段的运行时间。

System.arraycopy(Object src被复制的数组 , int srcPos原数组的起始位置 , Object dest被粘贴的数组(目标数组), int destPos目标数组起始位置, int length要复制的数组元素数量);   //复制数组

| 数学类

Random

Random r = new Random();
int num = r.nextInt();    //返回[0,∞]
int num2 = r.nextInt(a);  //返回[0,a) a必须大于0

Math

double num = Math.abs(double);   //绝对值
double num = Math.ceil(double);   //向上取整(无视小数)
double num = Math.floor(double);   //向下取整(无视小数)
long num = Math.round(double);   //按数学规则四舍五入。返回的是long
double Pi = Math.PI;   //圆周率


| 日期类

Date

Date date = new Date(int time);   //有参构造
System.out.pritln(date);   //获取1970年 + time(ms) 的时间
​
​
Date date = new Date();   //无参构造
System.out.pritln(date);   //获取现在的时间
date.getTime();   //获取1970年到如今的时间(ms) (只有毫秒值才能直接相减,Data是不能相减的)

DateFormat(Date的辅助类)

  • DateFormat的作用:对Date的格式进行自定义

  • DateFormat是一个抽象类!实际中都是使用其子类 SimpleDateFormat

  • DateFormat的有参构造str:指定输出的Date的格式,如:"yyyy年MM月dd日 HH时mm分ss秒"。详细的字母含义请参考 DateFormat详细介绍

SimpleDateFormat sdf = new SimpleDateFormat(String str);   //有参构造:
String time = sdf.format(Date date);   //获取date格式化后的字符串
Date date = sdf.parse(String time);   //若字符串time符合sdf构造方法的格式,则根据这个时间字符串返回一个date对象

Calender(Date的辅助类)

  • Calender的作用:对Date的数字更便捷地进行计算

  • Calendar和DateFormat一样,也是一个抽象类。但是我们不用其子类GregorianCalendar创建Calender的对象,而是通过其子类的静态方法getInstance创建

  • Calender的get方法,常用的字段有:AM、DATE、MONTH、YEAR、DAY_OF_WEEK、DAY_OF_MONTH、DAY_OF_YEAR 等

Calendar c = Calendar.getInstance();   //通过子类的静态方法getInstance创建Calender对象(体现了多态)
​
int year = c.get(Calender.YEAR);   //通过get方法,获取指定字段如YEAR的值
c.set(int field ,int value);   //通过set方法,设置指定字段的值
c.set(yyyy , MM , dd);        //set方法也可以直接设置年月日
c.add(int field ,int amount);   //add方法可以为指定字段做加法
Date date = c.getTime();       //获取当前Calender对应日期的Date对象

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Graskli

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

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

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

打赏作者

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

抵扣说明:

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

余额充值