難點(diǎn)程序

DAY 05

1票渠、

public classArrayDemo {


?????? public static void main(String[] args){


????????????? // int[] arr = newint[]{5,1,7,0,8,1,3};

????????????? // int[] arr = {3,1,7,3,8,0,4};

????????????? // arr[3] = 15;

????????????? // System.out.println(arr[3]);


????????????? int[] arr;

????????????? // arr = new int[5];

????????????? // arr = new int[]{5,1,7,0,8,1,3};

????????????? arr = {3,1,7,3,8,0,4};

2、

importjava.util.Arrays;

public classArrayCopyDemo {


?????? public static void main(String[] args){


????????????? // int[] arr1 = {5,1,7,0,8,2,6};


????????????? // int[] arr2 = new int[9];


????????????? //表示從arr1下標(biāo)為2的位置上復(fù)制4個(gè)元素放入arr2數(shù)組中李根,從arr2數(shù)組的下標(biāo)為4的位置開始放

????????????? // System.arraycopy(arr1, 2, arr2,4, 4);


????????????? //System.out.println(Arrays.toString(arr2));


????????????? //數(shù)組的擴(kuò)容 --- 數(shù)組的復(fù)制 --- 產(chǎn)生一個(gè)新的數(shù)組攒庵,導(dǎo)致擴(kuò)容之后的數(shù)組和原數(shù)組不是同一個(gè)

????????????? int[] arr = {3,6,1,7,9};

????????????? /*

????????????? int[] newArr = new int[8];

????????????? System.arraycopy(arr, 0, newArr,0, arr.length);

????????????? arr = newArr;

????????????? */

????????????? System.out.println(arr);

????????????? arr = Arrays.copyOf(arr, 8);

????????????? System.out.println(arr);

????????????? System.out.println(Arrays.toString(arr));





?????? }


}

3嘴纺、

importjava.util.Arrays;

public classArrayApplicationDemo {


?????? public static void main(String[] args){


????????????? int[] arr = newint[]{5,1,7,0,8,1,3,4,12,6};


????????????? //獲取最大值

????????????? /*

????????????? int max = arr[0];

????????????? for(int i = 1; i < arr.length;i++){

???????????????????? if(max < arr[i])

??????????????????????????? max = arr[i];

????????????? }

????????????? System.out.println(max);

????????????? */

????????????? int max = 0;

????????????? for(int i = 1; i < arr.length;i++){

???????????????????? if(arr[max] < arr[i])

??????????????????????????? max = i;

????????????? }

????????????? System.out.println(arr[max]);

????????????? //遍歷數(shù)組

????????????? //方式一:下標(biāo)是從0->length - 1

????????????? //先依次獲取下標(biāo)败晴,然后利用下標(biāo)獲取對(duì)應(yīng)位置上的元素

????????????? /*

????????????? for(int i = 0; i < arr.length;i++){

???????????????????? //System.out.println(arr[i]);

???????????????????? arr[i] += 10;

????????????? }

????????????? */

????????????? //方式二:直接獲取每一個(gè)位置上的元素

????????????? //每一個(gè)元素都是一個(gè)int類型元素,那么就可以定義一個(gè)int類型的變量來依次表示每一個(gè)位置上的值

????????????? //此時(shí)i會(huì)依次表示數(shù)組中的每一個(gè)元素

????????????? //增強(qiáng)for循環(huán)

????????????? //只能遍歷數(shù)組但是不能改變數(shù)組中的元素

????????????? /*

????????????? for(int i : arr){

???????????????????? // System.out.println(i);

???????????????????? i += 10;

????????????? }

????????????? */

????????????? //方式三:將數(shù)組中的元素一個(gè)個(gè)的拿出來拼接成字符串

????????????? // String str =Arrays.toString(arr);

????????????? // System.out.println(str);

????????????? //獲取指定下標(biāo)位置上的元素

????????????? // arr[5] += 15;

????????????? // System.out.println(arr[1]);


????????????? //獲取數(shù)組的長(zhǎng)度

????????????? // int len = arr.length;

????????????? // System.out.println(len);

?????? 4栽渴、

importjava.util.Scanner;

public classArrayExer {


?????? public static void main(String[] args){


????????????? //獲取行數(shù)

????????????? Scanner s = newScanner(System.in);

????????????? int row = s.nextInt();


????????????? //定義二維數(shù)組來存儲(chǔ)楊輝三角

????????????? int[][] arr = new int[row][];


????????????? //遍歷數(shù)組尖坤,向里填充元素

????????????? for(int i = 0; i < row; i++){

???????????????????? //先給每一個(gè)一維數(shù)組定義大小

???????????????????? arr[i] = new int[i + 1];

???????????????????? //遍歷這個(gè)一維數(shù)組,向里填充元素

???????????????????? for(int j = 0; j <= i;j++){

??????????????????????????? //判斷頭尾元素

??????????????????????????? if(j == 0 || j == i)

?????????????????????????????????? arr[i][j] =1;

??????????????????????????? else

?????????????????????????????????? arr[i][j] =arr[i - 1][j] + arr[i - 1][j - 1];

??????????????????????????? //填充完成之后打印這個(gè)填充的元素

??????????????????????????? System.out.print(arr[i][j]+ "\t");


???????????????????? }

???????????????????? System.out.println();

5闲擦、

importjava.util.Scanner;

public classArraySearchDemo {


?????? public static void main(String[] args){


????????????? /*

????????????? int[] arr = {5,1,7,0,8,2,6};


????????????? Scanner s = newScanner(System.in);

????????????? int n = s.nextInt();


????????????? //定義一個(gè)變量記錄位置

????????????? //規(guī)定如果找不到這個(gè)元素慢味,將下標(biāo)記錄-1

????????????? int index = -1;


????????????? for(int i = 0; i < arr.length;i++){

???????????????????? if(arr[i] == n){

??????????????????????????? index = i;

??????????????????????????? break;

???????????????????? }

????????????? }

????????????? System.out.println(index);

????????????? */


????????????? //二分查找/折半查找

????????????? //空間復(fù)雜度:o(1)

????????????? int[] arr ={5,9,15,16,28,37,45,48,56,59,60};


????????????? Scanner s = newScanner(System.in);

????????????? int n = s.nextInt();


????????????? //記錄最小值的下標(biāo)

????????????? int min = 0;

????????????? //記錄最大值的下標(biāo)

????????????? int max = arr.length - 1;

????????????? int mid = (max + min) / 2;

?????? ?????? while(arr[mid]!= n){


???????????????????? if(arr[mid] > n)

??????????????????????????? max = mid - 1;

???????????????????? else

??????????????????????????? min = mid + 1;


???????????????????? if(min > max){

??????????????????????????? mid = -1;

??????????????????????????? break;

???????????????????? }

???????????????????? mid = (min + max) / 2;?????????????

????????????? }?????

????????????? System.out.println(mid);


6、

importjava.util.Arrays;

public class ArraySortDemo{


?????? public static void main(String[] args){


????????????? int[] arr = {5,1,7,0,8,2,6};


????????????? //冒泡排序

????????????? //定義一個(gè)循環(huán)控制輪數(shù)

????????????? /*

????????????? for(int i = 1; i < arr.length;i++){

???????????????????? //定義一個(gè)循環(huán)控制每一個(gè)輪的次數(shù)

???????????????????? for(int j = 1; j <=arr.length - i; j++){

??????????????????????????? if(arr[j - 1] > arr[j]){

?????????????????????????????????? int temp =arr[j - 1];

?????????????????????????????????? arr[j - 1] =arr[j];

?????????????????????????????????? arr[j] =temp;

??????????????????????????? }

???????????????????? }

????????????? }


????????????? */

????????????? //選擇排序

????????????? //控制輪數(shù)

????????????? /*

????????????? for(int i = 1; i < arr.length;i++){

???????????????????? //控制每一輪要比較的下標(biāo)

???????????????????? for(int j = i; j

??????????????????????????? //拿選定的下標(biāo)上的元素和比較的下標(biāo)上的元素進(jìn)行比較

??????????????????????????? if(arr[i - 1] >arr[j]){

?????????????????????????????????? int temp =arr[i - 1];

?????????????????????????????????? arr[i - 1] =arr[j];

?????????????????????????????????? arr[j] =temp;

??????????????????????????? }


???????????????????? }

????????????? }

????????????? */

????????????? //只能進(jìn)行升序排序

????????????? //擴(kuò)展:底層用的是快速排序+歸并排序

????????????? //時(shí)間復(fù)雜度:O(nlogn)

????????????? Arrays.sort(arr);

????????????? //反轉(zhuǎn)數(shù)組

????????????? //方式一:

????????????? //時(shí)間復(fù)雜度O(n),空間復(fù)雜度o(n)

????????????? /*

????????????? int[] newArr = newint[arr.length];

????????????? for(int i = arr.length - 1, j = 0;i >= 0; i--, j++){

???????????????????? newArr[j] = arr[i];

????????????? }

????????????? */

????????????? //方式二:頭尾交換

????????????? //時(shí)間復(fù)雜度O(n),空間復(fù)雜度o(1)

????????????? for(int i = 0, j = arr.length - 1;i <= j; i++, j--){

???????????????????? int temp = arr[i];

???????????????????? arr[i] = arr[j];

???????????????????? arr[j] = temp;

????????????? }

????????????? System.out.println(Arrays.toString(arr));??????

?????? }

}

7墅冷、

public classLoopExer {


?????? public static void main(String[] args){


????????????? /*

???????????????????? *

???????????????????? **

???????????????????? ***

???????????????????? ****

???????????????????? *****

????????????? */

????????????? for(int i = 1, j = 1; i <= 9;j++){

???????????????????? //無論哪一行纯路,上來都是先打印*

???????????????????? System.out.print("*");

???????????????????? //判斷是否是打印完成本行最后一個(gè)*

???????????????????? if(j == i){

??????????????????????????? //換行

??????????????????????????? System.out.println();

??????????????????????????? //行數(shù)+1

??????????????????????????? i++;

??????????????????????????? // *從頭重新開始計(jì)數(shù)

??????????????????????????? j = 0;

???????????????????? }

????????????? }

?????? }

}

DAY 06

1、

packagecn.tedu.test;


public classMethodDemo {


?????? // Alt + /提示鍵

?????? // Ctrl+F11運(yùn)行

?????? // Ctrl + Shift + O導(dǎo)包

?????? // Ctrl+D刪除一行

?????? // Ctrl+/單行注釋/取消單行注釋

?????? // Ctrl+Shift+/多行注釋

?????? // Ctrl+Shift+\取消多行注釋

?????? // Alt+↑/↓ 向上/下移動(dòng)

?????? public static void main(String[] args) {


????????????? System.out.println(add(100000));


?????? }


?????? public static int add(int n) {


????????????? if (n == 1)

???????????????????? return 1;


????????????? return n + add(n - 1);


?????? }


}

2寞忿、

packagecn.tedu.object;


public classPersonDemo {


?????? public static void main(String[] args) {


????????????? //利用new關(guān)鍵字創(chuàng)建了一個(gè)Person對(duì)象

????????????? Person p = new Person();


????????????? //表示給對(duì)象p的屬性name進(jìn)行賦值

????????????? p.name = "秋香";

????????????? //表示給對(duì)象p的屬性age進(jìn)行賦值

????????????? p.age = 66;

????????????? // 0表示女生感昼,1表示男生

????????????? p.gender = 0;


????????????? //打印p的屬性height的值

????????????? System.out.println(p.weight);


????????????? p.sleep();

????????????? //表示讓p對(duì)象去執(zhí)行eat方法

????????????? p.eat();


?????? }


}


// 定義一個(gè)代表人的類

class Person {


?????? //將人的特征用屬性/成員變量來表示

?????? String name; //姓名

?????? int age; //年齡

?????? byte gender; //性別

?????? double height; //身高

?????? double weight; //體重


?????? //將人的行為用方法表示

?????? //表示吃的行為

?????? public void eat() {

????????????? System.out.println(name + "在吃東西~~~");

?????? }


?????? //表示睡的行為

?????? public void sleep() {

????????????? //局部變量

????????????? String tool = "床";

????????????? System.out.println(name + "在" + tool + "上睡覺~~~");

?????? }


}

DAY 07

1、

packagecn.tedu.object;


public classThisDemo {


?????? public static void main(String[] args) {


????????????? Student s1 = newStudent("Amy");

????????????? System.out.println("s1:"+ s1);

????????????? Student s2 = new Student("Sam");

????????????? System.out.println("s2:"+ s2);


????????????? s1.name = "Lily";


?????? }


}


class Student {


?????? String name;

?????? int age;

?????? String no; //學(xué)號(hào)


?????? //用this代替一個(gè)具體的對(duì)象

?????? // this代表當(dāng)前在活動(dòng)的對(duì)象

?????? // this在本類中調(diào)用本類中的屬性和方法

?????? public Student(String name) {

????????????? this.name = name;

????????????? // System.out.println("this:"+ this);

?????? }


?????? public Student(String name, int age) {

????????????? this.name = name;

????????????? this.age = age;

?????? }


?????? public Student(String name, int age,String no) {


????????????? // this.name = name;

????????????? // this.age = age;

????????????? // this調(diào)用的時(shí)候調(diào)用的普通的方法而不是構(gòu)造方法

????????????? // this.Student(name,age);

????????????? // this(參數(shù)列表)--- this語句

????????????? //表示調(diào)用本類中對(duì)應(yīng)形式的構(gòu)造方法

????????????? // this(name, age) ->Student(String, int);

????????????? //必須放在構(gòu)造方法的首行

????????????? this(name, age);

????????????? this.no = no;


?????? }


}

2罐脊、

packagecn.tedu.object;

public classLocalCodeDemo {

?????? public static void main(String[] args) {


????????????? int i = 8;

????????????? //定義在方法中代碼塊 --- 局部代碼塊

????????????? {

???????????????????? // j的作用范圍變小定嗓,生命周期變短,釋放內(nèi)存 -> 提高棧內(nèi)存的利用率

???????????????????? int j = 10;

???????????????????? System.out.println(i + j);

????????????? }?????

????????????? System.out.println(i);

?????? }

}

3萍桌、

packagecn.tedu.object;


public classConstructorDemo {


?????? public static void main(String[] args) {


????????????? //調(diào)用構(gòu)造方法創(chuàng)建Person對(duì)象

????????????? // Person p = new Person();

????????????? Person p = new Person("翠花");

????????????? p.name = "如花";

????????????? p.eat();


?????? }


}


class Person {


?????? String name;

?????? int age;

?????? char gender;

?????? String no; //身份證號(hào)


?????? //構(gòu)造方法 --- 創(chuàng)建對(duì)象

?????? //在類中沒有手動(dòng)指定構(gòu)造方法的時(shí)候宵溅,那么在編譯的時(shí)候會(huì)自動(dòng)添加一個(gè)無參的構(gòu)造方法

?????? //特點(diǎn):沒有返回值類型,與類同名

?????? //構(gòu)造方法可以構(gòu)成重載

?????? public Person() {

?????? }


?????? //在代碼中手動(dòng)指定了含參構(gòu)造上炎,那么就不會(huì)再默認(rèn)添加無參構(gòu)造

?????? public Person(String n) {

????????????? //遵循就近原則

????????????? name = n;

?????? }


?????? // Person p = new Person("珠子", -18);

?????? //構(gòu)造方法中可以寫return恃逻,用于規(guī)避一些不合常理的數(shù)據(jù)

?????? public Person(String n, int a) {

????????????? name = n;

????????????? if (a < 0)

???????????????????? return;

????????????? age = a;

?????? }


?????? public void eat() {

????????????? System.out.println(name + "在吃東西~~~");

?????? }


}

4、

packagecn.tedu.object;


public classConstructorCodeDemo {


?????? public static void main(String[] args) {


????????????? // Baby b1 = new Baby();

????????????? // Baby b2 = new Baby("鐵蛋");


?????? }


}


// 定義一個(gè)代表嬰兒的類

class Baby {


?????? String name;


?????? //構(gòu)造代碼塊/初始化代碼塊

?????? //無論利用哪個(gè)構(gòu)造方法創(chuàng)建對(duì)象藕施,構(gòu)造代碼塊都會(huì)先于構(gòu)造方法執(zhí)行

?????? //如果每一個(gè)構(gòu)造方法中都有一些要初始化的操作寇损,可以將它們提取到構(gòu)造代碼塊中執(zhí)行

?????? {

????????????? this.cry();

????????????? this.eat();

?????? }


?????? public Baby() {

????????????? System.out.println("running~~~");

?????? }


?????? public Baby(String name) {

????????????? // this();

????????????? this.name = name;

????????????? // this.cry();

????????????? // this.eat();

?????? }


?????? public void cry() {

????????????? System.out.println("這個(gè)嬰兒在哇哇哇的哭~~~");

?????? }


?????? public void eat() {

????????????? System.out.println("這個(gè)嬰兒在吃奶~~~");

?????? }


}

5、

packagecn.tedu.extendsx;


public classExtendsDemo {


?????? public static void main(String[] args) {


????????????? Cat c = new Cat();

????????????? //通過繼承裳食,子類可以使用父類中定義的一部分屬性和方法

????????????? c.eat();


?????? }


}


// 父類

class Pet {


?????? String name;

?????? String color;


?????? public Pet(String name) {

?????? }


?????? public Pet(String name, String color) {

?????? }


?????? public void eat() {

????????????? System.out.println("在吃東西~~~");

?????? }


}


// 利用extends關(guān)鍵字讓原來的類與提取出來的新的類產(chǎn)生了聯(lián)系 --- 繼承

// 子類

class Cat extendsPet {


?????? public Cat() {

????????????? //在子類構(gòu)造方法中矛市,如果沒有手動(dòng)指定,那么默認(rèn)添加super()

?????? ?????? //super語句 --- 表示調(diào)用父類中對(duì)應(yīng)形式的構(gòu)造方法

????????????? // super() --- Pet()

????????????? //如果父類中只提供了含參構(gòu)造

????????????? //那么子類中就必須手動(dòng)提供對(duì)應(yīng)形式的super語句

????????????? // super語句必須放在構(gòu)造方法的第一行

????????????? super("波斯貓");

?????? }


?????? public void drink() {

????????????? //通過super代表父類對(duì)象

????????????? //通過父類對(duì)象調(diào)用父類中的方法和屬性

????????????? super.eat();

????????????? System.out.println("吃完東西喝點(diǎn)水~~~");

?????? }


?????? public void catches() {

????????????? System.out.println("這只貓?jiān)趽仙嘲l(fā)玩~~~");

?????? }


}


class Dog extendsPet {


?????? public Dog() {

????????????? // super("金毛", "綠色");

????????????? super("二哈");

????????????? super.color = "黑色";

?????? }


?????? public void bark() {

????????????? System.out.println("這只狗在叫~~~");

?????? }


}

6诲祸、

packagecn.tedu.extendsx;


public classOverrideDemo {


?????? public static void main(String[] args) {


????????????? Teacher t = new Teacher();

????????????? //子類對(duì)象是調(diào)用重寫之后的方法

????????????? t.work();


?????? }


}


// 表示職業(yè)的類

class Profession {


?????? public void work() {

????????????? System.out.println("在工作~~~");

?????? }


}


class Teacherextends Profession {


?????? //父類中的方法寫的比較簡(jiǎn)單浊吏,子類需要對(duì)父類中的方法進(jìn)行擴(kuò)展

?????? @Override // @注解

?????? // @Override這個(gè)注解是用于校驗(yàn)當(dāng)前方法是否構(gòu)成了重寫

?????? public void work() {

????????????? System.out.println("這個(gè)老師在誨人不倦");

?????? }


}

7、

packagecn.tedu.fengzhuang;


public classFengzhuangExer {


?????? public static void main(String[] args) {


????????????? Rectangle r = new Rectangle(5.45,3.87);

????????????? System.out.println(r.getGirth());

????????????? System.out.println(r.getArea());


?????? }


}


// 定義一個(gè)代表矩形的類

class Rectangle {


?????? private double width; //寬

?????? private double height; //高


?????? //當(dāng)矩形定義好之后救氯,寬和高就固定下了

?????? public Rectangle(double width, doubleheight) {

????????????? //判斷寬和高是否合法

????????????? if (width <= 0 || height <=0)

???????????????????? return;

????????????? this.width = width;

????????????? this.height = height;

?????? }


?????? //矩形畫好之后寬和高不能產(chǎn)生變動(dòng)了找田,所以不需要再提供set方法

?????? public double getWidth() {

????????????? return width;

?????? }


?????? public double getHeight() {

????????????? return height;

?????? }


?????? //計(jì)算周長(zhǎng)

?????? public double getGirth() {

????????????? return 2 * (width + height);

?????? }


?????? //計(jì)算面積

?????? public double getArea() {

????????????? return width * height;

?????? }


}

8、

packagecn.tedu.fengzhuang;


public classDriverDemo {


?????? public static void main(String[] args) {


????????????? Driver d = new Driver();

????????????? // d.name = "Bob";

????????????? // d.age = -28;

????????????? d.setAge(-24);

????????????? System.out.println(d.getAge());


?????? }


}


class Driver {


?????? private String name;

?????? private /*私有的*/int age;

?????? private String no;

?????? private char gender;


?????? public String getName() {

????????????? return name;

?????? }


?????? public void setName(String name) {

????????????? this.name = name;

?????? }


?????? public int getAge() {

????????????? return age;

?????? }


?????? public void setAge(int age) {

????????????? if (age >= 18 && age<= 70)

???????????????????? this.age = age;

?????? }


?????? public String getNo() {

????????????? return no;

?????? }


?????? public void setNo(String no) {

????????????? this.no = no;

?????? }


?????? public char getGender() {

????????????? return gender;

?????? }


?????? public void setGender(char gender) {

????????????? this.gender = gender;

?????? }


}

9着憨、

packagecn.tedu.duotai;


public class DuotaiDemo{


?????? public static void main(String[] args) {


????????????? //父類聲明對(duì)象墩衙,用子類創(chuàng)建對(duì)象 --- 向上造型

????????????? //利用向上造型來創(chuàng)建的這個(gè)對(duì)象

????????????? //對(duì)象在編譯過程中并不會(huì)檢查到底使用的是哪個(gè)子類

????????????? //在編譯期間只會(huì)檢查聲明類和實(shí)現(xiàn)類之間是否有繼承關(guān)系

????????????? //直到運(yùn)行的時(shí)候才會(huì)檢查具體的子類然后根據(jù)子類來分配空間

????????????? Pet p = new Cat();

????????????? //當(dāng)使用向上造型來創(chuàng)建對(duì)象的時(shí)候,只能使用父類中聲明的方法

????????????? //而不能使用子類中單獨(dú)定義的方法

????????????? //但是方法的執(zhí)行看的是具體的子類

????????????? p.eat();


?????? }


}


class Pet {


?????? public void eat() {

????????????? System.out.println("在吃東西~~~");

?????? }


}


class Cat extendsPet {


?????? @Override

?????? public void eat() {

????????????? System.out.println("這只貓?jiān)诔圆輣~~");

?????? }


?????? public void catches() {

????????????? System.out.println("這只貓?jiān)趽瞎吠鎫~~");

?????? }


}


class Dog extendsPet {


?????? @Override

?????? public void eat() {

????????????? System.out.println("這只狗在吃貓~~~");

?????? }

?????? public void bark() {

????????????? System.out.println("這只狗在喵喵的叫~~~");

?????? }

}


DAY? 08

1、

packagecn.tedu.staticx;


public class StaticDemo1{


?????? @SuppressWarnings("static-access")

?????? public static void main(String[] args) {


????????????? //System.out.println(Student.classroom);


????????????? Student s1 = new Student();

????????????? s1.name = "段譽(yù)";

????????????? s1.classroom = "大理";


????????????? Student s2 = new Student();

????????????? s2.name = "王語嫣";

????????????? s2.classroom = "茶花山莊";


????????????? s1.study();

????????????? s2.study();


?????? }


}


// 定義代表學(xué)生的類

class Student {


?????? String name;

?????? int age;

?????? static String classroom;


?????? @SuppressWarnings("static-access")

?????? public void study() {

????????????? System.out.println(this.name +"在" + this.classroom + "教室中學(xué)習(xí)~~~");

?????? }


}

2漆改、

packagecn.tedu.staticx;


public classStaticDemo2 {


?????? @SuppressWarnings("static-access")

?????? public static void main(String[] args) {

????????????? // B.m();

????????????? //當(dāng)構(gòu)成靜態(tài)方法的隱藏的時(shí)候植袍,方法的執(zhí)行看的是聲明類

????????????? A a = new B();

????????????? a.m();

????????????? StaticDemo2 p =new StaticDemo2();

????????????? System.out.println(p.qiuhe(6));

?????? }


?????? public static int qiuhe(int i){

????????????? int j=1;

??????????????????????????? for(intk=10;(i/10!=0);){

?????????????????????????????????? i=i/10;

?????????????????????????????????? j++;

??????????????????????????? }

??????????????????????????? return j;

????????????? }


}


class A {


?????? public static void m() {

????????????? System.out.println("A~~~");

?????? }


}


class B extends A{


?????? public static void m() {

????????????? System.out.println("B~~~");

?????? }

}

3、

packagecn.tedu.staticx;


public classStaticDemo3 {


?????? public static void main(String[] args) {


????????????? new C();

????????????? // new C();

????????????? // C.m();

????????????? // C.m();


?????? }


}


class C {


?????? //靜態(tài)代碼塊

?????? //只在類加載(第一次使用)的時(shí)候執(zhí)行一次

?????? static {

????????????? System.out.println("C");

?????? }


?????? {

????????????? System.out.println("C2");

?????? }


?????? public C() {

????????????? System.out.println("C3");

?????? }


?????? public static void m() {

????????????? System.out.println("running~~~");

?????? }


}

4籽懦、

packagecn.tedu.staticx;


public classStaticDemo4 {


?????? public static void main(String[] args) {


????????????? //加載父類 --- 父類靜態(tài)

????????????? //加載子類 --- 子類靜態(tài)

????????????? //創(chuàng)建父類對(duì)象 --- 父類構(gòu)造

????????????? //創(chuàng)建子類對(duì)象 --- 子類構(gòu)造

????????????? new SB();

????????????? new SB();


?????? }


}


class SA {


?????? SD d;


?????? static {

????????????? System.out.println("A1");

?????? }


?????? {

????????????? System.out.println("A2");

????????????? d = new SD();

?????? }


?????? public SA() {

????????????? System.out.println("A3");

?????? }


}


class SB extendsSA {


?????? static SC c = new SC();


?????? static {

????????????? System.out.println("B1");

?????? }


?????? {

????????????? System.out.println("B2");

?????? }


?????? public SB() {

????????????? System.out.println("B3");

?????? }


}


class SC {

?????? public SC() {

????????????? System.out.println("C");

?????? }

}


class SD extendsSC {

?????? public SD() {

????????????? System.out.println("D");

?????? }

}

5于个、

packagecn.tedu.staticx;


public classStaticDemo5 {


?????? public static void main(String[] args) {


????????????? System.out.println(D.i);


?????? }


}


class D {


?????? static {

????????????? i = 7;

?????? }

?????? static int i = 5;


}

6、

packagecn.tedu.staticx;


public classStaticDemo5 {


?????? public static void main(String[] args) {


????????????? System.out.println(D.i);


?????? }


}


class D {


?????? static {

????????????? i = 7;

?????? }

?????? static int i = 5;


}

DAY 09

1暮顺、

package cn.tedu.abstractx;


publicclass AbstractDemo {


? publicstaticvoid main(String[] args) {


??? // 不允許被實(shí)例化

??? // Pet p = new Pet();

??? // p.eat();


??? // 創(chuàng)建了一個(gè)Pet所對(duì)應(yīng)的匿名內(nèi)部類的對(duì)象

??? // Pet p = new Pet() {

??? //

??? // @Override

??? // public void eat() {

??? //

??? // }

??? // }; // 匿名內(nèi)部類


? }


}


abstractclass Animal {

}


// 抽象類

abstractclass Pet {


? public Pet() {

? }


? // 抽象類中可以定義一切方法

? // 抽象方法

? // Pet.eat();

? publicabstractvoid eat();


? publicvoid drink() {

??? System.out.println("在喝水中~~~");

? }


}


// 子類繼承抽象類之后必須重寫其中的抽象方法,除非子類也是抽象類

abstractclass Cat extends Pet {

}

class Dog extends Pet {

? @Override

? publicvoid eat() {

??? System.out.println("這只狗在吃貓~~~");

? }

}


2厅篓、

package cn.tedu.abstractx;


publicclass AbstractExer {


? publicstaticvoid main(String[] args) {


??? // Shape s = new Rectangle(3.5,

2.4);

??? Shapes = new Square(5);

??? System.out.println(s.getArea());

??? System.out.println(s.getGirth());


? }


}


abstractclass Shape {


? publicabstractdouble getArea();


? publicabstractdouble getGirth();


}


// 代表矩形

class Rectangle extends Shape {


? privatedoublewidth;

? privatedoubleheight;


? public Rectangle(doublewidth, doubleheight) {

??? this.width = width;

??? this.height = height;

? }

? publicdouble getArea() {

??? returnwidth * height;

? }

? publicdouble getGirth() {

??? return 2 * (width + height);

? }

}


// 正方形

class Square extends Rectangle {


? public Square(doublewidth) {

??? super(width, width);

? }

}

// 橢圓形

class Oval extends Shape {


? privatedoublea;

? privatedoubleb;


? public Oval(doublea, doubleb) {

??? this.a = a;

??? this.b = b;

? }

? @Override

? publicdouble getArea() {

??? return 3.14 * a * b;

? }

? @Override

? publicdouble getGirth() {

??? return 3.14 * (a + b);

? }

}

class Circle extends Oval {


? public Circle(doubleradis) {

??? super(radis, radis);

? }


}

3、

package cn.tedu.innerclass;

publicclass InnerDemo1 {

? publicstaticvoid main(String[] args) {

??? new Outer1().m();

? }

}

class Outer1 {

? inti = 10;

? publicvoid m() {

??? System.out.println("Outer~~~");


??? // 當(dāng)方法內(nèi)部類使用所在的方法中的數(shù)據(jù)的時(shí)候

??? // 要求這個(gè)屬性得是一個(gè)常量

??? // 從JDK1.8開始捶码,方法內(nèi)部類使用到當(dāng)前方法中的數(shù)據(jù)的時(shí)候

??? // 將該數(shù)據(jù)默認(rèn)為常量

??? // 常量的隱式聲明

??? intj = 10;


??? // 方法內(nèi)部類

??? // 只能在定義它的方法中使用

??? // 可以使用外部類中的屬性和方法

??? // 如果內(nèi)部類和外部類存在了同名屬性或者方法羽氮,則使用內(nèi)部類中定義

??? // 只能用abstract/final

??? // 方法內(nèi)部類中可以定義非靜態(tài)的屬性和非靜態(tài)方法

??? // 但是不能定義靜態(tài)變量和靜態(tài)方法

??? // 然而定義靜態(tài)常量

??? class Inner1 extends Object implements Cloneable {

????? intk = 8;

????? staticfinalintx = 7;

????? publicvoid m() {

?????? System.out.println("Inner~~~");

?????? i += 5;

?????? m2();

?????? // 外部類.this.外部類的方法或者屬性

?????? Outer1.this.m2();

?????? System.out.println(j);

?????? // j += 6;

?????? System.out.println(k);

?????? System.out.println(x);

????? }

????? publicvoid m2() {

?????? System.out.println("Inner m2~~~");

????? }

??? }

??? Inner1i1 = new Inner1();

??? i1.m();

? }

? publicvoid m2() {

??? System.out.println("Outer m2~~~");

? }


}

2、

package cn.tedu.innerclass;

publicclass InnerDemo1 {

? publicstaticvoid main(String[] args) {

??? new Outer1().m();

? }

}

class Outer1 {

? inti = 10;

? publicvoid m() {

??? System.out.println("Outer~~~");


??? // 當(dāng)方法內(nèi)部類使用所在的方法中的數(shù)據(jù)的時(shí)候

??? // 要求這個(gè)屬性得是一個(gè)常量

??? // 從JDK1.8開始惫恼,方法內(nèi)部類使用到當(dāng)前方法中的數(shù)據(jù)的時(shí)候

??? // 將該數(shù)據(jù)默認(rèn)為常量

??? // 常量的隱式聲明

??? intj = 10;


??? // 方法內(nèi)部類

??? // 只能在定義它的方法中使用

??? // 可以使用外部類中的屬性和方法

??? // 如果內(nèi)部類和外部類存在了同名屬性或者方法档押,則使用內(nèi)部類中定義

??? // 只能用abstract/final

??? // 方法內(nèi)部類中可以定義非靜態(tài)的屬性和非靜態(tài)方法

??? // 但是不能定義靜態(tài)變量和靜態(tài)方法

??? // 然而定義靜態(tài)常量

??? class Inner1 extends Object implements Cloneable {

????? intk = 8;

????? staticfinalintx = 7;

????? publicvoid m() {

?????? System.out.println("Inner~~~");

?????? i += 5;

?????? m2();

?????? // 外部類.this.外部類的方法或者屬性

?????? Outer1.this.m2();

?????? System.out.println(j);

?????? // j += 6;

?????? System.out.println(k);

?????? System.out.println(x);

????? }

????? publicvoid m2() {

?????? System.out.println("Inner m2~~~");

????? }

??? }

??? Inner1i1 = new Inner1();

??? i1.m();

? }

? publicvoid m2() {

??? System.out.println("Outer m2~~~");

? }


}

3、

package cn.tedu.innerclass;


publicclass InnerDemo3 {


? publicstaticvoid main(String[] args) {


??? Outer3.Inner3oi3 = new Outer3.Inner3();

??? oi3.m();

? }


}


class Outer3 {


? inti = 0;


? // 靜態(tài)內(nèi)部類

? // 只能使用外部類中的靜態(tài)屬性和靜態(tài)方法

? // 靜態(tài)內(nèi)部類中可以定義一切的方法和屬性

? staticclass Inner3 {


??? intj = 8;

??? staticintk = 4;


??? publicvoid m() {

????? // System.out.println(i);

??? }


? }


}


4祈纯、

package cn.tedu.innerclass;


publicclass InnerDemo4 {


? publicstaticvoid main(String[] args) {


??? // 匿名內(nèi)部類

??? // a是匿名內(nèi)部類產(chǎn)生的對(duì)象

??? // 匿名內(nèi)部類實(shí)際上是實(shí)現(xiàn)了對(duì)應(yīng)的接口

??? Aa = new A() {


????? @Override

????? publicvoid m() {

?????? System.out.println("running~~~");

????? }


????? @Override

????? publicvoid m2() {


????? }

??? };

??? a.m();

??? // 匿名內(nèi)部類實(shí)際上是繼承了對(duì)應(yīng)的類

??? Bb = new B() {


????? @Override

????? publicvoid m() {

?????? System.out.println("running~~~");

????? }

??? };

??? b.m();


??? // C c = new C() {

??? // };

? }


}


interface A {


? void m();


? void m2();

}


abstractclass B {


? publicabstractvoid m();

}


finalclass C {

}

5令宿、

package cn.tedu.interfacex;


import java.io.Serializable;


publicclass InterfaceDemo {


? publicstaticvoid main(String[] args) {


??? // 接口不允許實(shí)例化

??? // Shape s = new Shape();

??? System.out.println(Shape.girth);


? }


}


interface Shape extends Cloneable, Serializable {


? // 默認(rèn)用 public static final 修飾

? staticpublicfinaldoublegirth = 0;


? // public Shape(){}


? // 接口中的方法默認(rèn)public abstract修飾

? double getGirth();


? publicdouble getArea();


}


// 利用implements關(guān)鍵字讓類和接口產(chǎn)生了聯(lián)系 --- 實(shí)現(xiàn)

// Rectangle實(shí)現(xiàn)了Shape接口

@SuppressWarnings("serial")

class Rectangle implements Shape, Cloneable {


? @Override

? publicdouble getGirth() {

??? return 0;

? }


? @Override

? publicdouble getArea() {

??? return 0;

? }

}

6.

package cn.tedu.interfacex;


publicclass InterfaceDemo2 {


? publicstaticvoid main(String[] args) {


??? // A a = new B1();


??? // 在Java中支持的是類和類之間的單繼承

??? // 所以此時(shí)會(huì)形成一棵繼承結(jié)構(gòu)樹

??? // 所以比較容易的就能確定兩個(gè)類之間是否有繼承關(guān)系

??? // 因此在進(jìn)行強(qiáng)制轉(zhuǎn)換的時(shí)候

??? // 會(huì)檢查要轉(zhuǎn)換的對(duì)象的聲明類和轉(zhuǎn)換的類型是否有繼承關(guān)系

??? // a對(duì)象的聲明類型是A類,要轉(zhuǎn)換的類型是B1

??? // B1繼承了A腕窥,所以在編譯時(shí)期就不報(bào)錯(cuò)

??? // 到了運(yùn)行的時(shí)候才會(huì)檢查對(duì)象的實(shí)際類型和要轉(zhuǎn)換的類型是否一致

??? // 運(yùn)行的時(shí)候粒没,發(fā)現(xiàn)a的實(shí)際類型是B1,要轉(zhuǎn)換的類型是B1

??? // 類型一致,允許轉(zhuǎn)換

??? // B1 b1 = (B1) a;


??? // a對(duì)象的聲明類型是A類簇爆,要轉(zhuǎn)換的類型是B2

??? // B2繼承了A癞松,所以在編譯時(shí)期就不報(bào)錯(cuò)

??? // 到了運(yùn)行的時(shí)候,a的實(shí)際類型是B1,要轉(zhuǎn)換的類型是B2

??? // 類型不一致入蛆,所以報(bào)錯(cuò) --- ClassCastException

??? // B2 b2 = (B2) a;


??? // b1對(duì)象的聲明類型B1類响蓉,要轉(zhuǎn)換的是B2

??? // B2沒有繼承B1,編譯就不通過

??? // B2 b2 = (B2) b1;


??? // C c = (C) a;


??? // 在Java中哨毁,類和接口之間是多實(shí)現(xiàn)枫甲,接口和接口之間是多繼承

??? // 所以構(gòu)成了一張圖狀結(jié)構(gòu) --- 網(wǎng)狀結(jié)構(gòu)

??? // 不容易確定兩個(gè)節(jié)點(diǎn)之間的關(guān)系

??? // 因此在編譯時(shí)期為了提高效率放棄檢查

??? // 直到運(yùn)行的時(shí)候再確定類型是否相同

??? // D d = (D) a;


??? // C c = new C();

??? // D d = (D) c;


? }


}


class A {

}


class B1 extends A {

}


class B2 extends A {

}


class C {

}


interface D {

}

7、

package cn.tedu.interfacex;


publicclass InterfaceDemo3 {


? publicstaticvoid main(String[] args) {

? ?Ee=new E();

? Calcc=(i,j)->i+j;

? Calcd=(doublei,doublej)-> {

??? returni+j;

??? };

? ?System.out.println(e.max(3, 7));

? }

}

// 如果一個(gè)接口中只定義了一個(gè)抽象方法挑庶,那么把這個(gè)接口聲明為函數(shù)式接口,接口中的默認(rèn)方法 --- 默認(rèn)是public

// 函數(shù)式接口用@FunctionalInteface

@FunctionalInterface

interface Calc {

? publicdouble add(doublei, doublej);//抽象類中的方法定義方式

? publicdefaultdouble max(doublei, doublej) {

??? returni>j ? i : j;

? }

? publicstaticdouble min(doublei, doublej) {

??? returni

? }

}

class E implementsCalc? {

? @Override

? publicdouble add(doublei, doublej) {

??? returni + j;

? }


}

8言秸、

package cn.tedu.lambda;


publicclass LambdaDemo {


? publicstaticvoid main(String[] args) {


??? // 接口中只定義了1個(gè)抽象方法

??? // 可以利用Lambda表達(dá)式來重寫這唯一的一個(gè)抽象方法

??? //Calcc = newCalc(){

??? //

??? // @Override

??? // public double add(double i,

double j) {

??? // return i + j;

??? // }

??? //

??? // };


??? // 表示重寫Calc中的唯一的一個(gè)抽象方法add

??? // Lambda表達(dá)式只能作用在函數(shù)式接口上

??? //Calcc = (double a,double b) -> {

??? // return a + b;

??? // };

??? // 方法體只有一句软能,可以省略{}和return不寫

??? // 唯一的一句方法體的計(jì)算結(jié)果默認(rèn)為當(dāng)前方法的返回值

??? //Calcc = (double i,double j) -> i + j;


??? // 重寫的是Calc接口中的方法add

??? // add方法的參數(shù)列表的類型是已知的

??? // 可以省略參數(shù)類型不寫

??? // 函數(shù)式編程

??? Calcc = (x, y) ->x + y;


??? System.out.println(c.add(5.8, 9.47));


? }


}


interface Calc {


? double add(doublei, doublej);


}

9迎捺、

package cn.tedu.lambda;


publicclass LambdaDemo2 {


? publicstaticvoid main(String[] args) {


??? // 方法體只有1句

??? // 這一句方法體是直接操作參數(shù)

??? // 這一句方法體是調(diào)用了已有類Math中的靜態(tài)方法sqrt

??? // 參數(shù)列表可以省略

??? // Calculator c = d ->

Math.sqrt(d);

??? Calculatorc = Math::sqrt;

??? System.out.println(c.sqrt(9));


? }


}


interface Calculator {


? double sqrt(doubled);


}package cn.tedu.lambda;


publicclass LambdaDemo2 {


? publicstaticvoid main(String[] args) {


??? // 方法體只有1句

??? // 這一句方法體是直接操作參數(shù)

??? // 這一句方法體是調(diào)用了已有類Math中的靜態(tài)方法sqrt

??? // 參數(shù)列表可以省略

??? // Calculator c = d ->

Math.sqrt(d);

??? Calculatorc = Math::sqrt;

??? System.out.println(c.sqrt(9));


? }


}


interface Calculator {


? double sqrt(doubled);


}

10、

packagecn.tedu.packagex;


// * 通配符

// * 表示導(dǎo)入當(dāng)前包下的所有的類但是不包括子包下的類

importjava.util.*;


public classPackageDemo {


? @SuppressWarnings("resource")

? public static void main(String[] args) {


??? Scanner s = new Scanner(System.in);

??? int n = s.nextInt();


??? int[] arr = new int[n];

??? for (int i = 0; i < n; i++) {

????? arr[i] = s.nextInt();

??? }


??? Arrays.sort(arr);


? }


}


11查排、

package cn.tedu.reiew;


publicclass StaticDemo {


? publicstaticvoid main(String[] args) {


??? System.out.println(A.i);

? ? System.out.println(A.j);


? }


}


class A {


? // 先加載a,i,j

? // 其中a先標(biāo)記為null凳枝,i和j標(biāo)記為0

? // 進(jìn)行初始化操作

? // 先執(zhí)行 static A a = new A();

? // 這個(gè)時(shí)候a的具體地址來覆蓋掉標(biāo)記的null

? // a的實(shí)際對(duì)象是存在堆內(nèi)存中,然后方法區(qū)中存儲(chǔ)a的地址

? // 創(chuàng)建a對(duì)象那么就得執(zhí)行a的構(gòu)造方法

? // 意味著要執(zhí)行i++,j++,在創(chuàng)建對(duì)象將標(biāo)記值先認(rèn)為是默認(rèn)值

? // i->1 j->1

? // a的構(gòu)造方法執(zhí)行完成,然后初始化i和j

? // i = 5;利用實(shí)際數(shù)據(jù)5覆蓋掉標(biāo)記值1

? // 注意:在類加載過程中不允許計(jì)算標(biāo)記值/

? // 但是在創(chuàng)建對(duì)象或者其他方式使用的時(shí)候會(huì)將標(biāo)記值認(rèn)為是默認(rèn)值使用

? static A a = new A();

? staticinti = 5;

? staticintj;


? public A() {

??? i++;

??? j++;

??? System.out.println(i);

??? System.out.println(j);

? }


}


DAY 10

1.

package cn.tedu.reiew;


publicclass StaticDemo {


? publicstaticvoid main(String[] args) {


??? System.out.println(A.i);

??? System.out.println(A.j);


? }


}


class A {


? // 先加載a,i,j

? // 其中a先標(biāo)記為null岖瑰,i和j標(biāo)記為0

? // 進(jìn)行初始化操作

? // 先執(zhí)行 static A a = new A();

? // 這個(gè)時(shí)候a的具體地址來覆蓋掉標(biāo)記的null

? // a的實(shí)際對(duì)象是存在堆內(nèi)存中叛买,然后方法區(qū)中存儲(chǔ)a的地址

? // 創(chuàng)建a對(duì)象那么就得執(zhí)行a的構(gòu)造方法

? // 意味著要執(zhí)行i++,j++,在創(chuàng)建對(duì)象將標(biāo)記值先認(rèn)為是默認(rèn)值

? // i->1 j->1

? // a的構(gòu)造方法執(zhí)行完成,然后初始化i和j

? // i = 5;利用實(shí)際數(shù)據(jù)5覆蓋掉標(biāo)記值1

? // 注意:在類加載過程中不允許計(jì)算標(biāo)記值/

? // 但是在創(chuàng)建對(duì)象或者其他方式使用的時(shí)候會(huì)將標(biāo)記值認(rèn)為是默認(rèn)值使用

? static A a = new A();

? staticinti = 5;

? staticintj;


? public A() {

??? i++;

??? j++;

??? System.out.println(i);

??? System.out.println(j);

? }


}

2.

package cn.tedu.object;


publicclass ObjectDemo2 {


? publicstaticvoid main(String[] args) {


??? // hashCode --- 哈希碼

??? // 哈希碼是根據(jù)哈希散列算法計(jì)算出來的

??? // 哈希散列算法保證同一個(gè)類產(chǎn)生的對(duì)象的哈希碼能夠是散列且比較均勻的分布在43億值上

??? // 產(chǎn)生重合的概率是相對(duì)較小的蹋订,因此人為的認(rèn)為對(duì)象的哈希碼是唯一的

??? // 在存儲(chǔ)對(duì)象的時(shí)候會(huì)將對(duì)象的哈希碼作為元素的內(nèi)存地址表示

??? // System.out.println(new

Object().hashCode());

??? // System.out.println(new

Object().hashCode());

??? // System.out.println(new

Object().hashCode());

??? // System.out.println(new

Object().hashCode());


??? Objecto = newObject();

??? // 默認(rèn)是打印對(duì)象的 類型@地址 的形式

??? System.out.println(o.toString());

??? // 直接打印對(duì)象是在底層調(diào)用了對(duì)象的toString

??? System.out.println(o);


??? Students = new Student();

??? System.out.println(s);


? }


}


class Student {


? private String name;

? privateintage;


? public String getName() {

??? returnname;

? }


? publicvoid setName(String name) {

??? this.name = name;

? }


? publicint getAge() {

??? returnage;

? }


? publicvoid setAge(intage) {

??? this.age = age;

? }


? @Override

? public String toString() {

??? return"Student [name=" + name + ", age=" + age + "]";

? }


? // @Override

? // public String toString() {

? // return "name:" +name + "\r\nage:" + age;

? // }


}

3.

package cn.tedu.object;


publicclass ObjectDemo3 {


? publicstaticvoid main(String[] args) {


??? Personp1 = newPerson();

??? // p1.name = "Amy";

??? p1.name = null;

??? p1.age = 15;

??? p1.gender = '女';


??? Personp2 = newPerson();

??? p2.name = null;

??? p2.age = 15;

??? p2.gender = '女';


??? // 底層默認(rèn)使用==進(jìn)行比較 --- 比較兩個(gè)對(duì)象的地址是否一樣

??? System.out.println(p1.equals(p2));


? }


}


classPerson {


? Stringname;

? intage;

? chargender;


? @Override

? publicboolean equals(Object obj) {


??? // 判斷地址是否一樣

??? if (this == obj)

????? returntrue;


??? // 判斷參數(shù)是否為空

??? if (obj == null)

????? returnfalse;


??? // 判斷類型是否一致

??? if (this.getClass() != obj.getClass())

????? returnfalse;


??? // 判斷屬性值

??? Personp = (Person) obj;


??? // 判斷屬性age是否一致

??? if (this.age != p.age)

????? returnfalse;


??? // 判斷屬性gender是否一致

??? if (this.gender != p.gender)

????? returnfalse;


??? // 判斷屬性name是否一致

??? if (this.name == null) {

????? if (p.name != null)

?????? returnfalse;

??? }elseif (!this.name.equals(p.name))

????? returnfalse;


??? returntrue;

? }


}

4.

package cn.tedu.object;


publicclass ObjectDemo4 {


? publicstaticvoid main(String[] args) {


??? // 不是內(nèi)部類率挣,不會(huì)產(chǎn)生class文件

??? //Calcc = (i, j) -> i+ j;

??? Objectc = (Calc) (i, j) ->i + j;


??? // Object c = newCalc() {

??? //

??? // @Override

??? // public double add(double i,

double j) {

??? // return i + j;

??? // }

??? // };

??? System.out.println(c.getClass());


? }


}


interface Calc {


? publicdouble add(doublei, doublej);


}

5.

package cn.tedu.object;


publicclass ObjectExer {


}


class User {


? private String username;

? private String password;


? public String getUsername() {

??? returnusername;

? }


? publicvoid setUsername(String username) {

??? this.username = username;

? }


? public String getPassword() {

??? returnpassword;

? }


? publicvoid setPassword(String password) {

??? this.password = password;

? }


? // hashCode的重寫:

? // 如果兩個(gè)對(duì)象equals為true,那么哈希碼一致

? // 不同對(duì)象的哈希碼要不同并且要做到散列分布

? @Override

? publicint hashCode() {

??? finalintprime = 31;

??? intresult = 1;

??? result = prime * result + ((password == null) ? 0 : password.hashCode());

??? result = prime * result + ((username == null) ? 0 : username.hashCode());

??? returnresult;

? }


? @Override

? publicboolean equals(Object obj) {


??? if (this == obj)

????? returntrue;


??? if (obj == null)

????? returnfalse;


??? if (getClass() != obj.getClass())

????? returnfalse;


??? Userother = (User) obj;


??? if (password == null) {

????? if (other.password != null)

?????? returnfalse;

??? }elseif (!password.equals(other.password))

????? returnfalse;


??? if (username == null) {

????? if (other.username != null)

?????? returnfalse;

??? }elseif (!username.equals(other.username))

????? returnfalse;


??? returntrue;

? }


? // @Override

? // public boolean equals(Objectobj){

? //

? // // 判斷地址是否一致

? // if (this ==obj)

? // return true;

? //

? // // 判斷參數(shù)是否為空

? // if (obj== null)

? // return false;

? //

? // // 判斷類型是否一致

? // if (this.getClass() !=

obj.getClass())

? // return false;

? //

? // // 判斷屬性是否一致

? // User user = (User)obj;

? //

? // if (this.username == null) {

? // if (user.username != null)

? // return false;

? // } else if

(!this.username.equals(user.username))

? // return false;

? //

? // if (this.password == null) {

? // if (user.password != null)

? // return false;

? // } else if

(!this.password.equals(user.password))

? // return false;

? //

? // return true;

? //

? // }


}

6.package cn.tedu.string;


publicclass StringDemo {


? publicstaticvoid main(String[] args) {


??? // Stringstr= "abc";

??? //str= "def";

??? // System.out.println(str);


??? // s1指向方法區(qū)

??? Strings1 = "ab";

??? // s2指向堆內(nèi)存露戒,堆內(nèi)存指向方法區(qū)

??? Strings2 = new String("ab");

??? // 字符串在方法區(qū)中只存放一份

??? // 后續(xù)使用到值相等的字符串的時(shí)候使用的是同一個(gè)

??? Strings3 = "ab";

??? // "a"和"b"是兩個(gè)字面量

??? // 字面量在參與運(yùn)算的時(shí)候?yàn)榱颂岣咝试诰幾g時(shí)期就會(huì)運(yùn)算

??? // String s4 = "a" +"b"; -> String s4 = "ab";

??? Strings4 = "a" + "b";

??? // s5 = s5 + "b";不會(huì)優(yōu)化

??? // 實(shí)際上底層是利用了StringBuilder中的append方法來完成

??? Strings5 = "a";

??? // s5 = new

StringBuilder(s5).append("b").toString();

??? // s5最后指向堆內(nèi)存椒功,堆內(nèi)存再指向方法區(qū)

??? s5 = s5 + "b";


??? System.out.println(s1 == s2);

??? System.out.println(s1 == s3);

??? System.out.println(s1 == s4);

??? System.out.println(s1 == s5);

??? System.out.println(s2 == s5);


? }


}

7.

package cn.tedu.string;


publicclass StringDemo2 {


? publicstaticvoid main(String[] args) {


??? // 表示獲取從1970-01-01 00:00:00到現(xiàn)在的毫秒值

??? longbegin= System.currentTimeMillis();


??? // Stringstr="";

??? // for (inti = 0; i <100000; i++) {

??? //str+= "a";

??? // }


??? StringBuildersb = newStringBuilder();

??? for (inti = 0; i< 100000000; i++) {

????? sb.append("a");

??? }

??? // Stringstr=sb.toString();


??? longend= System.currentTimeMillis();

??? System.out.println(end - begin);

? }


}

8.

package cn.tedu.string;


publicclass StringDemo3 {


? publicstaticvoid main(String[] args) {


??? // Stringstr= "vhaovldasnoasbo";


??? // 獲取字符串的長(zhǎng)度

??? //

System.out.println(str.length());


??? // 通過指定的下標(biāo)獲取字符串對(duì)應(yīng)位置上的字符

??? // char c = str.charAt(4);

??? // System.out.println(c);


??? // 將字符串轉(zhuǎn)化為字符數(shù)組形式

??? // char[]cs=str.toCharArray();

??? // for (char c :cs) {

??? // System.out.println(c);

??? // }


??? char[] cs = { 'd', 'e', 'g', 'y', 'c', 'r', 'n', 'u', 'a', 'u' };


??? // 將字符數(shù)組轉(zhuǎn)化為字符串

??? // Stringstr= newString(cs);


??? Stringstr = new String(cs, 3, 5);

??? System.out.println(str);

? }


}

9.

package cn.tedu.string;


import java.util.Scanner;


publicclass StringExer {


? @SuppressWarnings("resource")

? publicstaticvoid main(String[] args) {


??? Scanners = new Scanner(System.in);

??? Stringstr = s.next();

??? intbegin = s.nextInt();

??? intend = s.nextInt();


??? Stringsub = subString(str, begin, end);

??? System.out.println(sub);

? }


publicstatic String subString(String str, intbegin, intend) {


??? // 判斷參數(shù)是否為空

??? if (str == null)

????? returnnull;


??? // 判斷起始下標(biāo)

??? if (begin< 0 || begin>= str.length() || begin>end)

????? returnnull;


??? // 判斷結(jié)束下標(biāo)

??? if(end< 0 || end>= str.length())

????? returnnull;


??? char[] cs = str.toCharArray();

??? Stringsub = new String(cs, begin, end - begin);


??? returnsub;


? }

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市智什,隨后出現(xiàn)的幾起案子动漾,更是在濱河造成了極大的恐慌,老刑警劉巖荠锭,帶你破解...
    沈念sama閱讀 218,682評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件旱眯,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡证九,警方通過查閱死者的電腦和手機(jī)删豺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來愧怜,“玉大人吼鳞,你說我怎么就攤上這事〗懈椋” “怎么了赔桌?”我有些...
    開封第一講書人閱讀 165,083評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)渴逻。 經(jīng)常有香客問我疾党,道長(zhǎng),這世上最難降的妖魔是什么惨奕? 我笑而不...
    開封第一講書人閱讀 58,763評(píng)論 1 295
  • 正文 為了忘掉前任雪位,我火速辦了婚禮,結(jié)果婚禮上梨撞,老公的妹妹穿的比我還像新娘雹洗。我一直安慰自己,他們只是感情好卧波,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評(píng)論 6 392
  • 文/花漫 我一把揭開白布时肿。 她就那樣靜靜地躺著,像睡著了一般港粱。 火紅的嫁衣襯著肌膚如雪螃成。 梳的紋絲不亂的頭發(fā)上旦签,一...
    開封第一講書人閱讀 51,624評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音寸宏,去河邊找鬼宁炫。 笑死,一個(gè)胖子當(dāng)著我的面吹牛氮凝,可吹牛的內(nèi)容都是我干的羔巢。 我是一名探鬼主播,決...
    沈念sama閱讀 40,358評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼罩阵,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼朵纷!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起永脓,我...
    開封第一講書人閱讀 39,261評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤袍辞,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后常摧,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體搅吁,經(jīng)...
    沈念sama閱讀 45,722評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年落午,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了谎懦。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,030評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡溃斋,死狀恐怖界拦,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情梗劫,我是刑警寧澤享甸,帶...
    沈念sama閱讀 35,737評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站梳侨,受9級(jí)特大地震影響蛉威,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜走哺,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評(píng)論 3 330
  • 文/蒙蒙 一蚯嫌、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧丙躏,春花似錦择示、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至敢朱,卻和暖如春剪菱,著一層夾襖步出監(jiān)牢的瞬間摩瞎,已是汗流浹背拴签。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工孝常, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蚓哩。 一個(gè)月前我還...
    沈念sama閱讀 48,237評(píng)論 3 371
  • 正文 我出身青樓构灸,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親岸梨。 傳聞我的和親對(duì)象是個(gè)殘疾皇子日杈,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評(píng)論 2 355