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

歡迎訪問 生活随笔!

生活随笔

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

java

Java学习笔记四

發布時間:2024/2/28 java 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java学习笔记四 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

51.

java中的數組是一個引用,所以也是可以調用equals 方法的,如果比較兩個數組的內容是否相同不能用equals方法;

比如? int[] a = {1,2,3,}

????? int[] b= {1,2,3};

System.out.println (a.equals(b));

結果肯定是false;因為并沒有實現對equals方法的重寫,比較的是兩個數組的引用地址;顯然是不相同的

52.

構造方法的作用是對類中的屬性賦初值,運用this方法,

返回給主函數

數組也是可以使用的

public class Test

{

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

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

???????????????????? Person[]?array = new? Person [3];//生成數組

???????????????????? array[0] = new Person (12);//生成數組對象;并賦值給age

???????????????????? array[1] = new Person (11);

???????????????????? array[2] = new Person (23);

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

???????????????????? System.out.println (array[i].age);

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

}

class Person

{

????????????? int age ;

????????????? public Person (int age)

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

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

???????????????????????????

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

}

51、

奇數是張三偶數是李四

public class Test

{

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

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

???????????????????? Person[] p = new Person[100];

????????????????????

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

???????????????????? p[i] = new Person ();

???????????????????? for (int j = 0; j <= p.length; j++)

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

?????????????????????????????????? if (j % 2== 0)

?????????????????????????????????? p[j] .name = "zhangsan";

?????????????????????????????????? else p[j].name ="lisi";

?????????????????????????????????? System.out.println(p[j].name);

??????????????????????????????????

??????

??????????????????????????????????

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

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

}

class Person

{

????????????? String name;

?????????????

}

用判斷的方法來做

public class Test3

{

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

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

???????????????????? Person[] a = new Person [100];

????????????????????

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

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

???????????????????? ??? a[i] =new Person ();

??????????????????????????? a[i].name = i%2 ==0 ?"lisi":"wangwu";

??????????????????????????? System.out.println (a[i].name);

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

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

}

class Person

{

????????????? String name ;

?????????????

}

52.

數組是對象

53.?

如何驗證數組是對象

int[] I = new int[10]

System.out.println (I? instanceof Object);

打印出 true

54;

//關于二維數組的不規則形式

//二維數組允許先定義行再定義列的順序,反過來是不可以的,因為先定義列就無法確認行數!

public class Test

{

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

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

???????????????????? int m =3;

???????????????????? int[][] a = new int[3][];//先聲明有三行;

????????????? ?a[0] = newint[3];//第一行有三個元素;

????????????? ?a[1] = newint[2];

????????????? ?a[2] = newint[1];

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

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

????????????? for (int j = 0; j <a[i].length; j++)

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

????????????? a[i][j] = m;

????????????? m +=2;

????????????? System.out.print (a[i][j]);

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

????????????? System.out.println ("\n");

?????????????

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

?????????????

?????????????

?????????????

?????????????

?????? }

}//也可以這樣寫,在生成數組的時候就賦上值;int[][] a = new int [3][]{{1,23},{23},{7,8,7}}

55.

數組是對象,所以在生成數組時的變量就是一個引用,且引用指向數組的首地址等,即第一個;

int[] a = new int [3];

a是一個引用,既然a是一個引用那么當它進行傳遞時,就可以是其他的引用共同指向對象,即可以通過其他引用改變對象的內容;

public classTest

{

????????????? public static void method(char[]ch , char ch1)

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

???????????????????? ch[0]= 'C';//現在的ch也是一個引用,通過引用改變數組的第一個值;

???????????????????? ch1 = 'D';

????????????????????

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

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

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

??????????????????????????? char[] ch = {'A','f'};

??????????????????????????? method (ch ,ch[1]);//ch是一個數組引用,ch[1]是一個字符值;傳給method方法;

??????????????????????????? System.out.println(ch[0]);

??????????????????????????? System.out.println(ch[1]);

???????????????????????????

???????????????????????????

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

?????????????

}

打印結果、:

c f;

發現:如果直接打印數組的引用打印出來的是數組的所有元素;

因為java里面沒有指針,所以只能通過數組的形式來交換方法的數值,傳遞給方法數組的引用后,就可以對數組進行修改,如同上例;

56.

要注意的是聲明數組的時候并沒有聲稱對象,只是生成了數組對象的實例,

我們知道接口interface,是不能生成對象的;

57.

