2019-05-17 Java学习日记 day7

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);
        }
    }
}
随机数

猜你喜欢

转载自www.cnblogs.com/JungTan0113/p/10884283.html