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; } } } }