1.面向对象
构造方法:给对象的数据(属性)进行初始化
构造方法特点:
方法名与类名相同(大小也要与类名一致)没有返回值类型,连void都没有,没有具体的返回值 return
注意事项:如果没有给出构造方法,系统将自动提供一个,无参构造方法
如果给出了构造方法,系统将不再提供默认的无参构造方法
如果还想使用无参构造方法,就必须自己给出,建议永远自己给出无参构造方法
class democonstructor { public static void main (String args []){ person p =new person(); //在一创建对象的时候,系统就帮我调用了构造方法 } } class person{ private String name; private int age; public person(){}; public person(){ System.out.println("hello world"); return; } }
重载:方法名相同,与返回值类型无关(构造方法没有返回值)只看参数列表
class democonstructor2 { public static void main (String args []){ person p1=new person(); p1.show(); System.out.println("-----------"); person p2=new person("小黑",23); p2.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); } }
class democonstructor3 { public static void main (String args[]){ person p1=new person("张三",20); System.out.println(p1.getname()+" "+p1.getage()); System.out.println("----------------"); person p2=new person(); p2.setname("小黑"); p2.setage(30); 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; } }
class democonstructor5 { public static void main (String args[]){ phone p1=new phone(); p1.setname("索尼"); p1.setprice(3200); System.out.println(p1.getname()+p1.getprice()); phone p2=new phone("iphone",5500); p2.show(); } } class phone{ private String name; private int price; public phone(){} public phone(String name,int price){ this.name=name; this.price=price; } public void setname(String name){ this.name=name; } public String getname(){ return name; } public void setprice(int price){ this.price=price; } public int getprice(){ return price; } public void show(){ System.out.println("品牌:"+name+",价格:"+price); } }
static:静态方法
随着类的加载而加载 优先于对象存在
被类的所有对象共享 可以通过类名调用
共性用静态 特性用非静态
class tsetstatic1 { public static void main (String args[]){ person p1=new person(); p1.name="hello"; p1.price="world"; p1.speak(); person p2=new person(); p2.name="hey"; p2.speak(); } } class person{ String name; static String price; //可以共用 public void speak(){ System.out.println(name+"...."+price); } }
注意事项:
在静态方法重是没有this关键字的,静态是随着类的加载而加载,this是随着对象的创建而存在
静态比对象先存在
静态方法只能访问静态的成员变量和静态的成员方法
静态方法:
成员变量:只能访问静态变量
成员方法:只能访问静态成员方法
非静态:
成员变量:可以是静态的,也可以是非静态的
成员方法:可以是静态的成员方法,也可以是非静态的成员方法
class demostatic { public static void main (String args []){ demo d=new demo(); d.print1(); } } class demo { int num1=10; static int num2=20; public void print1(){ System.out.println(num1); System.out.println(num2); } }
静态变量也叫类变量 成员变量也叫对象变量
所属不同:
静态变量属于类,所以也称为类变量
成员变量属于对象,所以也称为实例变量(对象变量)
内存中位置不同:
静态变量存储于方法区的静态区
成员变量存储于堆内存
内存出现时间不同:
静态变量随着类的加载而加载,随着类的消失而消失
成员变量随着对象的创建而存在,随着对象的消失而消失
调用不同:
静态变量可以通过类名调用,也可以通过对象调用
成员变量只能通过对象调用
main方法:
格式 public static void main (String [ ] args) { };
public:被jvm调用,所以权限要足够大
static:被jvm调用,不需要创建对象,直接类名。调用即可
void:被jvm调用,不需要任何的返回值
main:只要这样写才能被jvm识别,main不是关键字
String args []:以前是用来接受键盘录入的
Math类的随机数功能:
Math.random()会生产大于等于0.0并且小于1.0的伪随机数
class Demo2_Math { public static void main(String[] args) { for (int i = 0;i < 10 ;i++ ) { System.out.println(Math.random()); } for (int i = 0;i < 10 ;i++ ) { System.out.println((int)(Math.random() * 100) + 1); } } }