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

 1 package lsg.ap.april4th2;
 2 /*
 3     知识点:1.Getter and Setter 的应用
 4        2.局部变量与成员变量(也可叫做全局变量)
 5        3.Static关键字的用法
 6          a.成员变量被static修饰后的所有类的共享属性
 7          b.方法被static修饰之后,在本类内调用的类名省略问题;以及不用Static,即使在本类内也必须先实例化
 8        4.This关键字的用法
 9     this:是当前类的对象引用。简单的记,它就代表当前类的一个对象。
10
11     注意:谁调用这个方法,在该方法内部的this就代表谁。
12
13     this的场景:
14         解决局部变量隐藏成员变量
15 */
16 //定义学生类
17 class Person
18 {
19     //姓名
20     private String name="刘德华";
21     //年龄
22     private int age=45;
23     //所有对象共享的属性用static修饰,可以直接被类名直接调用
24     static String country = "中国";
25
26     //姓名获取值
27     public String getName()
28     {
29         return name;
30     }
31
32     //姓名设置值
33     public void setName(String name)
34     { //name = "林青霞";
35         //name = name; //变量的使用规则:就近原则
36         //这里是类名,目前还没有说过类似的用法,所以这个是有问题的
37         //这里的调用只能通过对象名
38         //这个对象如果存在,它应该代表的是Student的一个对象。
39         //那么,谁能够代表当前类的对象呢? java就提供了一个关键字 this
40         //Student.name = name;
41         this.name = name;
42     }
43
44     //年龄获取值
45     public int getAge()
46     {
47         return age;
48     }
49
50     //年龄赋值
51     public void setAge(int age)
52     {
53         this.age = age;
54     }
55 }
56
57 //测试类
58
59 public class PersonClass
60 {
61
62     public void show()//定义非静态方法,必须经过实例化后才能调用
63
64     {
65         System.out.println("哈哈");
66     }
67     public static void show2()//但是当以静态方法后,可以直接用 类名.函数名
68                              //调用,在本类内,类名可以忽略,这就是常见的public static...的由来
69     {
70         System.out.println("哈哈你妹");
71     }
72     public static void main(String[] args)
73     {
74         //创建人对象
75         Person s1= new Person();
76         Person s2= new Person();
77         PersonClass s3=new PersonClass();
78         s3.show();//不能直接写show(),因为是非静态方法,必须实例化后通过实例调用
79         show2();
80         //给成员变量赋值
81         s1.setName("林青霞");
82         s1.setAge(27);
83         s1.country="美国";//静态变量的值是共享的,所以以最后一次修改的为准,即全变成了日本
84         s2.country="日本";//静态属性最好用类名直接调用,要不会警告的哦
85         //Static 与Final是不同的哦,Static类似C语言的Extern,Final类似Define
86         //Static定义的变量的值仍然是可以修改的,但是Final指定在定义的时候赋值一次
87         //获取数据
88         System.out.println(s1.getName()+"---"+s1.getAge());//直接用类名.调用Name和
89                                                             //        age是绝对不可以的
90         System.out.println(s2.getName()+"---"+s2.getAge());
91         System.out.println(s1.country);//静态属性最好不要用类的实例调用,会警告的
92         System.out.println(s2.country);
93         System.out.println(Person.country);//Person.后面只提示country,
94                                           //不会提示name和age哦
95     }
96
97 }
时间: 2024-11-08 13:41:13

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

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

Java中主类中定义方法加static和不加static的区别(前者可以省略类名直接在主方法调用,后者必须先实例化后用实例调用) 知识点:1.Getter and Setter 的应用 2.局部变量与成员变量(也可叫做全局变量) 3.Static关键字的用法 a.成员变量被static修饰后的所有类的共享属性 b.方法被static修饰之后,在本类内调用的类名省略问题;以及不用Static,即使在本类内也必须先实例化 4.This关键字的用法 this:是当前类的对象引用.简单的记,它就代表当前

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

