Java基础(42):Java中主类中定义方法加static和不加static的区别(前者可以省略类名直接在主方法调用,后者必须先实例化后用实例调用)
2024-10-18 01:44:45
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哦 } }
最新文章
- EF里查看/修改实体的当前值、原始值和数据库值以及重写SaveChanges方法记录实体状态
- tp5 model 中的查询范围(scope)
- 关于ActionContext.getContext()的用法心得
- [纯干货] MySQL索引背后的数据结构及算法原理
- ASP.NET MVC数组模型绑定
- Apache Spark源码走读之16 -- spark repl实现详解
- 【HDOJ】1619 Unidirectional TSP
- 《循序渐进Oracle》部分笔记
- jvm对大对象分配内存的特殊处理(转)
- Gentoo/Funtoo USE标记介绍
- Logistic Regression求解classification问题
- 杭电ACM2019--数列有序!
- js循环语句
- yk-随记
- python8--文件操作 with。。。open语法
- c&;c++中的宏
- Linux安装Tomcat-Nginx-FastDFS-Redis-Solr-集群——【第三集之磁盘分区】
- 第二个spring冲刺第10天(及第二阶段总结)
- UML建模学习1:UML统一建模语言简单介绍
- JS数组中级+高级技巧