java快速入门 (4)

数组变量属引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量

数组声明 dataType[] arrayRefVar; // 首选的方法 或 dataType arrayRefVar[]; // 效果相同,但不是首选方法 创建数组 arrayRefVar = new dataType[1 arraySize];

数组的元素是通过索引访问的。数组索引从 0 开始,所以索引值从 0 到 arrayRefVar.length-1。

三种初始化

静态初始化
除了用new关键字来产生数组以外,还可以直接在定义数组的同时就为数组元素分配空间并赋值。

int[] a = {1,2,3}; Man[] mans = {new Man(1,1),new Man(2,2)};

动态初始化
数组定义、为数组元素分配空间、赋值的操作、分开进行。

int[] a = new int[2]; a[0]=1; a[1]=2;

数组的默认初始化
数组是引用类型,它的元素相当于类的实例变量,因此数组一经分配空间,其中的每个元素也被按照实
例变量同样的方式被隐式初始化。

public static void main(String[] args) { int[] a=new int[2]; boolean[] b = new boolean[2]; String[] s = new String[2]; System.out.println(a[0]+":"+a[1]); //0,0 System.out.println(b[0]+":"+b[1]); //false,false System.out.println(s[0]+":"+s[1]); //null, null } 数组边界

下标的合法区间:[0, length-1],如果越界就会报错;

for 和For-Each 循环 for(type element: array){ System.out.println(element); } for (int i = 1; i < myList.length; i++) { System.out.println(myList[i]); } 多维数组 type[][] typeName = new type[typeLength1][1 typeLength2]; Arrays 类

数组的工具类java.util.Arrays
java.util.Arrays 类能方便地操作数组. 使用之前需要导包!
具有以下常用功能:
给数组赋值:通过 fill 方法。
对数组排序:通过 sort 方法,按升序。
比较数组:通过 equals 方法比较数组中元素值是否相等。
查找数组元素:通过 binarySearch 方法能对排序好的数组进行二分查找法操作。
转换为list: 通过asList(a)进行转换

8.面向对象

万物皆为对象!!!对象是抽象概念的具体实例。

以类的方式组织代码,以对象的组织(封装)数据就是面向对象

继承

继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。

class 父类 { } class 子类 extends 父类 { } public interface A { public void eat(); public void sleep(); } public interface B { public void show(); } public class C implements A,B { }

为什么要继承,因为有重复。所以才继承,进而我们就知道了。父类就是公共部分的定义或规则

Java 不支持多继承(只能继承一个类),但支持多重继承。

image-20210809181238809

特点

子类拥有父类非 private 的属性、方法。

子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。

子类可以用自己的方式实现父类的方法。

Java 的继承是单继承,但是可以多重继承,单继承就是一个子类只能继承一个父类,多重继承就是,例如 B 类继承 A 类,C 类继承 B 类,所以按照关系就是 B 类是 C 类的父类,A 类是 B 类的父类,这是 Java 继承区别于 C++ 继承的一个特性。

提高了类之间的耦合性(继承的缺点,耦合度高就会造成代码之间的联系越紧密,代码独立性越差)

super 与 this 关键字

class Animal { void eat() { System.out.println("animal : eat"); } } class Dog extends Animal { void eat() { System.out.println("dog : eat"); } void eatTest() { this.eat(); // this 调用自己的方法 super.eat(); // super 调用父类方法 } } public class Test { public static void main(String[] args) { Animal a = new Animal(); a.eat(); Dog d = new Dog(); d.eatTest(); } } animal : eat dog : eat animal : eat

final关键字
final 关键字声明类可以把类定义为不能继承的,即最终类;

class SuperClass { private int n; SuperClass(){ System.out.println("SuperClass()"); } SuperClass(int n) { System.out.println("SuperClass(int n)"); this.n = n; } } // SubClass 类继承 class SubClass extends SuperClass{ private int n; SubClass(){ // 自动调用父类的无参数构造器 System.out.println("SubClass"); } public SubClass(int n){ super(300); // 调用父类中带有参数的构造器 System.out.println("SubClass(int n):"+n); this.n = n; } } // SubClass2 类继承 class SubClass2 extends SuperClass{ private int n; SubClass2(){ super(300); // 调用父类中带有参数的构造器 System.out.println("SubClass2"); } public SubClass2(int n){ // 自动调用父类的无参数构造器 System.out.println("SubClass2(int n):"+n); this.n = n; } } public class TestSuperSub{ public static void main (String args[]){ System.out.println("------SubClass 类继承------"); SubClass sc1 = new SubClass(); SubClass sc2 = new SubClass(100); System.out.println("------SubClass2 类继承------"); SubClass2 sc3 = new SubClass2(); SubClass2 sc4 = new SubClass2(200); } } ------SubClass 类继承------ SuperClass() SubClass SuperClass(int n) SubClass(int n):100 ------SubClass2 类继承------ SuperClass(int n) SubClass2 SuperClass() SubClass2(int n):200

构造函数

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzfzgp.html