你需要的是什麼,直接評論留言。
分享是一種美德,分享更快樂!
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幫幫交流群