package lsg.ap.april4th2;
 /*
     知识点: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哦
     }

 }

Java基础(42):Java中主类中定义方法加static和不加static的区别(前者可以省略类名直接在主方法调用,后者必须先实例化后用实例调用)的更多相关文章

  1. js中定义变量加var与不加var的区别?

    var 不一定是用来定义局部变量的 jscript的全局变量和局部变量的分界是这样的:                  过程体(包括方法function,对象Object o ={})外的所有变量不 ...

  2. Java中主类中定义方法加static和不加static的区别

     Java中主类中定义方法加static和不加static的区别(前者可以省略类名直接在主方法调用(类名.方法),后者必须先实例化后用实例调用) 知识点:1.Getter and Setter 的应用 ...

  3. 简单练习题2编写Java应用程序。首先定义一个描述银行账户的Account类,包括成员变 量“账号”和“存款余额”,成员方法有“存款”、“取款”和“余额查询”。其次, 编写一个主类,在主类中测试Account类的功能

    编写Java应用程序.首先定义一个描述银行账户的Account类,包括成员变 量“账号”和“存款余额”,成员方法有“存款”.“取款”和“余额查询”.其次, 编写一个主类,在主类中测试Account类的 ...

  4. Java 基础常见知识点&面试题总结(中),2022 最新版!| JavaGuide

    你好,我是 Guide.秋招即将到来,我对 JavaGuide 的内容进行了重构完善,公众号同步一下最新更新,希望能够帮助你. 上篇:Java 基础常见知识点&面试题总结(上),2022 最新 ...

  5. “全栈2019”Java第八十七章:类中嵌套接口的应用场景(拔高题)

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  6. 第4节:Java基础 - 必知必会(中)

    第4节:Java基础 - 必知必会(中) 本小节是Java基础篇章的第二小节,主要讲述抽象类与接口的区别,注解以及反射等知识点. 一.抽象类和接口有什么区别 抽象类和接口的主要区别可以总结如下: 抽象 ...

  7. Java基础扫盲系列(-)—— String中的format

    Java基础扫盲系列(-)-- String中的format 以前大学学习C语言时,有函数printf,能够按照格式打印输出的内容.但是工作后使用Java,也没有遇到过格式打印的需求,今天遇到项目代码 ...

  8. 黑马程序员——JAVA基础之简述面向对象,类,变量,匿名对象

    ------- android培训.java培训.期待与您交流! ---------- 面向对象: 面向对象是相对面向过程而言 面向对象和面向过程都是一种思想 面向过程 强调的是功能行为 面向对象 将 ...

  9. Java基础-类加载机制与自定义类Java类加载器(ClassLoader)

    Java基础-类加载机制与自定义类Java类加载器(ClassLoader) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 关于类加载器的概念和分类我就不再废话了,因为我在之前的笔 ...

随机推荐

  1. 【转】Cocos2d - 观察者模式NotificationCenter

    http://shahdza.blog.51cto.com/2410787/1611575 [唠叨] 观察者模式 也叫订阅/发布(Subscribe/Publish)模式,是 MVC( 模型-视图-控 ...

  2. terminal(终端),shell,tty,console(控制台)区别

    原文地址  stackexchange:What is the exact difference between a 'terminal', a 'shell', a 'tty' and a 'con ...

  3. php curl多线程抓取网页

    PHP 利用 Curl Functions 可以完成各种传送文件操作,比如模拟浏览器发送GET,POST请求等等,受限于php语言本身不支持多线程,所以开发爬虫程序效率并不高,这时候往往需 要借助Cu ...

  4. AutoLayout技术选型和应用

    前言:这篇文章是笔者在项目中对布局技术进行技术选型和应用的相关介绍,供大家参考. && [self.buttonscount] > 0) { UIButton *button = ...

  5. 【转】MySQL USE NAMES 'UTF8'

    先说MySQL的字符集问题.Windows下可通过修改my.ini内的 # CLIENT SECTION [mysql] default-character-set=utf8 # SERVER SEC ...

  6. C#中String 和string 的区别

    C#中同时存在String与string MSDN中对string的说明: string is an alias for String in the .NET Framework.string是Str ...

  7. zepto源码--matches--学习笔记

    zepto的第一个函数,zepto.matches: 作用:用来匹配dom元素是否匹配某css selector. 它为后面的一些高级方法的实现提供了基础支持,比如事件代理,parent, close ...

  8. Android生命周期详细说明

    提供两个关于Activity的生命周期模型图示帮助理解:                                           图1 图2 从图2所示的Activity生命周期不难看出, ...

  9. [LeetCode] Jump Game II(贪婪算法)

    Given an array of non-negative integers, you are initially positioned at the first index of the arra ...

  10. cell的imageVIew的fram问题

    今天你在输出cell的imageVIew的fram时,发现新建的cell的imageVIew的frame是(0,0,0,0),但是重用的cell的imageVIew的frame输出是(15,19,30 ...