天天看點

Java基礎-11總結Eclipse使用,API,Object類

你需要的是什麼,直接評論留言。

分享是一種美德,分享更快樂!

1:eclipse的概述使用(掌握)

1:eclipse的安裝

2:用eclipse寫一個helloworld案例,最終在控制台輸出你的名字

a:建立項目

b:在src目錄下建立包。cn.itcast

c:在cn.itcast包下建立類。helloworld

d:在helloworld下有一個方法。public static void main(string[] args) {}

e:在main方法中有一個輸出語句。system.out.println("你的名字");

3:eclipse空間的基本配置

a:程式的編譯和運作的環境配置(一般不改)

window -- preferences -- java

編譯環境:compiler

預設選中的就是最高版本。

運作環境:installed jres

預設會找你安裝的那個jdk。建議配置了java的環境變量。

問題:

低編譯,高運作。可以。

高編譯,低運作。不可以。

建議,編譯和運作的版本一緻。

b:如何去掉預設注釋?

window -- preferences -- java -- code style -- code templates

選擇你不想要的内容,通過右邊edit編輯。

注意:請隻删除注釋部分,不是注釋部分的不要删除。

c:行号的顯示和隐藏

顯示:在代碼區域的最左邊的空白區域,右鍵 -- show line numbers即可。

隐藏:把上面的動作再做一次。

d:字型大小及顔色

a:java代碼區域的字型大小和顔色:

window -- preferences -- general -- appearance -- colors and fonts -- java修改 -- java edit text font

b:控制台

window -- preferences -- general -- appearance -- colors and fonts -- debug -- console font

c:其他檔案

window -- preferences -- general -- appearance -- colors and fonts -- basic -- text font

e:窗體給弄亂了,怎麼辦?

window -- reset perspective

f:控制台找不到了,怎麼辦?

window--show view—console

4:常用快捷鍵

a:格式化  ctrl+shift+f

b:導入包  ctrl+shift+o

如果該類僅僅在一個包中有,就自己顯示了

如果該類在多個包中有,會彈出一個框框供你選擇

c:注釋  

單行:注釋 ctrl+/,取消注釋再來一次。

多行:ctrl+shift+/,ctrl+shift+\

d:代碼上下移動 

選中代碼alt+上/下箭頭

e:檢視源碼

選中類名(f3或者ctrl+滑鼠點選)

5:如何提高開發效率

a:自動生成構造方法

a:無參構造方法 在代碼區域右鍵--source--generate constructors from superclass

b:帶參構造方法 在代碼區域右鍵--source--generate constructors using fields.. -- finish

b:自動生成getxxx()/setxxx()方法

在代碼區域右鍵--source--generate getters and setters...

提供了對應的快捷鍵操作。

alt+shift+s 

按下帶有下劃線的那個字母即可。

c:如何繼承抽象類和實作接口。

d:override的作用

表示該方法是重寫父類的。如果方法聲明和父類不比對,就會報錯。

6:通過講解的快捷鍵和提高開發效率的一些内容完成如下内容

自定義學生類:student

成員變量;

姓名

年齡

構造方法:

無參

帶參

成員方法:

getxxx()/setxxx()

在給出一個show()方法,顯示類的所有成員資訊。

然後,寫一個測試類,對學生的代碼進行測試。

studentdemo

package cn.itcast_01;