關于靜態static如果生命在本類當中的屬性,則該類中的方法,可以直接調用,而不用前綴類名;如類為Test? 直接 method();

58;

//比較兩個數組是否相同,要比較數組的長度和內容是否相同;

/比較兩個數組是否相同,要比較數組的長度和內容是否相同;

importjava.util.Arrays;

public classTest

{

????????????? public static boolean method(int[] x, int[] y)

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

??????????????????????????? if(x == null || y ==null )

??????????????????????????? return false ;

??????????????????????????? if (x.length !=y.length)

??????????????????????????? return false;

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

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

????????????????????????????????????????? if(x[i]!= y[i])

????????????????????????????????????????? returnfalse;

?????????????????????????????????????????

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

??????????????????????????? return true;

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

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

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

??????????????????????????? int[] a = {3,4,6};

??????????????????????????? int[] b = {3,4,5,6};

??????????????????????????? System.out.println(method(a, b));

??????????????????????????? System.out.println(Arrays.equals(a, b));

??????????????????????????? //不做這樣做是有些麻煩,java中有專門的方法來比較兩個數組是否相同,就是位于java.utill.Arrays

??????????????????????????? //由于不是java.lang包下的類所以要聲明導入;

???????????????????????????

???????????????????????????

??????????????????????????? ???????????????????????????

?????????????

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

}

59.

關于數組拷貝copy的問題。回過頭來看下

60.

數組的功能:查詢和排序

1.冒泡排序

public class Test

{

????????????? public static void method (int[] a)

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

???????????????????? int temp;

???????????????????? for(int i = 0; i <a.length - 1;i++)//這點是要非常注意的,上面是長度減一,下面是長度減一減i;!

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

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

???????????????????????????

??????????????????????????? if (a[j]>a[j+1])

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

??????????????????????????? temp = a[j];

??????????????????????????? a[j] = a[j + 1];

??????????????????????????? a[j + 1] =temp;

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

???????????????????????????

???????????????????????????

???????????????????????????

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

???????????????????? for (int x = 0 ;x <= 9;x++)

???????????????????? System.out.println (a[x]);

????????????????????

????????????????????

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

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

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

??????????????????????????? int[] a ={2,3,4,1,54,32,45,32,221,44};

??????????????????????????? Test.method (a);

???????????????????????????

???????????????????????????

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

}

61.

關于二分查找

關于二分查找我有兩個問題,希望高手能指點一二。 1.二分查找的對象是個有序數組,如果這個數組元素個數為偶數時的情形是怎樣的呢?這個我似乎在書上沒有找到。比如如果查找的數組元素個數為12個,那么mid指針指向的是第幾個元素呢? 2.對于任意長度的有序數組,二分查找真的能在最多4次查找之后就可以返回結果嗎?為什么? ? ? 1 對于查找條件為等式的情況,mid指針可以指向中間偏左,也可以指向中間偏右,對于查找條件為不等式時,要根據具體情況選擇,查找大于某數的第一個數值時選擇指向中間偏左,查找小于某數的第一個數值時選擇之下是那個中間偏右 2 這個說法是錯誤的,二分查找的復雜度為O(logn),簡單的說,就是對于n個元素的數組,大約需要查找logn次,如n=1000,則需要7次查找 62. ? ? //自己寫的二分排序法,我自己的理解 //二分排序法得以進行的條件是數組必須是有序的;這里我選擇升序; //由于是折中進行,所以數組索引值會向中間靠攏,當找到所需值,或者找到索引的最小最大值相等時,循環就結束了 //對于奇數索引數組元素為偶數來說,因為length是整形,除以二當然舍棄小數點,這里偶數奇數數組都是沒有影響的 //如果在左邊索引最高值為中間值 - 1;在右邊最小值為中間值 + 1 ? public class Test3 { ?????????????????????????????? public static int method (int[] a, int value) ?????????????????????????????? { ???????????????????????????????????????????????????????????? int low = 0; ???????????????????????????????????????????????????????????? int high = a.length -1; ???????????????????????????????????????????????????????????? int middle ; ???????????????????????????????????????????????????????????? while (low <= high) ???????????????????????????????????????????????????????????? { ???????????????????????????????????????????????????????????? middle = (low +high) / 2; ???????????????????????????????????????????????????????????? if (value == a[middle]) ???????????????????????????????????????????????????????????? return middle ; ???????????????????????????????????????????????????????????? if(value < a[middle]) ???????????????????????????????????????????????????????????? high = middle - 1; ???????????????????????????????????????????????????????????? if(value > a[middle]) ???????????????????????????????????????????????????????????? low = middle + 1 ; ???????????????????????????????????????????????????????????? } ???????????????????????????????????????????????????????????? return -1; ?????????????????????????????? } ?????????????????????????????? public static void main (String[] args) ?????????????????????????????? { ????????????????????????????????????????????? int[] a =? {1,2,3,4,5,6,7,8} ; ????????????????????????????????????????????? int value = 3; ????????????????????????????????????????????? System.out.println(method (a , value)); ????????????????????????????????????????????? ?????????????????????????????? } } 63.

