文章目录

  • 一.Java API概述
  • 二.基本类型包装类
    • 1.认识基本类型包装类
    • 2.自动装箱与拆箱
      • 其中存在的问题
      • 解决方法以及==与equals的区别
  • 三.Object类
    • 1.toString
    • 2.equals
  • 四.Arrays类
    • 1.equals
    • 2.toString
    • 3.sort
      • 引用类型数组排序
    • 4.二分查找(折半查找)
    • 5.数组复制
  • 五.String
    • 1.创建字符串对象的两种方式

一.Java API概述

API(Application Programming Interface)应用程序编程接口.

Java语言提供了很多类和接口.我们所说的API是对Java预先定义的类或接口功能和函数功能的**说明文档.**目的是提供给开发人员进行使用帮助说明.

这几节内容我们学习几个简单的基础常用类.

二.基本类型包装类

1.认识基本类型包装类

在之前我们基础语法讲到八个基本数据类型,分别是byte,short,int,long,float,double,char以及boolean.

基本类型变量是通过这八个关键字来声明的,结构比较简单.但是并不是面向对象的,也就是说不是很符合面向对象的设计思想.

Java为了解决这题,实现面向对象的思想,提供了**基本类型包装类.**在类中包含一个基本类型成员变量.在包装类中就可以定义对这些基本类型进行相关操作的方法.

各基本数据类型对应的包装类如下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aZLtQtOE-1655885459965)(C:\Users\ASUS\AppData\Roaming\Typora\typora-user-images\1655721096748.png)]

我们以Integer这个类为例进行介绍:

