A:構造方法概述和做用java
B:構造方法格式特色數組
public class JavaObject { //建立對象JavaObject public static void main(String [] args) { Person p = new Person(); //在一建立對象的時候,系統就幫咱們調用了構造方法 //p.Person(); //構造方法不能用對象調用 p.show(); Person p = new Person(); //再次建立對象 p.show(); } } class Person { private String name; //成員變量都私有 private int age; //構造方法 public Person() { //System.out.println("hello"); //return; //構造方法也是有return語句的; name = "張三"; age = 23; } public void show() { System.out.println(name + "..." + age); } }
A:案例演示dom
B:構造方法注意事項jvm
b:若是咱們給出了構造方法,系統將再也不提供默認的無參構造方法。函數
public class JavaObject { //建立對象 public static void main(String [] args) { Person p1 = new Person(); p1.show(); System.out.println("-------------------"); Person p2 = new Person("張三",23); p2.show(); System.out.println("-------------------"); Person p3 = new Person("李四",24); //初始化,並動態的賦值 p3.show(); } } class Person { private String name; private int age; public Person() { System.out.println("空參的構造"); } public Person(String name,int age) { this.name = name; this.age = age; System.out.println("有參的構造"); } public void show() { System.out.println(name + "..." + age); } }
public class JavaObject { //建立對象phone public static void main(String [] args) { Person p1 = new Person("張三",23); p1 = new Person("李天一",25); //將元對象變成了垃圾 System.out.println(p1.getName() + "..." + p1.getAge()); System.out.println("-------------------"); Person p2 = new Person(); //空參構造建立對象 p2.setName("李四"); p2.setAge(24); p2.setName("李鬼"); System.out.println(p2.getName() + "..." + p2.getAge()); } } class Person { private String name; private int age; public Person() { //空參構造 } public Person(String name,int age) { //有參構造 this.name = name; this.age = age; } public void setName(String name) { //設置姓名 this.name = name; } public String getName() { //獲取姓名 return name; } public void setAge(int age) { //設置年齡 this.age = age; } public int getAge() { //獲取年齡 return age; } }
A:案例演示 學生類:工具
B:給成員變量賦值:性能
C:輸出成員變量值的方式:學習
class Student { private String name; private int age; public Student() { //空參構造 } public Student(String name,int age) { //有參構造 this.name = name; this.age = age; } public void setName(String name) { //設置姓名 this.name = name; } public String getName() { //獲取姓名 return name; } public void setAge(int age) { //設置年齡 this.age = age; } public int getAge() { //獲取年齡 return age; } public void show() { System.out.println("個人姓名是" + name + "個人年齡是" + age); } } public class JavaObject { public static void main(String [] args) { Student s1 = new Student(); //空參構造建立對象 s1.setName("李四"); //設置姓名 s1.setAge(24); //設置年齡 System.out.println("個人姓名是" + s1.getName() + "..." + "個人年齡是" + s1.getAge()); System.out.println("-------------------"); //getXxx()獲取屬性值,能夠打印,也能夠賦值給其餘的變量,作其餘的操做 Student s2 = new Student("張三",23); //使用有參構造 s2.show(); //只是爲了顯示屬性值 } }
class Phone { private String brand; private int price; public Phone() { //空參構造 } public Phone(String brand,int price) { //有參構造 this.brand = brand; this.price = price; } public void setBrand(String brand) { //設置品牌 this.brand = brand; } public String getBrand() { //獲取拼拍 return brand; } public void setPrice(int price) { //設置價格 this.price = price; } public int getPrice() { //獲取價格 return price; } public void show() { System.out.println(brand + "..." + price); } } public class JavaObject { public static void main(String [] args) { Phone s1 = new Phone(); //空參構造建立對象 s1.setBrand("小米"); //設置品牌 s1.setPrice(2400); //設置價格 System.out.println("品牌名稱是" + s1.getBrand() + "..." + "價格是" + s1.getPrice()); System.out.println("-------------------"); //getXxx()獲取屬性值,能夠打印,也能夠賦值給其餘的變量,作其餘的操做 Phone s2 = new Phone("張三",23); //使用有參構造 s2.show(); //只是爲了顯示屬性值 } }
class Student { private String name = "張三"; private int age = 23; public Student() { name = "李四"; age = 24; } public void show() { System.out.println(name + "..." + age); } } class JavaObject { public static void main(String [] args) { Student s = new Student(); //空參構造建立對象 s.show(); //只是爲了顯示屬性值 } }
A:案例演示測試
需求:優化
分析
class Rectangle { private int width; private int height; public Rectangle() { //空參構造 } public Rectangle(int width,int height) { //有參構造 this.width = width; this.height = height; } public void setWidth(int width) { //設置寬 this.width = width; } public int setWidth() { //獲取寬 return width; } public void setheight(int height) { //設置高 this.height = height; } public int setheight() { //獲取高 return height; } public int getLenght() { //獲取周長 return 2 * (width + height); } public int getArea() { //獲取面積 return width * height; } } class JavaObject { public static void main(String [] args) { Rectangle s = new Rectangle(10,20); //空參構造建立對象 System.out.println(s.getLenght()); //周長 System.out.println(s.getArea()); //面積 } }
A:案例演示
本身分析出幾個成員,而後給出成員變量
構造方法,
以及一個顯示全部成員信息的方法。並測試。
class Employee { private String name; private String id;// private double salary;//工資 public Employee() { //空參構造 } public Employee(String name,String id,double salary) { //有參構造 this.name = name; this.id = id; this.salary = salary; } public void setName(String name) { //設置姓名 this.name = name; } public String setName() { //獲取姓名 return name; } public void setId(String id) { //設置工號 this.id = id; } public String setId() { //獲取工號 return id; } public void setSalary(double salary) { //設置工資 this.salary= salary; } public double setSalary() { //獲取工資 return salary; } public void work() { //獲取信息 System.out.println("個人姓名是" + name + ",工號是" + id + ",工資是" + salary); } } class JavaObject { public static void main(String [] args) { Employee e = new Employee("令狐沖","20000",40000); //空參構造建立對象 e.work(); } }
A:案例演示
B:概念
class Person { String name; static String country; public void speak() { //說話的方法 System.out.println(name + "..." + country); } } class JavaObject { public static void main(String [] args) { Person e = new Person(); //建立對象 e.name = "張老師"; //調用姓名屬性並賦值 e.country = "中國"; //調用國籍屬性並賦值 e.speak(); Person f = new Person(); //建立對象 f.name = "李老師"; //調用姓名屬性並賦值 //f.country = "中國"; //調用國籍屬性並賦值 f.speak(); } }
A:static關鍵字的特色
c:被類的全部對象共享
其實這個特色也是在告訴咱們何時使用靜態?
舉例:
d:能夠經過類名調用
B:案例演示
class Person { String name; static String country; public void speak() { //說話的方法 System.out.println(name + "..." + country); } } class JavaObject { public static void main(String [] args) { Person.country = "日本"; //靜態多了一種調用方式,能夠經過類名。 System.out.println(Person.country); } }
A:static的注意事項
a:在靜態方法中是沒有this關鍵字的
如何理解呢?
b:靜態方法只能訪問靜態的成員變量和靜態的成員方法
靜態方法:
非靜態方法:
簡單記:
B:案例演示
class Demo { int num1 = 10; //非靜態的成員變量 static int num2 = 20;//靜態的成員變量 //public void print1() { //非靜態的成員方法,既能夠訪問靜態的成員也能夠訪問費靜態的成員 //System.out.println(num1); //System.out.println(num2); //} public static void print2() { //靜態的成員方法 System.out.println(num1); //靜態的成員方法不能訪問費靜態的 變量 num1 System.out.println(num2); } } class JavaObject { public static void main(String [] args) { // Demo d = new Demo(); //靜態多了一種調用方式,能夠經過類名。 // d.print1(); Demo.print2(); } }
A:所屬不一樣
B:內存中位置不一樣
C:內存出現時間不一樣
D:調用不一樣
A:格式
B:針對格式的解釋
C:演示案例
class JavaObject { public static void main(String [] args) { /* public:被jvm調用,因此權限要足夠大 static:被jvm調用,不須要建立對象,直接類名.調用便可 void:被jvm調用不須要有任何的返回值。 main:只有這樣寫才能被jvm識別,main不是關鍵字 String [] args:之前是用來接收鍵盤錄入的 */ System.out.println(args.length); for (int i = 0;i < args.length ;i ++ ) { System.out.println(args[i]) } } }
A:製做一個工具類
加static靜態化 若是一個類中全部的方法都是靜態的,須要多作一步,私有構造方法, private ArrayTool(){} 目的是不讓其餘類建立本類對象,直接用類名調用便可.
//文件ArrayTool.java
class ArrayTool { public static int getMax(int[] arr) { int max = arr[0]; //記錄第一個元素 for (int i= 1 ;i < arr.length ;i++) {//從第二個元素開始遍歷 if (max < arr[i]) {//max與數組中其餘的元素比較 max = arr[i];//記錄較大的 } } return max;//將最大值返回 } public static void print(int[] arr) { for (int i = 0;i < arr.length ; i++ ) { // 遍歷數組 System.out.print(arr[i] + " "); } } public static void revArray(int[] arr) { for (int i = 0; i < arr.length / 2; i++) { //循環次數是元素個數的一半 //arr[0]與arr[arr.length-1-0]交換 int temp = arr[i]; arr[i] = arr[arr.length-1-i]; arr[arr.length-1-i] = temp; } } }
//文件Demo_ArrayTool.java
class Demo_ArrayTool { public static void main(String[] args) { int[] arr = {11,66,22,33,44,55,}; /* 非靜態的調用方法 ArrayTool at = new ArrayTool(); int max = at.getMax(arr); System.out.println(max); System.out.println("----------------"); at.print(arr); System.out.println(); System.out.println("----------------"); System.out.println("反轉後"); at.revArray(arr); at.print(arr);*/ //靜態的調用方法 ArrayTool.print(arr); } }
B:經過javadoc命令生成說明書
/** 這是一個數組工具類,裏面封裝了查找數組最大值,打印數組,數組反轉方法。 @author zhengaidong @version v1.0 */ public class JavaObject { /** 私有構造方法 */ private JavaObject(){ } /** 這是獲取數組中最大值得方法 @param arr 接收一個int類型的數組 @return 返回數組中的最大值 */ public static int getMax(int[] arr) { int max = arr[0]; //記錄第一個元素 for (int i= 1 ;i < arr.length ;i++) {//從第二個元素開始遍歷 if (max < arr[i]) {//max與數組中其餘的元素比較 max = arr[i];//記錄較大的 } } return max;//將最大值返回 } /** 這是遍歷數組的方法 @param arr 接收一個int類型的數組 */ public static void print(int[] arr) { for (int i = 0;i < arr.length ; i++ ) { // 遍歷數組 System.out.print(arr[i] + " "); } } /** 這是數組反轉的方法 @param arr 接收一個int類型的數組 */ public static void revArray(int[] arr) { for (int i = 0; i < arr.length / 2; i++) { //循環次數是元素個數的一半 //arr[0]與arr[arr.length-1-0]交換 int temp = arr[i]; arr[i] = arr[arr.length-1-i]; arr[arr.length-1-i] = temp; } } }
D:看這個類的結構(需不須要導包)
A:Math類概述
B:Math類特色
C:獲取隨機數的方法
D:我要獲取一個1-100之間的隨機數,腫麼辦?
public class JavaObject { public static void main(String [] args) { //double d = Math.random(); //System.out.println(d); //Math.random()會生成大於等於0.0而且小於1.0的僞隨機數 for (int i = 0;i < 10;i++ ) { System.out.println(Math.random()); } //生成1到100的隨機數0.00000000000000-0.999999999999999 //Math.random() * 100 ==>0.000000 - 99.9999999999 //(int)(Math.random() * 32) ====> 0 - 99 //(int)(Math.random() * 100) + 1 for (int i = 0;i < 7 ;i++ ) { System.out.println((int)(Math.random() * 32) + 1); } } }
A:案例演示
import java.util.Scanner; public class JavaObject { public static void main(String [] args) { Scanner sc = new Scanner(System.in);//建立鍵盤錄入對象 System.out.println("請輸入一個整數,範圍在1-100之間"); int guessNum = (int)(Math.random() * 100) + 1;//心理想的隨機數 while (true) { int x = sc.nextInt(); if (x > guessNum) { System.out.println("大了"); } else if (x < guessNum) { System.out.println("小了"); } else { System.out.println("中了"); break; } } } }