日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java基础day12

發布時間:2025/3/12 java 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java基础day12 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Java基礎day12

  • Java基礎部分day12-內部類&常用API
  • 1. 參數傳遞
    • 1.1 類名作為形參和返回值
    • 1.2 抽象類作為形參和返回值
    • 1.3 接口名作為形參和返回值
  • 2. 內部類
    • 2.1 內部類的基本使用
    • 2.2 成員內部類
    • 2.3 局部內部類
    • 2.4 匿名內部類
    • 2.4 匿名內部類在開發中的使用
  • 3. 常用API
    • 3.1 Math
    • 3.2 System
    • 3.3 Object類的toString方法
    • 3.4 Object類的equals方法
    • 3.5 冒泡排序原理
    • 3.6 冒泡排序代碼實現
    • 3.7 Arrays

Java基礎部分day12-內部類&常用API

1. 參數傳遞

1.1 類名作為形參和返回值

  • 1、類名作為方法的形參
    方法的形參是類名,其實需要的是該類的對象
    實際傳遞的是該對象的【地址值】
  • 2、類名作為方法的返回值
    方法的返回值是類名,其實返回的是該類的對象
    實際傳遞的,也是該對象的【地址值】

示例代碼:

public class Cat {public void eat(){System.out.println("貓吃魚");} } public class CatOpeterator {public void useCat(Cat c){ //Cat c = new Cat;c.eat();}public Cat getCat(){Cat c = new Cat();return c;} } public class demo {public static void main(String[] args) {CatOpeterator co = new CatOpeterator();Cat c = new Cat();co.useCat(c);Cat c2 = co.getCat();c2.eat();} }

1.2 抽象類作為形參和返回值

  • 抽象類作為形參和返回值
    方法的形參是抽象類名,其實需要的是該抽象類的子類對象
    方法的返回值是抽象類名,其實返回的是該抽象類的子類對象
  • 示例代碼:
public abstract class Animal {public abstract void eat(); }public class Cat extends Animal {@Overridepublic void eat() {System.out.println("貓吃魚");} }public class AnimalOperator {public void useAnimal(Animal a){ //Animal a = new Cat();a.eat();}public Animal getAnimal(){Animal a = new Cat();return a;} }public class demo {public static void main(String[] args) {AnimalOperator ao = new AnimalOperator();Animal a = new Cat();ao.useAnimal(a);Animal a2 = ao.getAnimal();a2.eat();} }

1.3 接口名作為形參和返回值

  • 接口作為形參和返回值
    方法的形參是接口名,其實需要的是該接口的實現類對象
    方法的返回值是接口名,其實返回的是該接口的實現類對象
  • 示例代碼:
public interface Jumping {void jump(); }public class Cat implements Jumping{@Overridepublic void jump() {System.out.println("貓跳高");} }public class JumpingOperator {public void useJumping(Jumping j){ //Jumping j = new Cat();j.jump();}public Jumping getJumping(){Jumping j = new Cat();return j;} }public class Jumpingdemo {public static void main(String[] args) {JumpingOperator jo = new JumpingOperator();Jumping j = new Cat();jo.useJumping(j);Jumping j2 = jo.getJumping(); //new Cat();j2.jump();} }

2. 內部類

2.1 內部類的基本使用

  • 內部類概念
    在一個類中定義一個類。舉例:在一個類A的內部定義一個類B,類B就被稱為內部類
  • 內部類定義格式
    格式&舉例:
/*class 外部類名{class 內部類名{} }*/ public class Outer {public class Inner {} }
  • 內部類的訪問特點
    內部類可以直接訪問外部類的成員,包括私有
    外部類要訪問內部類的成員,必須創建對象

  • 示例代碼:

/* 內部類的訪問特點內部類可以直接訪問外部類的成員,包括私有外部類要訪問內部類的成員,必須創建對象 */ public class Outer{private int num = 10;public class Inner{public void show(){System.out.println(num);}}public void method(){Inner i = new Inner();i.show();} }

2.2 成員內部類

  • 成員內部類的定義位置
    在類中方法,跟成員變量是一個位置

  • 外界創建成員內部類格式
    格式:外部類名.內部類名 對象名 = 外部類對象.內部類對象;
    舉例:Outer.Inner oi = new Outer().new Inner();

  • 成員內部類的推薦使用方案
    將一個類,設計為內部類的目的,大多數都是不想讓外界去訪問,所以內部類的定義應該私有化,私有化之后,再提供一個可以讓外界調用的方法,方法內部創建內部類對象并調用。

  • 示例代碼

public class Outer {private int num = 10;private class Inner{public void show(){System.out.println(num);}}public void method(){Inner i = new Inner();i.show();} }public class demo {public static void main(String[] args) {Outer o = new Outer();o.method();} }

2.3 局部內部類

  • 局部內部類定義位置
    局部內部類是在方法中定義的類
  • 局部內部類方式方式
    局部內部類,外界是無法直接使用,需要在方法內部創建對象并使用
    該類可以直接訪問外部類的成員,也可以訪問方法內的局部變量
  • 示例代碼
class Outer {private int num = 10;public void method() {int num2 = 20;class Inner {public void show () {System.out.println(num);System.out.println(num2);}}Inner i = new Inner();i.show();} }public class demo {public static void main(String[] args) {Outer o = new Outer();o.method();} }

2.4 匿名內部類

