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. XMLHttpRequest函数

    function createXmlHttpRequest(){ if(window.ActiveXObject){ return new ActiveXObject("Microsoft. ...

  2. Bluetooth HCI介绍

    目录 1. HCI功能 2. HCI Packet 1. HCI Command 2. HCI Event 3. HCI Data 3. HCI传输层 HCI, 主机控制接口(Host Control ...

  3. 【C】漫谈C语言随机数

    来说说C语言如何产生随机数. 有人会说这不简单?time() + srand() + rand() 3个函数不就OK了吗? 是的,不过,我们还是来看看原理比较好,也就是随机数是如何产生的. 这不无聊. ...

  4. firs tday

    1.JVM 解析: 2.JDBC 解析: 3.Spring

  5. 规则html表单对象赋值

    function grid_load_callback(data, status) {            if (data.rows.length > 0)            {     ...

  6. tableView中自定header视图的重用问题

    在UItableView中使用代理方发 - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger ...

  7. imx6 framebuffer 分析

    分析imx6 framebuffer设备和驱动的注册过程. Tony Liu, 2016-8-31, Shenzhen 相关文件: arch/arm/mach-mx6/board-mx6q_sabre ...

  8. 获取dom元素的宽度和高度

    一.获取css的大小 1.第一种通过内联样式 var box = document.getElementById('box'); var w = box.style.width; var h = bo ...

  9. 高性能Linux服务器 第6章 ext3文件系统反删除利器ext3grep extundelete工具恢复rm -rf 误删除的文件

    高性能Linux服务器 第6章  ext3文件系统反删除利器ext3grep  extundelete工具恢复rm -rf 误删除的文件 只能用于ext3文件系统!!!!!!!高俊峰(高性能Linux ...

  10. PHP for 循环

    <!DOCTYPE html> <html> <body> <?php for ($x=0; $x<=10; $x++) { echo "数字 ...