zoukankan      html  css  js  c++  java
  • Java中主类中定义方法加static和不加static的区别

     

     Java中主类中定义方法加static和不加static的区别(前者可以省略类名直接在主方法调用(类名.方法),后者必须先实例化后用实例调用)
          知识点:1.Getter and Setter 的应用
             2.局部变量与成员变量(也可叫做全局变量)
             3.Static关键字的用法
               a.成员变量被static修饰后的所有类的共享属性
               b.方法被static修饰之后,在本类内调用的类名省略问题;以及不用Static,即使在本类内也必须先实例化
             4.This关键字的用法
          this:是当前类的对象引用。简单的记,它就代表当前类的一个对象。
     
         注意:谁调用这个方法,在该方法内部的this就代表谁。
         
         this的场景:
             解决局部变量隐藏成员变量
     */
     //定义学生类
     class Person 
     {
         //姓名
         private String name="刘德华";
         //年龄
         private int age=45;
         //所有对象共享的属性用static修饰,可以直接被类名直接调用
         static String country = "中国";
         
         //姓名获取值
         public String getName() 
         {
             return name;
         }
     
         //姓名设置值
         public void setName(String name) 
         { //name = "林青霞";
             //name = name; //变量的使用规则:就近原则
             //这里是类名,目前还没有说过类似的用法,所以这个是有问题的
             //这里的调用只能通过对象名
             //这个对象如果存在,它应该代表的是Student的一个对象。
             //那么,谁能够代表当前类的对象呢? java就提供了一个关键字 this
             //Student.name = name;
             this.name = name;
         }
     
         //年龄获取值
         public int getAge() 
         {
             return age;
         }
     
         //年龄赋值
         public void setAge(int age) 
         {
             this.age = age;
         }
     }
     
     //测试类
     
     public class PersonClass 
     {
     
         public void show()//定义非静态方法,必须经过实例化后才能调用
                           
         {
             System.out.println("哈哈");
         }
         public static void show2()//但是当以静态方法后,可以直接用 类名.函数名
                                  //调用,在本类内,类名可以忽略,这就是常见的public static...的由来
         {
             System.out.println("哈哈你妹");
         }
         public static void main(String[] args) 
         {
             //创建人对象
             Person s1= new Person();
             Person s2= new Person(); 
             PersonClass s3=new PersonClass();
             s3.show();//不能直接写show(),因为是非静态方法,必须实例化后通过实例调用
             show2();
             //给成员变量赋值
             s1.setName("林青霞");
             s1.setAge(27);
             s1.country="美国";//静态变量的值是共享的,所以以最后一次修改的为准,即全变成了日本
             s2.country="日本";//静态属性最好用类名直接调用,要不会警告的哦
             //Static 与Final是不同的哦,Static类似C语言的Extern,Final类似Define
             //Static定义的变量的值仍然是可以修改的,但是Final指定在定义的时候赋值一次
             //获取数据
             System.out.println(s1.getName()+"---"+s1.getAge());//直接用类名.调用Name和
                                                                 //        age是绝对不可以的
             System.out.println(s2.getName()+"---"+s2.getAge());
             System.out.println(s1.country);//静态属性最好不要用类的实例调用,会警告的
             System.out.println(s2.country);
             System.out.println(Person.country);//Person.后面只提示country,
                                               //不会提示name和age哦
         }
     
     }
  • 相关阅读:
    Redis学习篇(一)之String类型及其操作
    MySQL笔记(五)之表的连接
    MySQL笔记(三)之数据插入更新与删除
    MySQL笔记(四)之内建函数
    MySQL笔记(二)之数据检索常用关键字
    MySQL笔记(一)之新建数据库和数据表
    京东文胸数据分析
    用SpringSecurity从零搭建pc项目-02
    Spring Security构建Rest服务-0800-Spring Security图片验证码
    用SpringSecurity从零搭建pc项目-01
  • 原文地址:https://www.cnblogs.com/xiaoshuaidiboke/p/7145271.html
Copyright © 2011-2022 走看看