[JAVA] JAVA基礎(chǔ)

一、堆區(qū)和棧區(qū)

  1. 棧中主要存放一些基本類型的變量。
    (int, short, long, byte, float, double, boolean, char)和引用類型數(shù)據(jù)的內(nèi)存地址。

  2. 堆中主要存放引用類型的數(shù)據(jù)。

  3. 棧的存取速度比堆要快。

  4. 棧數(shù)據(jù)可以共享。

  5. 棧的數(shù)據(jù)大小確定的,堆中數(shù)據(jù)大小可變。

二、數(shù)據(jù)類型自動(dòng)轉(zhuǎn)換

  1. 如果一個(gè)操作數(shù)為double型,則整個(gè)表達(dá)式可提升為double型。

  2. 滿足自動(dòng)類型轉(zhuǎn)換的條件:兩種類型要兼容,數(shù)值類型(整型和浮點(diǎn)型)互相兼容,目標(biāo)類型大于源類型(例如:double型大于int型)。

  3. 強(qiáng)制轉(zhuǎn)換: 如double b=3.98; int a=(int)b;

三、接收鍵盤輸入

public static void main(String[] args){
  Scanner input=new Scanner(System.in);
  System.out.println("請(qǐng)輸入一個(gè)數(shù)據(jù):");
  //String s=input.next();
  int y=input.next.int();

  System.out.println("輸出"+(y+5));
}

四、獲取隨機(jī)數(shù)

Math.random()
獲取0-1內(nèi)一個(gè)隨機(jī)浮點(diǎn)數(shù),不包含1。

Random e = new Random();
e.nextInt(10);
獲取0-10內(nèi)一個(gè)隨機(jī)整數(shù),不包含10。

五、保留2位小數(shù)

double a=15.3;
double b=3;

DecimalFormat df =new DecimalFormat("0.00");
String s=df.format(a/b);
double result=Double.valueOf(s);

System.out.println(result);

六、數(shù)組

  1. 定義:
//動(dòng)態(tài)初始化
int[] a;
a = new int[3];
a[0]=8;
a[1]=8;
a[2]=8;

//靜態(tài)初始化
int[] b=new int[]{1,2,3,4,5};
int[] c={6,7,8,9};
  1. for-each循環(huán)
    語(yǔ)法:
    for(元素類型 元素變量:要遍歷對(duì)象){
    循環(huán)語(yǔ)句;
    }
    for each循環(huán)執(zhí)行次數(shù)取決于遍歷的對(duì)象元素個(gè)數(shù)。

  2. 數(shù)組增加元素

int[] oldArray={1,2,3,4,5,6,7};
int[] newArray=new int[oldArray.lenght+1];

for(int i=0;i<=oldArray.lenght-1;i++){
  newArray[i]=oldArray[i];
}
newArray[newArray.lenght-1]=0;

for(int x:newArray){
  System.out.printIn(x);
}
  1. Arrays工具類
    Arrays.sort(array);//排序
    Arrays.toString(array);//轉(zhuǎn)字符串

七、排序

  1. 冒泡排序
    每次拿前一個(gè)值跟后一個(gè)值進(jìn)行比較,如果前一個(gè)值大,就交換;
    每一輪會(huì)把當(dāng)前的最大值交換到最后,直到排序成功。

  2. 選擇排序
    依次在數(shù)組中選擇一個(gè)值,跟后面所有的值進(jìn)行比較;如果有值比這個(gè)值小,就交換。

  3. 插入排序
    把數(shù)組分成左右兩部分,假設(shè)左邊部分已經(jīng)完成排序;依次從第二個(gè)元素開始,把每個(gè)元素插入到左邊合適的位置。

八、類和對(duì)象

八-1 方法

  1. System.out.println()

println()是一個(gè)方法。
System是系統(tǒng)類。
out是標(biāo)準(zhǔn)輸出對(duì)象。
這句話的用法是調(diào)用系統(tǒng)類 System 中的標(biāo)準(zhǔn)輸出對(duì)象 out 中的方法 println()。

  1. 什么是方法?
    Java方法是語(yǔ)句的集合,它們?cè)谝黄饒?zhí)行一個(gè)功能;
    方法是解決一類問(wèn)題的步驟的有序組合;
    方法一般包含于類中;
    方法在程序中被創(chuàng)建,在其他地方被引用。

  2. 方法的優(yōu)點(diǎn)
    使程序變得更簡(jiǎn)短而清晰;
    有利于程序維護(hù);
    可以提高程序開發(fā)的效率;
    提高了代碼的重用性。

  3. 方法定義格式
    訪問(wèn)修飾符 返回值類型 方法名(參數(shù)類型 參數(shù)名){

方法體

return 返回值;
}

八-2 類和對(duì)象

  1. 屬性和方法是對(duì)象的基本構(gòu)成。

屬性:對(duì)象具有的各種特征,每個(gè)對(duì)象的每個(gè)屬性都擁有特定值。
例如:張浩和李明的年齡、姓名不一樣。

方法:對(duì)象執(zhí)行的操作。

對(duì)象:用來(lái)描述客觀事物的一個(gè)實(shí)體,由一組屬性和方法構(gòu)成。
對(duì)象同時(shí)具有屬性和方法兩項(xiàng)特性,對(duì)象的屬性和方法通常被封裝在一起,共同體現(xiàn)事物的特性,二者相輔相承,不能分割。

  1. 類和對(duì)象
    類是模子,定義對(duì)象將會(huì)擁有的特征(屬性)和行為(方法)。
    類是對(duì)象的類型,對(duì)象是類的對(duì)象。

