JAVA笔记 - API基础

1. toString 和 equals 方法

1. toString

Object类是类层次结构的根类,每个类都使用Object作为超类。

假设我们定义一个Person类,它其实默认继承了Object类,所以可以使用Object类中的toString方法

Object 类的 toString 方法返回一个字符串,该字符串由类名(对象是该类的一个实例)、at 标记符“@”和此对象哈希码的无符号十六进制表示组成。换句话说,该方法返回一个字符串,它的值等于:

getClass().getName() + '@' + Integer.toHexString(hashCode())

而直接打印对象的地址值没有意义,需要重写Object类中的toString方法

2. equals

判断其他的某个对象是否和这个对象「相等」

  1. 基本数据类型,比较
  2. 应用数据类型,比较地址值

而直接比较对象的地址值没有意义,需要重写Object类中的equals方法

以Person类为例,其中含有两个成员变量String nameint age需要先将obj向下转型为Person类,才能比较两个对象的属性。假设name和age都相等,则两个对象相等,可以这样写

@Override
public boolean equals(Object o) {
    if (this == o) return true;		//如果是本身,那么直接true
    if (o == null || getClass() != o.getClass()) return false;  //提升效率
    Person person = (Person) o;  //需要一个向下转型
    return age == person.age && Objects.equals(name, person.name);
}

getClass() != o.getClass() 使用反射技术,判断o是否为Person类型

3. java.lang package

java.lang 中的langlanguage的缩写

使用方法:

  1. 看包路径
  2. 看使用方法
  3. 看方法摘要

2. Scanner类

可以通过Scanner进行键盘输入,Scannerjava.util包内

引用类型的一般使用步骤:

  1. 导包 import 包路径.类 只有java.lang包下的内容不需要导包,其他的包都需要import
  2. 创建 类名称 对象名 = new 类名称();
  3. 使用 对象名.成员方法名();

Scanner.in 代表从键盘输入

  1. 接收int类型: sc.nextInt()
  2. 接收String类型: sc.next()

事实上,Scanner接收到的都是String类型,只是它通过方法转换成了对应的类型

3. Random类

Random属于java.util

  1. 导包 java.util.Random
  2. 创建 Random r = new Random();
  3. 使用 注意有多种重载方式
  • 使用无参时时随机返回一个int范围内的值(包含正负)
  • 使用有参时,如 int num = r.nextInt(10) 则生成一个[0,10)int值,这个参数叫bound

有时也会使用 int num = r.nextInt(10)+1 来生成一个 1~10 的整数

4. ArrayList类

集合类:面向对象类,对事物的描述都是通过对象实现。为方便对多个对象进行操作,必须对多个对象进行存储,因此需要容器类。容器类特点是长度可变。

集合可以作为方法的参数,也可以作为返回值,传入的其实是地址值

泛型

定义: 装在集合当中的元素,全部统一为一个类型

对于ArrayList来说,有一个尖括号表示泛型

泛型只能是引用类型,不能是基本类型

因为集合中保存的都是地址值

创建格式: ArrayList<string> list = new ArrayList<String>();

对于ArrayList来说,直接打印得到的不是地址值,若内容为空,则输出 []

常用的ArrayList方法

  • public boolean add(E e) 在集合中添加元素,返回是否成功

对于ArrayList来说,add添加动作一定是成功的,返回值可用可不用,但对于其它集合来说,add可能不成功,故不能省略

  • public E get(int index) 在集合中获取元素,参数是索引编号(索引从0开始)
  • public E remove(int index) 在集合删除元素,返回被删除的元素
  • public int size()

5. String类

java.lang.String 类代表字符串,字符串的内容永不可变,字符串可以共享使用

创建String的四种方法

  • public String() 创建空白字符串

  • public String (char[] array) 根据字符数组内容创建

  • public String()=(byte[] array) 根据字节数组内容创建

    前三种是new出来的,第四种直接写上双引号,就是字符串对象,只要是字符串,一定是对象

  • String str = "hello" 直接创建

字符串的常量池

程序当中直接写上的双引号字符串,就在字符串常量池中(在中)

对于基本类型来说, ==是进行数值的比较
对于引用类型来说, ==是进行地址的比较

String str1 = "abc";
String str2 = "abc";
char[] charArray ={'a','b','c'};
String str3 = new String(charArray);
//str1 == str2

== 是进行对象的地址值比较,如果确实需要字符串的内容比较,可以使用两个方法

方法一public boolean equals(Object obj) : 参数可以是任何对象,当参数是一个字符串且内容相同时才会返回true

方法二忽略大小写的比较 public boolean equalsIgnreCase(String str)

String str1 = "hello";
System.out.println("hello".equals(str1));
//尽量写成 "abc".equals(str)

空指针异常

在调用方法时,如果是null.method,会出现空指针异常 NullPointerException,引用类型可以为Null

常用API

int length()

char charAt(int)

int indexOf(String str)

String concat(String str) :拼接字符串,返回新的字符串

char[] toCharArray() 字符串转字符数组(方便遍历用)

byte[] getBytes()

