Java核心技术第五章--继承(二)

Object:所有类的超类

Object类是Java中所有类的始祖,在Java中每个类都是有它扩展而来的。

equals方法
Object类中的equals方法用于检测一个对象是否等于另一个对象
Java语言规范要求equals方法具有下面的特性:
    1、自反性:对于任何非空引用x,x.equals(x)应该返回true;
    2、对称性:对于任何引用x,和y,当且仅当,y.equals(x)返回true,x.equals(y)也应该返回true;
    3、传递性:对于任何引用x,y,z,如果x.equals(y)返回true,y.equals(z)返回true,那么x.equals(z)也应该返回true;
    4、一致性:如果x,y引用的对象没有发生变化,反复调用x.equals(y)应该返回同样的结果;
    5、对于任意非空引用x,x.equals(null)返回false;

static Boolean equals(type[] a,type[] b)
如果两个数组长度相同,并且在对应位置上的数据元素也相同,将返回true。 
static boolean equals(Object a, Object b)
如果a和b都为null,返回true;如果只有其中之一为null,返回false;否则返回a.equals(b)
hashCode()方法
散列码(hash code)是由对象导出的一个整型值。散列码是没有规律的。如果x和y是两个不同的对象,x.hashCode()与y.hashCode()基本不会相同。如果重新定义equals()方法,就必须重新定义hashCode()方法,以便用户可以将对象插入到散列表中。 equals()与hashCode()的定义必须一致:如果x.equals(y)返回true,那么x.hashCode()就必须与y.hashCode()具有相同的值。hashCode()方法应该返回一个整形数值(也可以是负数),并合理地组合实例域的散列码,以便能够让各个不同的对象产生的散列码更加均匀。

int hashCode() 
返回对象的散列码(其值为对象的存储地址)
static int hash(Object… objects) 
对各个参数调用Objects.hashCode,并组合这些散列值
static int hashCode(Object a)
如果a为null,返回0;否则,返回a.hashCode()
static int hashCode((int|long|short|byte|double|float|char|boolean) value) 
返回给定值的散列码
static int hashCode(type[] a) 
计算数组a的散列码
常用IPA
java.lang.Object 1.0
Class getClass( )
返回包含对象信息的类对象。稍后会看到 Java 提供了类运行时的描述, 它的内容被封 装在 Class 类中。
boolean equals(Object otherObject )
比较两个对象是否相等, 如果两个对象指向同一块存储区域, 方法返回 true ; 否 则 方 法返回 false。在自定义的类中, 应该覆盖这个方法。
String toString( )
返冋描述该对象值的字符串。在自定义的类中, 应该覆盖这个方法。

java.lang.Class 1.0
String getName()
返回这个类的名字
Class getSuperclass()
以 Class 对象的形式返回这个类的超类信息

二、 泛型数组列表:ArrayList (重点)

2.1、创建数组列表,添加元素
 在 Java中, 解决动态调整数组大小的方法是使用 Java 中另外一个被称为 ArrayList 的类。它使用起来有点像数组,但在添加或删除元素时, 具有自动调节数组容量的 功能,而不需要为此编写任何代码。
ArrayList 是一个采用类型参数(type parameter) 的泛型类(generic class)。为了指定数 组列表保存的元素对象类型,需要用一对尖括号将类名括起来加在后面
数组列表管理着对象引用的一个内部数组。最终, 数组的全部空间有可能被用尽。这就 显现出数组列表的操作魅力: 如果调用 add且内部数组已经满了,数组列表就将自动地创建 一个更大的数组,并将所有的对象从较小的数组中拷贝到较大的数组中。

 public class Test {

    public static void main(String[] args) throws IOException {

        // 创建数组列表对象
        // 默认初始容量 : 10
        // private static final int DEFAULT_CAPACITY = 10;
        ArrayList<People> peopleList = new ArrayList<>();

        // 可以把初始容量传递给 ArrayList 构造器:
        //ArrayList<Employee> staff = new ArrayListo(100);

        // 改变数组列表的初始化容量,可以使用默认值.
        peopleList.ensureCapacity(20);

        //使用add 方法可以将元素添加到数组列表中。
        peopleList.add(new People("张三","24"));
        peopleList.add(new People("李四","26"));
        peopleList.add(new People("大白","4"));


        /**
         * 一旦能够确认数组列表的大小不再发生变化,就可以调用 trimToSize方法。
         * 这个方法将 存储区域的大小调整为当前元素数量所需要的存储空间数目。
         * 垃圾回收器将回收多余的存储 空间。 一旦整理了数组列表的大小,
         * 添加新元素就需要花时间再次移动存储块,所以应该在确 认不会添加任何元素时,
         * 再调用 trimToSize。
         */
        peopleList.trimToSize();

        // 返回数组列表中包含的实际元素数目。不是容量的大小.
        int size = peopleList.size();

        System.out.println(size);

        peopleList.forEach(item -> {
            System.out.println(item.toString()); // 必须重写toString方法
        });
    }
}

