第三次学JAVA再学不好就吃翔(part26)--static关键字
学习笔记,仅供参考
文章目录
- 面向对象
- static关键字
- 静态关键字的特点
- 注意事项
面向对象
static关键字
- 先看一个例子
class Bunny0601A {public static void main(String[] args) {Bunny b1 = new Bunny();b1.name = "Huang";b1.age = 10;Bunny b2 = new Bunny();b2.name = "Bai";b1.speak();b2.speak();}
}class Bunny {String name;static int age;public void speak() {System.out.println(name + "已经" + age + "个月啦!");}
}
输出:
Huang已经10个月啦!
Bai已经10个月啦!
静态关键字的特点
- 静态关键字的特点
- 随着类的加载而加载;
- 优先于对象存在;
- 被类的所有对象共享。所以如果某个成员变量是被所有对象共享的,那么它就应该定义为静态的,共性用静态,特性用非静态;
- 静态可以通过类名调用
- 举个例子
class Bunny0601A {public static void main(String[] args) {Bunny.age = 9;System.out.println(Bunny.age);}
}class Bunny {String name;static int age;public void speak() {System.out.println(name + "已经" + age + "个月啦!");}
}
输出:
9
注意事项
注意事项
静态是随着类的加载而加载,静态比对象先存在,this是随着对象的创建而存在,非静态的成员只能通过对象(this)来访问,而不能通过类名直接访问。
静态方法只能访问静态的成员变量和静态的成员方法,而非静态的方法可以访问静态的也可以访问非静态的。
- 举个例子
我们分别利用静态和非静态方法访问静态和非静态成员。
非静态方法:
class Bunny0601A {public static void main(String[] args) {Bunny b = new Bunny();b.print1();}
}class Bunny {String name;static int age;public void print1() { //非静态的成员方法,既可以访问静态的成员也可以访问非静态的成员System.out.println(name);System.out.println(age);}
}
输出:
null
0
静态方法:
class Bunny0601A {public static void main(String[] args) {Bunny.print2();}
}class Bunny {String name;static int age;public static void print2() { //静态的成员方法System.out.println(name); //静态的成员方法不能访问非静态的成员System.out.println(age);}
}
报错:
---------- javac ----------
Bunny0601A.java:18: 错误: 无法从静态上下文中引用非静态 变量 nameSystem.out.println(name); //静态的成员方法不能访问非静态的成员^
1 个错误Output completed (2 sec consumed) - Normal Termination
将静态方法中非静态变量删掉:
class Bunny0601A {public static void main(String[] args) {Bunny.print2();}
}class Bunny {String name;static int age;public static void print2() { //静态的成员方法System.out.println(age);}
}
输出:
0
第三次学JAVA再学不好就吃翔(part26)--static关键字相关推荐
- 第三次学JAVA再学不好就吃翔(part106)--字符流
学习笔记,仅供参考,有错必纠 文章目录 IO流 字符流输入流FileReader 字符流是什么 FileReader类构造方法 举个例子 字符流输出流FileWriter FileWriter构造方法 ...
- 第三次学JAVA再学不好就吃翔(part46)--Scanner类
学习笔记,仅供参考 文章目录 Scanner类 Scanner获取数据出现的问题 Scanner类 概述 Scanner是在java.util包下的一个类,使用该类时我们需要导包.这个类被final修 ...
- 第三次学JAVA再学不好就吃翔(part117)--单例设计模式
学习笔记,仅供参考,有错必纠 文章目录 多线程 单例设计模式 饿汉式 懒汉式 第三种格式 Timer类 线程的五种状态 多线程 单例设计模式 单例设计模式,即保证类在内存中只有一个对象,如何保证类在内 ...
- 第三次学JAVA再学不好就吃翔(part109)--LineNumberReader类
学习笔记,仅供参考,有错必纠 IO流 LineNumberReader类 该类继承自java.io.BufferedReader,该类可以跟踪行号的缓冲字符输入流.此类定义了方法 setLineNum ...
- 第三次学JAVA再学不好就吃翔(part108)--带缓冲的字符流
学习笔记,仅供参考,有错必纠 文章目录 IO流 带缓冲的字符流 BufferedReader和BufferedWriter readLine和newLine方法 IO流 带缓冲的字符流 Buffere ...
- 第三次学JAVA再学不好就吃翔(part107)--字符流的拷贝
学习笔记,仅供参考,有错必纠 文章目录 IO流 字符流的拷贝 拷贝纯文本文件 注意事项 自定义字符数组的拷贝 IO流 字符流的拷贝 拷贝纯文本文件 zzz.txt: 安徽财经大学 JAVA代码: pa ...
- 第三次学JAVA再学不好就吃翔(part104)--flush和close
学习笔记,仅供参考,有错必纠 flush和close flush方法 对于写出数据来说,当缓冲区满了之后,缓冲区中的数据会自动写出,但是当缓冲区没有满时,调用flush方法,那么缓冲区就会被刷新,数据 ...
- 第三次学JAVA再学不好就吃翔(part99)--File类
学习笔记,仅供参考,有错必究 文章目录 File类 构造方法 举个例子 File类创建功能 举个例子 File类的重命名及删除功能 举个例子 注意事项 File类的判断功能 File类的获取功能 举个 ...
- 第三次学JAVA再学不好就吃翔(part92)--Map集合的遍历
学习笔记,仅供参考,有错必纠 Map集合的遍历 方法1(利用键找值) 由于Map集合中没有iterator方法,所以如果我们想要遍历Map,则需要先提取出键,拿到Set集合,再利用Set集合的iter ...
最新文章
- linux安装metasploit,centos如何安装metasploit
- 【干货】如何确定需求优先级,如何确定功能优先级
- 【推荐】SAP关闭正在执行的缓慢的程序
- app网站换服务器,app切换服务器
- 利用SQLChiper对Android SQLite数据库加密
- Cocos2dx-如何利用NDK分析崩溃日志
- 13.transform确保目标空间足够大
- 深度学习之自编码器(4)变分自编码器
- python3语音识别模块_零基础教你玩转语音控制,学习语音控制技术,打造智能生活很简单...
- Oracle相关练习
- Linux定时向目标服务器传输文件
- gflags的使用实例(转载)
- 5. Zend_Log
- 概率论与数理统计期末考试题及答案
- 想知道微信怎么做指纹支付开发?看这里!
- 5号AA电池,7号AAA电池
- 中转网关 (Transit Gateway) Connect连接类型集成FortiGate安全服务
- 汉罗塔小游戏(自创)
- 《东周列国志》第一回 周宣王闻谣轻杀 杜大夫化厉鸣冤
- SMPL模型及源码解读
热门文章
- 02繁花嗅Django笔记
- tomcat jar包_tomcat学习|tomcat中的类加载器
- 小程序引用icon图标(入门)
- python post 远程主机强迫关闭了一个现有的连接_ConnectionResetError:[WinError10054远程主机强迫关闭一个现有连接...
- 爬取json Swaggerui界面
- ant-design-pro使用服务器数据接口代理配置
- VMware NAT模式
- nginx proxy cache配置参数解读
- 一起学shell之(九-2)拼写检查、进程
- 挑选SaaS企业需要注意十要素