String replace(CharSequence oldString ,CharSequence newString) 字符串数组的替换

CharSquence 是一个接口

String[] split (Sring regex) 按照参数的规则,将字符串拆分成若干部分

Str += 在字符串原有的基础上拼接(末尾追加)

6. Arrays

Arrays属于 java.util 包内,使用时需要导包

常用API

Arrays.toString

Arrays.sort (默认升序,字母按照ASCII码)

如果比较的是自定义的类型,那么这个自定义的类需要有comparable或者comparator接口的支持

注意:Array是一个数组,Arrays是一个静态类

7. Math

Math属于 java.util 包内,使用时需要导包

常用API

double abs(double num) 获取绝对值

double ceil(double num) 向上取整

double floor(double num) 向下取整

long round(double num) 四舍五入

math.pi 获取 π \pi π 的常量值

double 类型的数字也可以 ++

8. 日期和时间类

常用方法

获取从1970年1月1日现在经过了多少毫秒 System.currentTimeMillis()

这个和 getTime()效果是一样的

DateFormat类

DateFormat是一个抽象类,所以要调用它的子类SimpleDateFormat来使用

作用:

  1. 格式化,将日期转化为文本 String format(Date date)
  2. 解析,将文本转化为日期 Date parse(String source)

构造方法:写对应的模式

"yyyy-MM-dd HH:mm:ss" "yyyy年MM月dd日 HH时mm分ss秒"

Calendar类

Calendar类是一个抽象类,里面提供了很多操作日历字段的方法,Calendar无法直接创建对象使用,里边有一个静态方法叫getInstance(),该方法返回了Calendar类的子类对象

static Calendar getInstance()使用默认时区和语言环境获得一个日历

public void set(int field,int value) 将给定的日历字段设置为给定值

public void get(int field) 返回给定日历字段的值

public abstract void add(int field,int amount) 为给定的日历字段添加或减去字段量

以上的field都需要Calendar.XX 获得

特别注意 这里field中的MONTH 从一月~十二月对应的是0~11

9. System 类

java.lang.System 所以无需导包

  1. 获得系统时间 获取从1970年1月1日现在经过了多少毫秒 System.currentTimeMillis()

  2. 复制数组

public static void arraycopy(Object src,  //原数组
             				 int srcPos,	//起始位置
                             Object dest,	//目标数组
                             int destPos,	//目标数据中的起始位置
                             int length)  //要赋值的数组元素的数量

10. StringBuilder

StringBuilder称为字符串缓冲区,可以将它视为一个长度可以变化的字符串

StringBuilder在内存中始终是一个数组,占用空间少,效率高,如果超出了StringBuilder的容量,可以自动扩容

缓冲区可以提升操作效率,StringBuilder的初始容量为16个字符

String是一个常量,它们的值在创建之后不能修改,字符串的底层是一个被final修饰的数组,是一个常量

String在进行字符串相加的时候,内存中会有多个字符串,占用空间多,效率低下

构造方法

  1. StringBuilder() 构造一个不带任何字符的字符串生成器,初始容量为16字符
  2. StringBuilder(String str) 构造一个字符串生成器,并初始化为指定的内容

常用方法

  1. append

    append方法返回的是this,调用方法的对象sbthis==sb

    使用append方法无需接受返回值

    可以使用链式编程,方法返回值是一个对象,可以继续调用方法

    sb.append("a").append("b").append("c");

  2. toString

    将当前的StringBuilder转化为字符串形式返回

    1. 将String转化为StringBuilder,可以使用StringBuilder的构造方法
    2. 将StringBuilder转化为String,可以使用toString方法

11. 包装类

概述

如果想要向集合中存储基本类型的数据,必须使用基本类型对应的包装类

引用类型都是object类型

包装类数值不可变(只能替换掉),带有修饰符final,比基本类型多了一个null,在使用上可以无缝切换

基本类型包装类[属于引用类型]
byteByte
shortShort
intInteger[特殊]
floatFloat
doubleDouble
charCharacter[特殊]
booleanBoolean
longLong

创建一个int类型的集合 :ArrayLish<Integer> list = new ArrayList<>();

从JDK1.5开始,支持自动装箱、自动拆箱

  • 自动装箱:基本类型—>包装类型
  • 自动拆箱:包装类型—>基本类型

装箱

把基本类型的数据,包装到包装类中

构造方法

Integer(int value) 构造一个新分配的 Integer 对象,它表示指定的 int值。

Integer(String s) 构造一个新分配的 Integer 对象,它表示 String 参数所指示的 int值。

静态方法

static Integer valueOf(int i) 返回一个表示指定的 int 值的 Integer 实例。

static Integer valueOf(String s) 返回保存指定的 String 的值的 Integer 对象。

拆箱

在包装类中取出基本数据类型

成员方法

int intValue()int 类型返回该 Integer 的值。

基本类型和String的转化

基本类型->String
  1. 基本类型的值+"" (最常用方法)
  2. 包装类的静态方法 toString
  3. String类的静态方法 valueOf
String->基本类型

使用包装类的静态方法 parseXXX ,常用的有 parseInt parseDouble

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值