package morning.integer;public class IntegerDome {public static void main(String[] args) {int a;//基本数据类型,结构很简单Integer b = new Integer(20);//有了对象,就可以调用类定义好中的方法以及静态方法/*构造方法有两种一个是public Integer(int a);一个是public Integer(String a);*//*可以通过类名调用的静态方法*/System.out.println(Integer.MAX_VALUE);//输出Integer类型的最大值System.out.println(Integer.MIN_VALUE);//输出Integer类型的最小值System.out.println(Integer.BYTES);//输出有几个字节System.out.println(Integer.SIZE);//输出有多少个bitSystem.out.println(Integer.max(10, 20));//输出两个数中的大数System.out.println(Integer.min(5, 10));//输出两个数的小数System.out.println(Integer.toHexString(112));//转换为十六进制System.out.println(Integer.toOctalString(112));//转换为八进制System.out.println(Integer.toBinaryString(112));//转换为二进制/*类中的成员方法*/Integer c = new Integer(10);int c1 = c.intValue();//将对象中包装的基本类型取出来//还可以转换为其他类型double c2 = c.doubleValue();//比较b与c包装的值的大小System.out.println(b.compareTo(c));//前者大为1,相等为0,前者小为-1}}

上面我们说明了int类型的包装类它的两个构造方法,以及许多静态的方法,这些静态的方法可以用类名直接调用.虽然说我们用对象依然可以调出来,但是为了保持规范性,我们尽量用类名调用静态方法,用对象调用普通成员方法.

2.自动装箱与拆箱

package morning.integer;public class IntegerDome2 {/*自动装箱和拆箱*/Integer a = new Integer(20);int b = a;//b=20,就是int b = a.intValue();他是隐式的//上面就是自动拆箱,包装类型转换为基本类型Integer c = b;//就是Integer c = Integer.valueOf(b);//自动装箱:把基本类型转换为包装类型}

其中存在的问题

public class ZXproblrm {public static void main(String[] args) {Integer a = -128;Integer b = -128;System.out.println(a==b);//结果为trueInteger x = 128;Integer y = 128;System.out.println(x==y);//结果为false/*上述两种都调用的是valueOf()这个方法,也就是自动装箱为什么结果有true有false呢这其实是因为我们调用的valueOf()这个方法,它里面有缓存池只要数值在-128~127之间,包括-128和127我们的新的Integer对象都直接指向缓存中的对象,超出才会new一个对象因此会造成上面那种差异*/}

解决方法以及==与equals的区别

==

1.==在比较基本类型时,比较的是基本类型的值是否相等

2.==在比较引用类型时,比较的是引用指向的地址是否一致

equals

前面继承中我们讲过,Object类是所有类的父类.而在Object这个类中就有equals这个方法.但是,在Object这个类中equals方法与==没有区别.

在API里还有很多其他类,当然这些类都直接或者间接的继承了Object这个类.并且一般都会对equals这个方法进行重写,使得equals这个方法可以判断对象中的内容是否相等.

/*
接上面的代码
*/
System.out.println(x.equals(y));//输出true

三.Object类

Object类是所有类的父类.

Object可以实现多态,因为他可以表示所有的类

1.toString

toString:将…转换为字符串形式.

public class ObjectDemo1 {/*Object所有类的父类Object可以实现多态,因为他可以表示所有的类*/public static void main(String[] args) {Animal animal = new Animal(2, "小黑");System.out.println(animal);/*对对象进行输出,默认会调用对象中的toString方法因为我们的Animal没有继承其他类,因此直接默认继承了Object类但是Object类中的toString方法是这样的public String toString(){return getClass().getName() + '@' + Integer.toHexString(hashCode())}因此输出的并不是对象中的内容,而是对象的内存地址(哈希值)转为十六进制输出所以需要重写toString方法*/}}

此时输出的结果是morning.object.Animal@1b6d3586

我们在Animal类中重写toString方法

package morning.object;public class Animal {private int age;private String name;public Animal(int age, String name) {this.age = age;this.name = name;}@Overridepublic String toString() {return "Animal{" +"age=" + age +", name='" + name + '\'' +'}';}
}

输出结果为:Animal{age=2, name=‘小黑’}

就可以将对象中的内容打印出来

2.equals

我们先看例子

public class ObjectDemo2 {public static void main(String[] args) {Animal a = new Animal(2, "小黑");Animal b = new Animal(2, "小黑");System.out.println(a.equals(b));//false}}

这样程序输出的结果是false,原因在上文也提到过,因为这里的equals方法调用的是父类的,父类就是Object类,但是Object类里的equals方法作用跟’=='作用一致,因此此处输出为false

因此在Animal类中需要重写equals方法.

@Overridepublic boolean equals(Object o) {if (this == o) return true;if (!(o instanceof Animal)) return false;Animal animal = (Animal) o;return age == animal.age &&name.equals(animal.name);}

这样比较的就是对象中的内容

四.Arrays类

Arrays类中提供一些关于数组操作的方法.

1.equals

这里不再进行代码演示,与之前equals使用方法Arrays.equals(a,b),而且Arrays类对其进行了重写,比较的是a,b两个对象的内容.

2.toString

这里也不做演示,这个方法把数组以字符串形式输出.

3.sort

这个方法对数组内的元素进行排序

import java.util.Arrays;public class ArraysDemo1 {public static void main(String[] args) {int[] a = {7,1,6,3,2,5};Arrays.sort(a);System.out.println(Arrays.toString(a));//[1, 2, 3, 5, 6, 7]/*//也可以按照区间进行排序Arrays.sort(a, 1, 6);System.out.println(Arrays.toString(a));//[7, 1, 2, 3, 5, 6]*/}}

引用类型数组排序

//要实现自定排序可以通过实现接口
//对引用类型排序进行排序默认无法排序,需要特殊处理,转型为camparable类型
public class Car implements Comparable<Car>{private int price;private String name;public Car(int price, String name) {this.price = price;this.name = name;}//如果没有重写这个方法,Arrays.tostring输出的是一连串的地址@Overridepublic String toString() {return "Car{" +"price=" + price +", name='" + name + '\'' +'}';}//此方法用于引用类型排序时,自定义排序规则,在底层源码调用@Overridepublic int compareTo(Car o) {return this.price-o.price;//结果有三种0,-1,1//return this.name.compareTo(o.name);//用名字排序}}
import java.util.Arrays;public class ArraysDemo {public static void main(String[] args) {Car car = new Car(100, "宝马1");Car car1 = new Car(30, "宝马2");Car car2 = new Car(50, "宝马3");Car[] car3 = new Car[3];car3[0] = car;car3[1] = car1;car3[2] = car2;Car[] cars = new Car[3];//equals静态方法,用类名调用System.out.println(Arrays.equals(car3, cars));//toString静态方法,也是类名调用System.out.println(Arrays.toString(car3));Arrays.sort(car3);//对引用类型排序进行排序默认无法排序,需要特殊处理System.out.println(Arrays.toString(car3));}}

4.二分查找(折半查找)

二分查找的作用:用来查找数组中指定的元素提高查询效率

前提:数组必须是有序的.

import java.util.Arrays;public class ArraysDemo2 {public static void main(String[] args) {/*二分查找也叫折半查找,前提是有序的查询数组中有没有指定的元素*/int[] a = {6,2,5,1,8,4,9};Arrays.sort(a);//1,2,4,5,6,8,9int index = Arrays.binarySearch(a, 6);//在a数组找'2'这个元素//index不是负数,就说明找到了//排序完成后,6比5大,从中间开始往右找,返回的是索引System.out.println(index);//也支持区间查找int index1 = Arrays.binarySearch(a, 3, 7, 8);//在3-6(索引)区间内查找8这个元素System.out.println(index1);}}

5.数组复制

数组在创建时必须赋予长度,但是**这个长度定义之后不能修改了.**而且内存空间是连续的.

因此我们要扩容一个数组就比较麻烦,因为要自己写,java也为我们提供了这个方法copyof().

import java.util.Arrays;public class ArraysDemo3 {public static void main(String[] args) {int[] a = {1,2,3,4,5};int[] b = Arrays.copyOf(a, 10);//[1, 2, 3, 4, 5, 0, 0, 0, 0, 0]System.out.println(Arrays.toString(b));}}

五.String

java中所有字符串都可以看做是String类的实例.

**String对象的值一旦定义就不能改变.**在jdk8之前,底层是一个char数组.

1.创建字符串对象的两种方式

主要有两种,我们依然通过代码来看

public class stringDemo {public static void main(String[] args) {String s = "abcd";//这里创建第一个对象s += "efg";//这里又创建了一个新的对象System.out.println(s);/*隐式的创建对象创建的对象在字符串常量池中存储,如果值相同,直接返回常量池中的对象地址如果值不同就在常量池建造新的字符串*/String s1 = "adsa";String s11 = "adsa";System.out.println(s1==s11);//true/*通过构造方法创建对象会在堆空间创建不同的对象,即使字符串内容相同*/String s2 = new String("ads");String s22 = new String("ads");System.out.println(s2==s22);//false}}

s);

    /*隐式的创建对象创建的对象在字符串常量池中存储,如果值相同,直接返回常量池中的对象地址如果值不同就在常量池建造新的字符串*/String s1 = "adsa";String s11 = "adsa";System.out.println(s1==s11);//true/*通过构造方法创建对象会在堆空间创建不同的对象,即使字符串内容相同*/String s2 = new String("ads");String s22 = new String("ads");System.out.println(s2==s22);//false}

}


## 

常用类(API)第一节相关推荐

  1. 生活常用类API推荐

    之前在网上看到了一些很不错的生活常用类的API,今天在这里整理出来分享给大家~ 阿里云 中华万年历API,中华万年历 宜忌测开张.测乔迁.测结婚.测签约.测动工.测栽种.测出行.测入宅.测纳彩:逢凶化 ...

  2. 重学JavaSE 第11章 : 常用类API、String、日期API、比较器、BigDecimal、System等

    文章目录 一.字符串相关的类 1.1.String类的概述 1.2.理解String的不可变性 1.3.String不同实例化方式的对比 1.4.String不同拼接操作的对比 1.4.1.Strin ...

  3. javaSE探赜索隐六(常用类API)

    常用类(API) 概述 java API 就是java应用程序编程接口.在我们程序员看来,API就是对java中预定义的类或者接口中的.属性.方法的功能进行说明的文档. Object Object类是 ...

  4. Java学习——常用类(API)

    每日好句好段: 不理智的善良,都是犯罪.不要哭泣,不能哭泣,哭泣解决不了任何的问题!在这个冰冷的世界上,唯有实力才是一切啊! 文章目录 前言 一.Arrays 二.StringBuilder 三.日期 ...

  5. 【JavaSE基础】03-常用类API(一)

    这一章节我们将会解释到为什么一维 int 类型数组名直接打印的是[I@659e0bfd,二维 int 类型数组名直接打印的又是[[I@659e0bfd,而类名打印出来又会是什么呢?又代表的是什么意思呢 ...

  6. java api 第一个类是_JAVA之Object常用API

    [Object类.常用API] 主要内容Object类 Date类 DateFormat类 Calendar类 System类 StringBuilder类 包装类 第一章 Object类 1.1 概 ...

  7. 【大数据入门笔记系列】第一节 大数据常用组件

    [大数据入门笔记系列]第一节 大数据常用组件 大数据释义 大数据组件 跳转 大数据释义 近些年来,坊间一直流传着这样的言论:"大数据时代,人人都在裸奔".对于外行人来说,对于&qu ...

  8. Api - 应用程序接口、常用类、 方法(Object、Date、Calendar、DateFormat、String、StringBuilder、包装类)

    Object 所有类的父类 Class getClass() 通过对象的该方法,可以获得对象对应的类的字节码对象 Object clone() - 克隆.赋值 调用方法的对象, 需要类实现Clonea ...

  9. java object save_Java之Object类和常用的API

    Object类和常用的API 学习过程中的笔记,涉及到Objetc中的equals方法和toString方法,日期类Date,日历类Calendar,日期格式化类SimpleDateFormat以及基 ...

  10. Hbase API中常用类介绍和使用

    网上Hbase的介绍有很多,案例也不少.自己写了个Demo,进行一些简单的总结. HBase 常用类介绍. JAVA API 和 HBase数据库模型之间的关系 JAVA 类 Hbase 数据模型 H ...

最新文章

  1. css6图层 解锁,OpenLayers 5至6:图层无法渲染
  2. Java Web架构知识整理——记一次阿里面试经历
  3. linux之变量的设置与显示
  4. 焊接件技术要求怎么写_专硕论文写作要求有高么?具体怎么写?
  5. 检查mysql dbcc_dbcc checkdb查出来显示这些信息我该怎么处理?谢谢 - SQL Server论坛 - 51CTO技术论坛_中国领先的IT技术社区...
  6. 探讨NET Core数据进行3DES加密或解密弱密钥问题
  7. REVERSE-COMPETITION-NEPCTF
  8. Linux以及各大发行版介绍
  9. 吴恩达斯坦福大学机器学习 CS229 课程学习笔记(二)
  10. 云南大学软件测试,软件测试大赛云南省省赛在软件学院如期举行
  11. Hibernate(1)
  12. python窗口居中_Tkinter窗口在屏幕居中的问题
  13. 无需软件,使用copy命令合并FLV文件
  14. 达人评测 i7 11390h和i5 11320h选哪个好
  15. 青柠起始页-浏览器起始页(一个简洁、美观、实用的浏览器起始页。)
  16. 网络架构模式 B/S C/S
  17. 最新的CC2642R与CC2640、CC2640R2F有什么改进?
  18. 实战演练--保存QQ账号与密码
  19. NS2中的数据包common头结构hdr_cmn
  20. 机票信息全方位实时采集方案

热门文章

  1. C/C++——set的基本操作总结
  2. 360html文件打不开,为什么360安全卫士打不开
  3. cpu功耗排行_AMD、Intel CPU处理器性能、功耗及性价比排行(更新中)
  4. Mybatis批量新增
  5. 一封谷歌账号辅助邮箱变更的广告邮件
  6. 【Appium】手机按键(比如返回键、Home键等)的数字代号总结
  7. 关于网络口碑研究小组
  8. Enterprise Architect学习(1)
  9. D3.js学习笔记七:多系列折线图与图例
  10. 大学生应该懂得。。。葡萄酒知识