var 不一定是用来定义局部变量的 jscript的全局变量和局部变量的分界是这样的: 过程体(包括方法function,对象Object o ={})外的所有变量不管你有没有加var保留字,他都是全局变量 过程体内(包括方法function(){},对象Object o={})内的对象加var保留字则为局部变量,而不加var保留字即为全局变量 即:只要在过程体外,都是全局变量,在过程体内加var 为局部变量 不加为全局变量 js的全局作用域应该是在看着办的的范围内,不一定是同一个页面,比如说在

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

难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第八十七章:类中嵌套接口的应用场景(拔高题) 下一章 "全栈2019"Java第八十八章:接口中嵌套接口的应用场景 学习小组 加入同步学习小组,共同交流与进步. 方式一:关注头条号Gorhaf,私信"Java学习小组". 方式二:关注公众号Gorhaf,回复"J

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

第4节:Java基础 - 必知必会(中) 本小节是Java基础篇章的第二小节,主要讲述抽象类与接口的区别,注解以及反射等知识点. 一.抽象类和接口有什么区别 抽象类和接口的主要区别可以总结如下: 抽象类中可以没有抽象方法,JDK8版本开始提供了接口总方法的default实现 抽象类和类一样是单继承的:接口可以实现多个父类 抽象类中可以存在普通的成员变量:接口中的变量必须是static final类型的,必须被初始化,接口中只能有常量,没有变量 解析: 在Java中,我们用abstract来定义抽

黑马程序员——Java基础--IO流(一)---File类以及其他流对象

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.File类 File类是将文件系统中的文件和文件夹封装成了对象.提供了更多的属性和行为可以对这些文件和文件夹进行操作.这些是流对象办不到的,因为流只操作数据.File对象可以作为参数传递给流对象的构造函数.File 类的实例是不可变的:也就是说,一旦创建,File 对象表示的抽象路径名将永不改变. 1.File类中的方法 (1).File类的构造方法以及字段 1 new File(Stri

java基础知识回顾之javaIO类--管道流PipedOutputStream和PipedIutputStream

管道流(线程通信流):管道流的主要作用是可以进行两个线程间的通讯,分为管道输出流(PipedOutputStream).管道输入流(PipedInputStream),如果想要进行管道输出,则必须要把输出流连在输入流之上.如图所示: 1.管道输入流应该连接到管道输出流 ,输入流和输出流可以直接连接       2.使用多线程操作,结合线程进行操作.通常由某个线程从管道输入流中(PipedInputStream)对象读取.          并由其他线程将其写入到相应的端到输出流中.不能使用单线程

java基础知识回顾之javaIO类--RandomAccessFile类

java.io 类 RandomAccessFile java.lang.Object java.io.RandomAccessFile1.该类不是IO流中的子类.2.该类既能读又能写.3.该对象内部分装了一个字节数组,通过指针可以操作数组中的元素.4.其实该对象就是将字节输入流和输出流进行了封装.5.该对象只能对文件操作,目的和源只能是文件对象.通过看构造方法可以看得出来.RandomAccessFile(File file, String mode) RandomAccessFile(Str

java基础知识回顾之javaIO类--File类应用:获取指定目录下面的指定扩展名的文件,将文件的绝对路径写入到目的文件当中

/** * File文件综合应用 * 需求:获取指定目录下面,指定扩展名的文件,将文件的绝对路径写到文本文件当中. *  * 思路:1.需要深度遍历.--递归 * 2.遍历的过程中过滤指定扩展名的文件--过滤器FileNameFilter,将文件存入容器中 * 3.将容器中的内容遍历,写入到指定文件中 * */ 代码:  FilenameFilter 过滤器: package com.lp.ecjtu.File.filter; import java.io.File; import java.i

java基础知识回顾之javaIO类--内存操作流ByteArrayInputStream和ByteArrayOutputSteam(操作字节数组)

直接看代码: package cn.itcast.io.p6.bytestream; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; public class ByteArrayStreamDemo { /** * @param args * @throws IOException * 特点 * 1.内存操作流 * 2.不操作底层资源,不调