java.util.ArrayList 1.2 API

ArrayList( )
构造一个空数组列表。
ArrayList( int initialCapacity)
用指定容量构造一个空数组列表。 参数:initalCapacity 数组列表的最初容量 *
boolean add( E obj )
在数组列表的尾端添加一个元素。永远返回 true。 参数:obj 添加的元素
int size( )
返回存储在数组列表中的当前元素数量。(这个值将小于或等于数组列表的容量。 )
void ensureCapacity( int capacity)
确保数组列表在不重新分配存储空间的情况下就能够保存给定数量的元素。 参数:capacity 需要的存储容量
void trimToSize( )
将数组列表的存储容量削减到当前尺寸。
2.2、访问数组列表元素
使用 get 和 set 方法实现访问或改变数组元素的操作,而不使用人们喜爱的 [ ]语法格式。
设置某个元素的值,1为元素的下标,参考数组.
peopleList.set(1, new People("小白","12") );
获取某个元素的值
People people = peopleList.get(1);
插入一个元素.
在下表为1的元素之前插入一个元素,之后的元素后移一位.
peopleList.add(1,new People("白","11"));
移除一个元素
移除下表为2的元素
peopleList.remove(2);

API

void set(int index,E obj)
设置数组列表指定位置的元素值, 这个操作将覆盖这个位置的原有内容。
参数:
index 位置(必须介于 0 ~ size()-l 之间)
obj 新的值
E get(int index)
获得指定位置的元素值。
参数: index 获得的元素位置(必须介于 0 ~ size()-l 之间)
void add(int index,E obj)
向后移动元素,以便插入元素。
参数: index 插入位置(必须介于 0 〜 size()-l 之间)
obj 新元素
E removednt index)
删除一个元素,并将后面的元素向前移动。被删除的元素由返回值返回。
参数:index 被删除的元素位置(必须介于 0 〜 size()-1之间)

三、对象包装器与自动装箱

有时, 需要将 int 这样的基本类型转换为对象。所有的基本类型都冇一个与之对应的类。 例如,Integer 类对应基本类型 int。通常, 这些类称为包装器 ( wrapper) 这些对象包装器类 拥有很明显的名字:Integer、Long、Float、Double、Short、Byte、Character、Void 和 Boolean (前 6 个类派生于公共的超类 Number)。对象包装器类是不可变的,即一旦构造了包装器,就不 允许更改包装在其中的值。同时, 对象包装器类还是 final, 因此不能定义它们的子类。


将一个int值赋给一个Integer对象时,会自动装箱.
当将一个 Integer 对象赋给一个 int 值时, 将会自动地拆箱。
== 运算符也可以应用于对象包装器对象, 只不过检测的是对象是 否指向同一个存储区域, 因此,下面的比较通常不会成立:
Integer a = 1000; 
Integer b = 1000; 
if (a == b) ... 
自动装箱规范要求 boolean、byte、char <=127,介于 -128 ~ 127 之间的 short 和 int 被包装到固定的对象中。例如,如果在前面的例子中将 a 和 b 初始化为 100,对它们 进行比较的结果一定成立。
        Integer a = 127;
        Integer b = 127;
        System.out.println(b == a); //true

        Integer c= 128;
        Integer d = 128;
        System.out.println(c == d); //false
API java.lang.Integer 1.0

int intValue( )
以 int 的形式返回 Integer 对象的值(在 Number 类中覆盖了 intValue方法) 。 * static String toString(int i )
以一个新 String 对象的形式返回给定数值 i 的十进制表示。
static String toString(int i ,int radix)
返回数值 i 的基于给定 radix 参数进制的表示。
static int parselnt(String s)
static int parseInt(String s,int radix)
返回字符串 s 表示的整型数值,给定字符串表示的是十进制的整数(第一种方法), 或者是 radix 参数进制的整数(第二种方法 )。
static Integer valueOf(String s)
Static Integer value Of(String s, int radix)
返回用 s 表示的整型数值进行初始化后的一个新 Integer 对象, 给定字符串表示的是十 进制的整数(第一种方法), 或者是 radix 参数进制的整数(第二种方法)。