類是抽象的概念,僅僅是模板,比如:人。
對(duì)象是一個(gè)你能夠看得到、摸得著的具體實(shí)體。

  1. 面向?qū)ο蟮乃季S

  2. 定義一個(gè)類
    所有JAVA程序都以類class為組織單元,我們使用關(guān)鍵字class定義類。

  3. 創(chuàng)建對(duì)象的步驟
    類名 對(duì)象名=new 類名();
    引用對(duì)象成員:使用“.”進(jìn)行以下操作。
    引用類的屬性:對(duì)象名.屬性
    引用類的方法:對(duì)象名.方法名()

  4. this
    this表示當(dāng)前對(duì)象
    作用:獲取當(dāng)前對(duì)象的屬性;使用this調(diào)用構(gòu)造方法。

  5. static可以修飾屬性和方法

- static修飾 非static修飾
屬性 類屬性、類變量、靜態(tài)變量 實(shí)例屬性、實(shí)例變量
方法 類方法、靜態(tài)方法 實(shí)例方法
調(diào)用方式 類名.屬性
類名.方法()
對(duì)象.屬性
對(duì)象.方法()
對(duì)象.屬性
對(duì)象.方法()
歸屬 單個(gè)對(duì)象

九、面向?qū)ο笕筇匦?/h2>

封裝、繼承、多態(tài)

封裝:

將類的某些信息隱藏在類內(nèi)部,不允許外部程序直接訪問(wèn),而是通過(guò)該類提供的方法來(lái)實(shí)現(xiàn)對(duì)隱藏信息的操作和訪問(wèn)。
封裝的步驟:1)修改屬性的可見(jiàn)性(設(shè)為private)2)創(chuàng)建公有的getter/setter方法(用于屬性的讀寫)3)在getter/setter方法中加入屬性控制語(yǔ)句(對(duì)屬性值的合法性進(jìn)行判斷)。
使用private修飾的屬性和方法只能在本類中被訪問(wèn)。
get()set()方法其實(shí)就是為封裝而設(shè)計(jì)的。

  1. 4種訪問(wèn)修飾符
    訪問(wèn)修飾符可以用在類、方法、屬性上面。
訪問(wèn)修飾符 本類 同包 子類 其他
private ??
默認(rèn)(friendly) ?? ??
protected ?? ?? ??
public ?? ?? ?? ??

繼承:

子類和父類是is-a的關(guān)系。
使用繼承:編寫父類class Pet{//公共的屬性和方法} 編寫子類,繼承父類class Dog extends Pet{//子類特有的屬性和方法} class Penguin extends Pet{//}。
子類繼承父類后,自動(dòng)擁有父類非私有屬性和方法。一個(gè)父類可以被多個(gè)子類繼承。在java中,一個(gè)子類只能繼承一個(gè)父類。
子類不能繼承父類的情況:(1)private成員(2)子類與父類不在同包,使用默認(rèn)訪問(wèn)權(quán)限的成員(3)構(gòu)造方法。

  1. super關(guān)鍵字
    子類訪問(wèn)父類成員
    (1)訪問(wèn)父類構(gòu)造方法
    super();
    super(name);(在子類構(gòu)造方法中)需要寫在子類構(gòu)造方法的第一行。
    (2)訪問(wèn)父類屬性
    super.name;
    (3)訪問(wèn)父類方法
    super.print();

  2. final修飾符
    final可以用來(lái)修飾類、方法、變量;

final修飾的類不能被繼承;
final修飾的方法不能被子類重寫;
final修飾的變量不能改變值。

  1. Object類
    Object類是所有類的最終父類。

==:地址是否相同。
object類中的equals()方法和==意義相同。
字符串是一個(gè)類,也有equals()方法,但是字符串類對(duì)equals方法實(shí)現(xiàn)了重寫。

重寫object類中的equals()方法

多態(tài):

同一個(gè)引用類型,使用不同的實(shí)例而執(zhí)行不同操作。
使用多態(tài)的條件:編寫具有繼承關(guān)系的父類和子類;子類重寫父類方法;父類引用指向子類的對(duì)象。
多態(tài)中有向上轉(zhuǎn)型和向下轉(zhuǎn)型。(向上轉(zhuǎn)型是將子類對(duì)象轉(zhuǎn)為父類對(duì)象使用;向下轉(zhuǎn)型是將父類對(duì)象轉(zhuǎn)為子類對(duì)象使用。)instanceof

  1. 抽象類
    抽象類只能被繼承,不能被實(shí)例化。
    抽象類中可以有普通方法,也可以有抽象方法。(抽象方法沒(méi)有方法體。父類定義的抽象方法,子類必須實(shí)現(xiàn)(重寫),除非子類也是抽象類)

定義抽象類和抽象方法的目的:
1)使得父類更加簡(jiǎn)潔純粹,只做規(guī)范而不用涉及具體內(nèi)容;
2)對(duì)子類的方法進(jìn)行了規(guī)范,方便統(tǒng)一管理和團(tuán)隊(duì)協(xié)同開發(fā);
3)抽象類專門為繼承而生。

  1. 接口類
    繼承:is-a的關(guān)系; 接口:has-a的關(guān)系。

接口:
public interface MyInterface{
public void foo();
//其他方法
所有方法都是:public abstract
}

接口不可能被實(shí)例化;
實(shí)現(xiàn)類必須實(shí)現(xiàn)接口的所有方法;
一個(gè)類可以實(shí)現(xiàn)多個(gè)接口;
接口中的變量都是靜態(tài)常量。

接口的存在可以解決Java中不能多繼承的問(wèn)題。

接口類屬性是全局靜態(tài)常量;接口類方法必須是public抽象方法;沒(méi)有構(gòu)造方法;無(wú)法實(shí)例化。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容