時間復雜度:同一問題可用不同算法解決,而一個算法的質量優劣將影響到算法乃至程序的效率。算法分析的目的在于選擇合適算法和改進算法。

按數量級遞增排列,常見的時間復雜度有:

  常數階O(1),對數階O(log2n),線性階O(n),

  線性對數階O(nlog2n),平方階O(n2),立方階O(n3),...,

  k次方階O(nk), 指數階O(2n) 。隨著問題規模n的不斷增大,上述時間復雜度不斷增大,算法的執行效率越低。

64. 隨機Random; ? //如何隨機生成數字;通過調用 java.util包下的Random類的 nextInt(int)方法來實現。其中n代表隨機數的邊界,但隨機數不包含邊界n; //即生成的數字介于? 0 <= x <n,之間,下面的程序是要找到10 ——50的隨機數,所以加上了10;注意括號的位置; ? import java.util.Random; public class RandomTest { ?????????????????????????????? public static void main (String[] args) ?????????????????????????????? { ?????????????????????????????? Random r = new Random ();????????? ?????????????????????????????? for (int i = 0 ; i < 50; i++ ) ?????????????????????????????? System.out.println (r.nextInt(41)+10); ?????????????????????????????? } } 看一下另一種方法 //隨機生成數字,在java.lang包下也有一個類 Math.random() 方法,功能是返回一個double型隨機數字 //方法原型為 public static double random (); //數字的范圍介于 0.0 ——1.0 之間,當然左等右不等,例如上例,仍然要生成介于10 -50間數字,而且是整數,則要涉及到幾個步驟 //第一,將范圍增加到目的。二是要強制類型轉換 ? public class RandomTest { ?????????????????????????????? public static void main (String[] args) ?????????????????????????????? { ?????????????????????????????? for (int i = 0; i < 50; i++) ?????????????????????????????? System.out.println (Math.random()); ?????????????????????????????? ?????????????????????????????? ?????????????????????????????? for (int i = 0; i < 50; i++) ?????????????????????????????? { ?????????????????????????????? double a;//要注意定義a的類型; ?????????????????????????????? a = Math.random (); ?????????????????????????????? a *= 41; ?????????????????????????????? int a2 = (int) a ; ?????????????????????????????? a2 += 10; ?????????????????????????????? System.out.println(a2); ?????????????????????????????? } ?????????????????????????????? ?????????????????????????????? ?????????????????????????????? ?????????????????????????????? ?????????????????????????????? } ?????????????????????????????? ?????????????????????????????? ?????????????????????????????? } 65. 來看一道題

?

隨機生成50個數字(整數),每個數字的范圍是[10, 50],統計每個數字出現的次數以及出現次數最多的數字與它的個數,最后將每個數字及其出現次數打印出來,如果某個數字出現次數為0,則不要打印它。打印時按照數字的升序排列。

? import java.util.Random; public class Test { ?????????????? public static void main (String[] args) ?????????????? { ????????????????????????????????????????????? Random random? = new Random (); ????????????????????????????????????????????? int[] count = new int[41]; ????????????????????????????????????????????? for (int i = 0 ;? i < 50; i++) ????????????????????????????????????????????? { ???????????????????????????????????????????????????????????? int num = random.nextInt (41) + 10; ???????????????????????????????????????????????????????????? System.out.println(num); ???????????????????????????????????????????????????????????? count[num - 10] ++; ????????????????????????????????????????????? } ????????????????????????????????????????????? for (int j = 10 ;j< 51; j++) ????????????????????????????????????????????? { ???????????????????????????????????????????????????????????? if (count[j - 10] ==0)//如果個數為零的話不打印; ???????????????????????????????????????????????????????????? continue; ???????????????????????????????????????????????????????????? System.out.print(j+"共有"); ???????????????????????????????????????????????????????????? System.out.println(count[j-10] +""); ????????????????????????????????????????????? } ????????????????????????????????????????????? ?????????????? } }

總結

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

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