package myhello; //本類所在的包的路徑
import af.util.AfMath;//導入對應的類
import java.util.Random;//導入隨機數的類
public classHelloWorld
{public static voidmain(String[] args)
{int a = 8;inti;int total = 0;int score = 80;
System.out.println(a > 8);//空語句 只有一個 ;
;//復合語句 {} 包含的
{
;
}//if 語句
if (score > 60)
System.out.println("及格");elseSystem.out.println("不及格");for (i = 1; i <= 100; i++)
{
total+= i *i;
}
System.out.println(total);//break 為跳出單層循環//創建數據對象
int[] b = new int[30];//等號右側:創建了一個數組對象//等號左側:變量 b 稱為該對應的引用//稱作 變量 b 指向了一個對象//有時也簡稱為: b 是一個對象,或 b 是對象的名字
b[1] = 1;
b[2] = 2;
b[3] = 3;int[] arr = { 1, 2, 3, 4};
System.out.println(arr.length);//arr[4] = 128; 數組越界//對應與引用
int[] c = { 11, 11, 11, 11};int[] d =c;//c 指向了一個對象//c 和 d 指向相同的對象//c 和 d 都是該對象的引用
d[3] = 30;for (int k = 0; k < 4; k++)
{
System.out.print(c[k] + " ");
}//空對象//null 表示一個引用不指向任何對象
int[] e = { 1, 2, 3, 4};int[] f =e;
e= null;//空指針錯誤
/** for (int t = 0; t < 4; t++) { System.out.print(e[t]+" "); }*/
for (i = 0; i < 4; i++)
{
System.out.print(f[i] + " ");
}//類 class//類:類型,描述某一類事物的共性//對象:一個具體實例//用來描述一種數據類型//一個class可以若干基本類型的組合
Student s1 = newStudent();
s1.id= "20181109";
s1.name= "Jenrry";
s1.sex= true;
s1.cellphone= "555";//Student 是一個類型//所有的 Student 都有 id,name,sex,cellphone這幾個屬性//s1是一個Student 類型的對象//數組
Student[] s2 = new Student[5];//類的嵌套
s1.cards.bankCardNumber = "123";
s1.cards.schoolCardNumber= "456";//java 會有默認值//類的方法//類.屬性:描述 類有什么//類.方法:描述 類能做什么//屬性命名一般使用名詞性短語 方法一般是動詞性短語
Student s3 = newStudent();
s3.show();
s3.show2(15);//獲取最大指
int[] a1 = { 1, 2, 3};int[] aa1 = { 123, 546, 145, 789};int result = 0;for (i = 0; i < a1.length; i++)
{if (a1[i] >result)
{
result=a1[i];
}
}
System.out.print("\n");
System.out.print("最大值:" +result);
MyMath a2= newMyMath();
System.out.print("\n");
a2.getMax(aa1);int result2 =a2.getMax2(aa1);
System.out.print("\n");
System.out.print("最大值:" +result2);//return語句執行后,函數不再往下執行,直接退出方法
MyMath n = newMyMath();
boolean res=n.check2(aa1);
System.out.print("結果為:" +res);//給定一個int值,結果打印一個三角形
MyMath n2 = newMyMath();
System.out.print("\n");
n2.print(10);
n2.print(-1);//數組里能被8整除
int[] arr2 = { 10, 20, 30, 40, 50, 60, 70, 80, 90, 100};
MyMath n3= newMyMath();int[] result3 =n3.find8(arr2);//返回類型可以是一個對象
Student stu = n.createNew("2324", "你好");//像素
Screen s = newScreen();
s.height= 768;
s.width= 1366;int p =s.pixel(s.width, s.height);
System.out.println("像素值是:" +p);//用 that指定
int p2 =s.pixel2(s);
System.out.println("像素值2是:" +p2);//當前對象 this
int p3 =s.pixel3();
System.out.println("像素值3是:" +p3);//顯示從 m,n之前所有的質數 用到this
MyMath n4 = newMyMath();
n4.showPrimes(400, 500);//this. 一般可以省略 重名不能省略//有一個換游戲幣的機器,可以投1元、5、10元,最后按出貨按鈕,可以吐出游戲幣//每個游戲幣=1元人民幣
Machine n5 = newMachine();
n5.insertCash(5);
n5.insertCash(10);
n5.insertCash(50);//出貨
int coins =n5.exchange();
System.out.println("拿到了" + coins + "個游戲幣");//用戶輸入:數組data//把打他數組里面,所有的質數都放到result
PrimeFilter filter = newPrimeFilter();int[] a4 = { 128, 38, 103, 89};int[] a5 = { 34, 8, 11, 29};
filter.put(a4);
filter.put(a5);int[] numbers =filter.values();//對象=屬性+方法//屬性就是數據//方法就是算法//對象就是數據和算法的整合體//給它所需的數據>>讓它干活>>取出結果//面向對象程序設計//訪問修飾符//public private//可見性//private 不可訪問,即不可見//public 可以訪問,即可見//構造方法//用于構造對象的方法 當創建對象時調用的方法//規則: 方法名與類名相同;無返回值
Student2 stu2 = new Student2("123", "Jenrry", true);//默認構造方法 無參數//如果沒有構造方法,java編譯器會默認一個空的構造方法
/** public Student2() {
*
* }
**/
//對象的銷毀//程序員只管創建對象,不管銷毀對象,對象的銷毀由系統自動完成//當對象不再被使用時,由垃圾回收機制GC自動回收 GC: Garbage Collect//對象不再被使用。即對象失去引用//extends 繼承//在 java語言里,用exends來表示兩個類的父子關系//public class B extends A//表示B繼承A//A:父類 B:子類//當B繼承于A時,自動繼承A中的public 屬性/方法
MyVideoFile file = newMyVideoFile();
file.size= 123034;
file.name= "文檔";
file.duration= 120;
file.info();
file.play();
file.stop();//重寫//如果父類的方法不滿足要求,則可以在子類里重寫一遍
file.info();//父類構造方法//子類會先調用父類構造方法 再調用子類的構造方法//可以用 super 制定調用哪個構造方法//創建一個對象時,構造方法被調用
Child ch = newChild();
System.out.println("exit");//單根繼承//java語言里,一個類只能extend是一個父類//繼承只能有1個父親,但是可以有一個繼承鏈//即 A -> B -> C -> D ……//看繼承鏈 右鍵 Quick Type Hierarchy//在 java 語言中,Object 類是所有類的父類 上面的快捷鍵可以展示出來//如果一個類沒有指定父類,則它默認父類就是 Object//重寫 toString() 方法//toString() 是 Object 的一個方法
Student Stu = newStudent();
Stu.id= "1234";
Stu.name= "4567";
Stu.sex= true;
System.out.println(Stu);//重寫 toString 函數,修改 Stu 顯示的格式//多態//java里,包含:重載 Overload ;重寫 Override ;泛型//有一個餅干,是蘋果味餅干
Pie pi = newApplePie();//有一個寶寶
Baby bb = newBaby();//寶寶要吃餅干
bb.eat(pi);//語法上://1. 子類轉換成父類順理成章(隱式轉換)//如上 Pie pi = ApplePie();//2. 父類轉換成子類型要謹慎 需要顯式轉換//多態
MyVideoFile f1 = newMyVideoFile();
f1.name= "abc.mp4";
f1.size= 14000;
f1.duration= 130;
MyFile file2=f1;
file2.info();//注意 當調用一個方法是,不是看引用(聲明)的類型,而是看對象的實際類型//file 指向的是一個MyVideoFile對象,因而調用的是子類的info()方法//在 java里,由于所有的類型都是Object的直接或者間接子類//所以。 Object x = new MyVideoFile(); 是沒有問題的。//包//右鍵點擊包名, show in -> System Explorer//建立目錄是用 . 分隔//一個類XXX,對應的文件是 XXX.java//類的全路徑: af.util.AfMath//類的文件路徑: af/util/AfMath.java//導入類
AfMath a8 = newAfMath();//類改名//左窗口右鍵對應的類 -> refactor->rename//改屬性名、方法名 對應屬性/方法 右鍵-> refactor -> rename//快捷鍵//注釋:選中要注釋的行 ctrl+ ///查看定義: CTRL+鼠標點擊//打開提示: ATL+ ///格式化選中代碼: CTRL+SHIFT+F//靜態方法(全局方法)//該方法與類的關系不大。隨便拷貝到別的類里也仍然可以運行,沒有語法錯誤;沒有this對象//動態方法//該方法與類關系密切。如果拷貝到別的類里就失去意義,有語法錯誤。//靜態方法用 static 修飾//靜態方法調用無需創建對象,因為是一個全局的
boolean result5 = Example.isPrime(123);//Math 類//有很多數據計算相關的靜態方法//和 String類似,Math 也是 java 語言自帶的類//abs(a): 求a的絕對值//pow(a,b): 求a的b次冪//sqrt(a) : 求a的平方根//round(a): 四舍五入//sin/cos/tan://應用 Math.//程序入口://main 方法,僅有一個格式//可以有多個,用于類的調試//如有多個 入口需指定//字符串//字符串長度 String s = ""; int n = s.length();//注:中文字符和英文字符都只占一個字符//空字符串和null是兩回事;空字符串是一個正常的字符串對象;null不指向任何對象//截斷 substring(begin,end) ; s.substring//相等 equals 注:不能使用 == 符號來驗證//比較 compareTo//忽略大小寫比較 compareToIgnoreCase()//格式化 format//查找 indexOf//前綴 startWith()//后綴 endsWith//基本類型與包裝類型//在java里面。每一個基本類型都對應一個包裝類型//long -> Long//int -> Integer//short -> Short//byte -> Byte//double -> Double//float -> Float//boolean -> Boolean//包裝類型: 將對應的基本類型封裝在內,得到一個類大概就是這種形式//class Integer//{//private int value = 0;//... Getter/Setter/...方法//}//使用Integer等包裝類,就可以統一用“對象”的思路;來處理問題//所有的類都是Object的子類,Interger也是,但 int,double,boolean 卻不是,他們是基本的數據類型//Java是面向對象的編程語言,一切都是對象,但是為了編程的方便還是引入了基本數據類型,為了能夠將這些基本數據類型當成對象操作,Java為每一個基本數據類型都引入了對應的包裝類型//基本類型和包裝類型的轉換//Integer ai= new Integer(10);//int bi = ai.intValue();// //也可以簡寫,java支持自動轉換//Integer ki =123;//int mi = ki;//數值-> String//int -> String//String s = String.valueOf(123);//String -> int//int a = Integer.valueOf("123");//為什么要設計這些包裝類://1. 提供一些用于轉換的方法;//2. 將所有類型統一成類的范圍,都是Object的子類//控制臺//在上個世紀,在圖形界面出現之前、一種基于文字的用戶交互界面
AfConsole cf = newAfConsole();
cf.print("請輸入用戶名:");
String username= cf.readString("");
cf.print("請輸入密碼:");
String password= cf.readString("");if (password.equals("123456"))
{
cf.println(username+ ",你好!歡迎進入系統!");
}else{
cf.println("密碼錯誤!");
}//隨機數//Random 類是JDK里自帶的基本類//java.util.Random//使用Random可以生成隨機數//Random rand = new Random();//int s = rand.nextInt(1000);//nextInt(1000)表示生成一個0~1000 的隨機數
Random rand = newRandom();for (i = 0; i < 3; i++)
{int sr = rand.nextInt(1000);
System.out.println("生成隨機數:" +sr);
}//抽3個人獲獎 ,不能重復
int[] resultr = new int[3];int count = 0;
Random rand2= newRandom();while (count < 3)
{//抽一個幸運員工。sra是它的號碼
int sra = rand2.nextInt(95);//檢查sra是否已經中過獎,檢查sra是否在result里
boolean exist = false;for (i = 0; i < count; i++)
{if (resultr[i] ==sra)
{
exist= true;break;
}
}if(exist)
{continue;
}else{
resultr[count]=sra;
count++;
}
}//字符//一個字符 char c1 = 'A';//字符編碼//地球上所有的文字和符號都有一個編碼Unicode,其中,把 0 -128 之前的稱為 ASCII碼,僅英文、數字、英文標點符號等,對應鍵盤上的按鍵//字符與字符串//String -》 char//String str = "afanihao阿發你好";//char ch = str.charAt(8);//下標從0開始計數//char[] chs= str.toCharArray();//char -> String//char[] chs = {'阿','發'.'你'.'好'};//String str = new String(chs,1,3);//str += '的';//在字符串字符中查找字符//String str ="afanihao阿發你好";//int p = str.indexOf('發');//System.out.println("位置" + p);//容器:存儲對象的東西//容器是一個設計上的術語,不是一個語法的概念//比如說,數組就是一個容器//鏈表: 一種組織數據的方式
Monkey m1 = new Monkey(100, "100");
Monkey m2= new Monkey(200, "200");
Monkey m3= new Monkey(300, "300");
Monkey m4= new Monkey(400, "400");
m1.next=m2;
m2.next=m3;
m3.next=m4;
m4.next= null;
Monkey node=m1;while (node != null)
{
System.out.println("鏈表中的節點:" +node);
node=node.next;
}//鏈表插入和刪除節點//1.插入到末尾
Monkey m5 = new Monkey(500, "500");
m4.next=m5;//正規寫法,從頭開始
Monkey tail =m1;while (true)
{if (tail.next == null)break;
tail=tail.next;
}
tail.next=m5;//2.插到頭節點之后
Monkey head =m1;
m5.next=m1.next;
m1.next=m5;//3.插到300 之后
node =m1;while (node != null)
{if (node.id == 200)
{
m5.next=node.next;
node.next=m5;break;
}
node=node.next;
}//插入節點//有頭鏈表:用一個固定的加節點來充當頭節點。//此節點不算作鏈表長度,僅用于簡化算法//有頭鏈表的構造//創建一個假節點,作為鏈表的頭節點
Monkey head1 = new Monkey(0, "0");
head1.next=m1;//遍歷
Monkey m =head1.next;while (m != null)
{
System.out.println("鏈表");
m=m.next;
}//有頭鏈表:插入節點//直接插入假節點后面
m5.next =head1.next;
head1.next=m5;//有頭鏈表:刪除節點200
Monkey node1 =head.next;
Monkey prov=head1;while (node1 != null)
{if (node1.id == 200)
{
prov.next=node1.next;break;
}
prov=node1;
node1=node1.next;
}//或者采用如下
Monkey node3 =head1;while (node.next != null)
{if (node.next.id == 200)
{
node.next=node.next.next;break;
}
node=node.next;
}//鏈表只是容器的一種實現方法
}
}