  • 匿名內部類的前提
    存在一個類或者接口,這里的類可以是具體類也可以是抽象類
  • 匿名內部類的格式
    格式:new 類名 ( ) { 重寫方法 } new 接口名 ( ) { 重寫方法 }
    舉例:
new Inter (){@Overridepublic void method(){}}
  • 匿名內部類的本質
    本質:是一個繼承了該類或者實現了該接口的子類匿名對象
  • 匿名內部類的細節
    匿名內部類可以通過多態的形式接受
Inter i = new Inter (){@Overridepublic void method(){}}

匿名內部類直接調用方法

public interface Inter {void method(); }public class demo {public static void main(String[] args) {new Inter(){@Overridepublic void method() {System.out.println("我是匿名內部類");}}.method();//直接調用方法} }

2.4 匿名內部類在開發中的使用

  • 匿名內部類在開發中的使用
    當發現某個方法需要,接口或抽象類的子類對象,我們就可以傳遞一個匿名內部類過去,來簡化傳統的代碼
  • 示例代碼:
public interface Jumping {void jump(); }public class Cat implements Jumping {@Overridepublic void jump() {System.out.println("貓跳高");} }public class Dog implements Jumping {@Overridepublic void jump() {System.out.println("狗跳高");} }public class JumpingOpertor {public void method(Jumping j){j.jump();} }public class demo {public static void main(String[] args) {JumpingOpertor jo = new JumpingOpertor();Jumping j = new Cat();jo.method(j);Jumping j2 = new Dog();jo.method(j2);System.out.println("-------");//匿名內部類的簡化jo.method(new Jumping() {@Overridepublic void jump() {System.out.println("貓可以調高了");}});} }

3. 常用API

3.1 Math

1、Math類概述 Math 包含執行基本數字運算的方法 2、Math中方法的調用方式 Math類中無構造方法,但內部的方法都是靜態的,則可以通過 類名.進行調用 3、Math類的常用方法 public static int abs(int a) 返回參數的絕對值 public static double ceil(double a) 返回大于或等于參數的最小double值,等于一個整數 public static double floor(double a) 返回小于或等于參數的最大double值,等于一個整數 public static int round(float a) 按照四舍五入返回最接近參數的int public static int max(int a,int b) 返回兩個int值中的較大值 public static int min(int a,int b) 返回兩個int值中的較小值 public static double pow (double a,double b) 返回a的b次冪的值 public static double random() 返回值為double的正值,[0.0,1.0)

3.2 System

- System類的常用方法 public static void exit(int status) 終止當前運行的 Java 虛擬機,非零表示異常終止 public static long currentTimeMillis() 返回當前時間(以毫秒為單位)
  • 示例代碼
    需求:在控制臺輸出1-10000,計算這段代碼執行了多少毫秒

3.3 Object類的toString方法

  • Object類概述
    Object 是類層次結構的根,每個類都可以將 Object 作為超類。所有類都直接或者間接的繼承自該類, 換句話說,該類所具備的方法,所有類都會有一份
  • 查看方法源碼的方式
    選中方法,按下Ctrl + B
  • 重寫toString方法的方式
  • Alt + Insert 選擇toString
  • 在類的空白區域,右鍵 -> Generate -> 選擇toString
  • toString方法的作用:
    以良好的格式,更方便的展示對象中的屬性值
    示例代碼:
public class Student extends Object {private String name;private int age;public Student() {}public Student(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", age=" + age +'}';} } //測試類 public class demo {public static void main(String[] args) {Student s = new Student();s.setName("林青霞");s.setAge(30);System.out.println(s);System.out.println(s.toString());} }

3.4 Object類的equals方法

  • equals方法的作用
    用于對象之間的比較,返回true和false的結果
    舉例:s1.equals(s2); s1和s2是兩個對象
  • 重寫equals方法的場景
    不希望比較對象的地址值,想要結合對象屬性進行比較的時候。
  • 重寫equals方法的方式
  • alt + insert 選擇equals() and hashCode(),IntelliJ Default,一路next,finish即可
  • 在類的空白區域,右鍵 -> Generate -> 選擇equals() and hashCode(),后面的同上。
  • 示例代碼:
public class Student {private String name;private int age;public Student() {}public Student(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;Student student = (Student) o;if (age != student.age) return false;return name != null ? name.equals(student.name) : student.name == null;} } //測試類 public class demo {public static void main(String[] args) {Student s1 = new Student("林青霞",30);Student s2 = new Student("林青霞",30);System.out.println(s1.equals(s2));} }

3.5 冒泡排序原理

  • 冒泡排序概述
    一種排序的方式,對要進行排序的數據中相鄰的數據進行兩兩比較,將較大的數據放在后面,依次對所 有的數據進行操作,直至所有數據按要求完成排序
  • 如果有n個數據進行排序,總共需要比較n-1次
  • 每一次比較完畢,下一次的比較就會少一個數據參與

3.6 冒泡排序代碼實現

  • 代碼實現
public class Arraydemo {public static void main(String[] args) {int[] arr = {24, 69, 80, 57, 13};System.out.println("排序前:" + arrarytoString(arr));for (int x = 0; x < arr.length - 1; x++) {for (int i = 0; i < arr.length - 1 - x; i++) {if (arr[i] > arr[i + 1]) {int temp = arr[i];arr[i] = arr[i + 1];arr[i + 1] = temp;}}}System.out.println("排序后:" + arrarytoString(arr));}public static String arrarytoString(int[] arr) {StringBuilder s = new StringBuilder();s.append("[");for (int i = 0; i < arr.length; i++) {if (i == arr.length - 1) {s.append(arr[i]);} else {s.append(arr[i]).append(", ");}}s.append("]");String s1 = s.toString();return s1;} }

3.7 Arrays

Arrays的常用方法public static String toString(int[] a) 返回指定數組的內容的字符串表示形式 public static void sort(int[] a) 按照數字順序排列指定的數組 工具類設計思想 1、構造方法用 private 修飾 2、成員用 public static 修飾

總結

以上是生活随笔為你收集整理的Java基础day12的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。