public class student {

// 姓名

private string name;

// 年齡

private int age;

public student(string name, int age) {

super();

this.name = name;

this.age = age;

}

public student() {

public string getname() {

return name;

public void setname(string name) {

public int getage() {

return age;

public void setage(int age) {

public void show() {

system.out.println("姓名:" + name + ",年齡:" + age);

/*

 * 測試類

 */

public class studentdemo {

public static void main(string[] args) {

// 建立對象

student s1 = new student();

s1.setname("風清揚");

s1.setage(30);

system.out.println(s1.getname() + "---" + s1.getage());

s1.show();

student s2 = new student("林青霞", 27);

system.out.println(s2.getname() + "---" + s2.getage());

s2.show();

7:删除項目和導入項目

删除項目

選中項目 – 右鍵 – 删除

從項目區域中删除

從硬碟上删除

導入項目

在項目區域右鍵找到import

找到general,展開,并找到

existing projects into workspace

點選next,然後選擇你要導入的項目

注意:這裡選擇的是項目名稱

8:要注意的幾個小問題

如何檢視項目所在路徑

選中 -- 右鍵 -- properties -- resource -- location

導入項目要注意的問題

項目區域中不可能出現同名的項目(建立或者導入)

自己随意建立的檔案夾是不能作為項目導入的

修改項目問題

不要随意修改項目名稱

如果真要修改,不要忘記了配置檔案.project中的

<name>把這裡改為你改後的名稱</name>

9:大家接收檔案的注意事項

a:專門建立一個檔案夾用于接收項目,不要随意放置。

b:同一個項目再次接收的時候,先去存放目錄把原始項目删除,然後重新存儲,最後重新整理項目即可。

c:每天對照我寫的項目,自己也建立一個練習項目

舉例:我的項目名稱 day11_eclipse

  你就建立一個項目名稱 day11_eclipse_test

10:eclipse中代碼的進階(debug)調試

作用:

調試程式

檢視程式執行流程

如何檢視程式執行流程

要想看程式流程,就必須設定斷點。

什麼是斷點:

就是一個标記,從哪裡開始。

如何設定斷點:

你想看哪裡的程式,你就在那個有效程式的左邊輕按兩下即可。

在哪裡設定斷點:

哪裡不會點哪裡。

目前:我們就在每個方法的第一條有效語句上都加。

如何運作設定斷點後的程式:

右鍵 -- debug as -- java application

看哪些地方:

debug:斷點測試的地方

在這個地方,記住f6,或者點選也可以。一次看一行的執行過程。

variables:檢視程式的變量變化

fordemo:被檢視的源檔案

console:控制台

如何去斷點:

a:再次輕按兩下即可

b:找到debug視圖,variables界面,找到breakpoints,并點選,然後看到所有的斷點,最後點選那個雙叉。

package cn.itcast_03;

 * 通過debug檢視程式執行流程

 * 請大家也做一遍。

public class argsdemo {

int a = 10;

int b = 20;

system.out.println("a:" + a + ",b:" + b);

change(a, b);

int[] arr = { 1, 2, 3, 4, 5 };

change(arr);

system.out.println(arr[1]);

public static void change(int a, int b) {

a = b;

b = a + b;

public static void change(int[] arr) {

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

if (arr[x] % 2 == 0) {

arr[x] *= 2;

public class fordemo {

// 定義求和變量

int sum = 0;

for (int x = 1; x < 6; x++) {

sum += x;

system.out.println("sum:" + sum);

2:api的概述(了解)

(1)應用程式程式設計接口。

(2)就是jdk提供給我們的一些提高程式設計效率的java類。

3:object類(掌握)

(1)object是類層次結構的根類,所有的類都直接或者間接的繼承自object類。

(2)object類的構造方法有一個,并且是無參構造

這其實就是了解當時我們說過,子類構造方法預設通路父類的構造是無參構造

(3)要掌握的方法:

a:tostring()

傳回對象的字元串表示,預設是由類的全路徑+'@'+哈希值的十六進制表示。

這個表示其實是沒有意義的,一般子類都會重寫該方法。

如何重寫呢?過程我也講解過了,基本上就是要求資訊簡單明了。

但是最終還是自動生成。

package cn.itcast_02;

@override

public string tostring() {

return "student [name=" + name + ", age=" + age + "]";

// @override

// public string tostring() {

// // return super.tostring();

// // return "hello";

// return "姓名:" + name + ",年齡:" + age;

// }

 * public string tostring():傳回該對象的字元串表示。

 * 

 * integer類下的一個靜态方法:

public static string tohexstring(int i):把一個整數轉成一個十六進制表示的字元串

 * 這個資訊的組成我們講解完畢了,但是這個資訊是沒有任何意義的。是以,建議所有子類都重寫該方法。

 * 怎麼重寫呢?

把該類的所有成員變量值組成傳回即可。

 * 重寫的最終版方案就是自動生成tostring()方法。

 * 注意:

 直接輸出一個對象的名稱,其實就是調用該對象的tostring()方法。

student s = new student();

system.out.println(s.hashcode());

system.out.println(s.getclass().getname());

system.out.println("--------------------");

system.out.println(s.tostring());// cn.itcast_02.student@42552c

// tostring()方法的值等價于它

// getclass().getname() + '@' + integer.tohexstring(hashcode())

// this.getclass().getname()+'@'+integer.tohexstring(this.hashcode())

// cn.itcast_02.student@42552c

system.out.println(s.getclass().getname() + '@'

+ integer.tohexstring(s.hashcode()));

system.out.println(s.tostring());

// 直接輸出對象的名稱

system.out.println(s);

b:equals()

比較兩個對象是否相同。預設情況下,比較的是位址值是否相同。

而比較位址值是沒有意義的,是以,一般子類也會重寫該方法。

重寫過程,我也詳細的講解和分析了。

public boolean equals(object obj) {

if (this == obj)

return true;

if (obj == null)

return false;

if (getclass() != obj.getclass())

student other = (student) obj;

if (age != other.age)

if (name == null) {

if (other.name != null)

} else if (!name.equals(other.name))

//

// return true;

//這裡要改進,根據這裡比較的成員變量來決定傳回true還是false

//這裡其實要比價的就是name和age

//但是,name是string類型的,而string是引用類型的,是以,在這裡不能直接用==比較,應該用equals()比較

//string的equals()方法是重寫自object類的,比較的是字元串的内容是否相同

//this -- s1

//obj -- s2

//我們要使用的是學生類的特有成員變量,是以要向下轉型

student s = (student)obj; //s -- obj -- s2;

if(this.name.equals(s.name) && this.age == s.age) {

}else {

//為了提高效率

if(this == obj){

//為了提供程式的健壯性

//我先判斷一下,obj是不是學生的一個對象,如果是,再做向下轉型,如果不是,直接傳回false。

//這個時候,我們要判斷的是對象是否是某個類的對象?

//記住一個格式:對象名 instanceof 類名

//表示:判斷該對象名是否是該類名一個對象

if(!(obj instanceof student)){

//如果是就繼續

student s = (student)obj;

//system.out.println("同一個對象,還需要向下轉型并比較嗎?");

return this.name.equals(s.name) && this.age == s.age;

 * public boolean equals(object obj):訓示其他某個對象是否與此對象“相等”。 

 * 這個方法,預設情況下比較的是位址值。比較位址值一般來說意義不大,是以我們要重寫該方法。

一般都是用來比較對象的成員變量值是否相同。

 * 重寫的代碼優化:提高效率,提高程式的健壯性。

 * 最終版:

其實還是自動生成。

 * 看源碼:

//this - s1

//obj - s2

 *       

return (this == obj);

 *   

 * ==:

基本類型:比較的就是值是否相同

引用類型:比較的就是位址值是否相同

 * equals:

引用類型:預設情況下,比較的是位址值。

不過,我們可以根據情況自己重寫該方法。一般重寫都是自動生成,比較對象的成員變量值是否相同

student s1 = new student("林青霞", 27);

system.out.println(s1 == s2); // false

student s3 = s1;

system.out.println(s1 == s3);// true

system.out.println("---------------");

system.out.println(s1.equals(s2)); // obj = s2; //false

system.out.println(s1.equals(s1)); // true

system.out.println(s1.equals(s3)); // true

student s4 = new student("風清揚",30);

system.out.println(s1.equals(s4)); //false

demo d = new demo();

system.out.println(s1.equals(d)); //classcastexception

class demo {}

(4)要了解的方法:

a:hashcode() 傳回對象的哈希值。不是實際位址值,可以了解為位址值。

b:getclass() 傳回對象的位元組碼檔案對象,反射中我們會詳細講解

c:finalize() 用于垃圾回收,在不确定的時間

d:clone() 可以實作對象的克隆,包括成員變量的資料複制,但是它和兩個引用指向同一個對象是有差別的。

package cn.itcast_04;

public class student implements cloneable {

protected object clone() throws clonenotsupportedexception {

return super.clone();

 * object:類 object 是類層次結構的根類。每個類都使用 object 作為超類。

 * 每個類都直接或者間接的繼承自object類。

 * object類的方法:

public int hashcode():傳回該對象的哈希碼值。

注意:哈希值是根據雜湊演算法計算出來的一個值,這個值和位址值有關,但是不是實際位址值。

           你可以了解為位址值。

 *

public final class getclass():傳回此 object 的運作時類

class類的方法:

public string getname():以 string 的形式傳回此 class 對象所表示的實體

public class studenttest {

system.out.println(s1.hashcode()); // 11299397

student s2 = new student();

system.out.println(s2.hashcode());// 24446859

system.out.println(s3.hashcode()); // 11299397

system.out.println("-----------");

class c = s.getclass();

string str = c.getname();

system.out.println(str); // cn.itcast_01.student

//鍊式程式設計

string str2  = s.getclass().getname();

system.out.println(str2);

protected void finalize():當垃圾回收器确定不存在對該對象的更多引用時,由對象的垃圾回收器調用此方法。用于垃圾回收,但是什麼時候回收不确定。

protected object clone():建立并傳回此對象的一個副本。

a:重寫該方法

 *  cloneable:此類實作了 cloneable 接口,以訓示 object.clone() 方法可以合法地對該類執行個體進行按字段複制。 

 *  

這個接口是标記接口,告訴我們實作該接口的類就可以實作對象的複制了。

public static void main(string[] args) throws clonenotsupportedexception {

//建立學生對象

s.setname("林青霞");

s.setage(27);

//克隆學生對象

object obj = s.clone();

student s2 = (student)obj;

system.out.println("---------");

system.out.println(s.getname()+"---"+s.getage());

system.out.println(s2.getname()+"---"+s2.getage());

//以前的做法

student s3 = s;

system.out.println(s3.getname()+"---"+s3.getage());

//其實是有差別的

s3.setname("劉意");

s3.setage(30);

(5)兩個注意問題;

a:直接輸出一個對象名稱,其實預設調用了該對象的tostring()方法。

b:面試題 

==和equals()的差別?

a:==

基本類型:比較的是值是否相同

引用類型:比較的是位址值是否相同

隻能比較引用類型。預設情況下,比較的是位址值是否相同。

但是,我們可以根據自己的需要重寫該方法。

Java基礎-11總結Eclipse使用,API,Object類
Java基礎-11總結Eclipse使用,API,Object類

java幫幫交流群

Java基礎-11總結Eclipse使用,API,Object類

繼續閱讀