API java.text.NumberFormat1.1

Number parse(String s)
返回数字值,假设给定的 String表示了一个数值。

四、参数数量可变的方法

用户自己也可以定义可变参数的方法, 并将参数指定为任意类型, 甚至是基本类型。下 面是一个简单的示例:其功能为计算若干个数值的最大值。
public class Test {

    public static void main(String[] args) throws IOException {
        int num1 = add(1,2,34);
        System.out.println(num1);

        int num2 = add(4,3,1,4,2,1,4,-9);
        System.out.println(num2);
    }

    public  static int add(int... value){
        int count = 0;
        for (int i: value){
            count += i;
        }
        return count;
    }
}

转载于:https://www.cnblogs.com/shaoyu/p/11565985.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: CSP-J 第轮考试的考点包括: 1. 数据结构:叉树、图、堆、并查集等。 2. 算法:排序、查找、回溯、动态规划等。 3. 计算机网络:TCP/IP 协议、HTTP 协议、DNS 协议等。 4. 操作系统:进程、线程、死锁、虚拟内存等。 5. 计算机组成原理:CPU、内存、I/O 设备等。 6. 数据库:SQL、数据模型、数据库设计等。 7. 编程语言:Java、C++、Python 等。 这些考点是 CSP-J 第轮考试的主要内容,具体考试内容以官方通知为准。 ### 回答2: CSP-J(中国计算机软件能力认证)是中国计算机技术职业资格认证中的一个项目,第轮考试主要是针对Java语言的能力测试。在CSP-J第轮考试中,主要有以下几个考点: 1. Java语言基础知识:包括Java的语法、关键字、标准类库等方面的知识点。考察学员对Java基本语法的掌握程度和使用能力。 2. 面向对象编程:考察学员对面向对象编程思想的理解和应用能力,包括类的定义、继承、多态、封装等方面的知识。 3. Java核心类库:考察学员对Java核心类库的熟悉程度和使用能力,包括集合类、IO操作、线程、异常处理等方面的知识。 4. 数据库操作:考察学员对Java语言与数据库的交互能力,包括对SQL语句的理解、数据库连接的建立、数据查询与更新等方面的知识。 5. 网络编程:考察学员对Java网络编程的理解和应用能力,包括TCP/IP协议、Socket编程、HTTP协议等方面的知识。 6. 设计模式:考察学员对常用设计模式的理解和应用能力,包括单例模式、工厂模式、观察者模式等方面的知识。 以上是CSP-J第轮考试的主要考点,通过考试可以评估学员在Java语言方面的能力水平。为了取得优异的成绩,建议学员在这些考点上进行充分的准备和学习。 ### 回答3: CSP-J(程序设计能力全国联赛初级组)第轮的考点相对于第一轮更加深入和复杂。以下是第轮考点的介绍: 1. 数据结构:第轮中,数据结构的考点是非常重要的。主要涉及树、图和其他常见数据结构,例如堆、栈和队列等。在这一部分,考生需要熟练掌握这些数据结构的特点、实现方法和应用场景。 2. 算法设计与分析:第轮中,考生需要展示设计和分析高效算法的能力。这包括使用递归、贪心、动态规划、回溯、分治等算法思想解决问题的能力。考生需要对不同算法的时间复杂度和空间复杂度有较好的理解,并能够分析算法的优劣性。 3. 编程思维和技巧:在第轮考试中,考生需要展示他们的编程思维和技巧。这包括对问题进行建模和抽象的能力,合理使用数据结构和算法的技巧,以及处理边界情况和异常情况的能力。 4. 综合应用题:第轮的考试通常包含综合应用题,要求考生综合运用前面所学的知识解决实际问题。这类题目可能与现实生活中的问题相关,需要考生能够将问题转化为计算机程序,并给出正确有效的解决方案。 总体而言,CSP-J第轮考点更加深入和复杂,需要考生具备扎实的数据结构和算法基础,以及良好的编程能力和解决问题的思维能力。需要进行更多的实践和练习,提升自己的编程水平和解题能力。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值