static主要作用

  • 常见定义结构:public static void main();

  • static关键字可以用于定义属性及方法;

static定义属性

在一个类之中,主要的组成就是属性和方法(分为构造方法与普通方法两种),而每一个对象都分别拥有各自的属性内容(不同对象的属性保存在不同的堆内存之中)

如果现在类中的某个属性希望定义为公共属性(所有对象都可以使用的属性)则可以在声明属性前加上static关键字。

范例:定义程序

class Book {	// 描述的是同一个出版社的信息
private String title ; // 普通属性
private double price ; // 普通属性
static String pub = "清华大学出版社" ; // 定义一个描述出版社信息的属性,为操作方便,暂不封装
public Book(String title,double price) {
this.title = title ;
this.price = price ;
}
public String getInfo() {
return "图书名称:" + this.title + ",价格:" + this.price + ",出版社:" + this.pub ;
}
}
public class TestDemo {
public static void main(String args[]) {
Book ba = new Book("Java开发",10.2) ; // 实例化Book类对象
Book bb = new Book("Android开发",11.2) ; // 实例化Book类对象
Book bc = new Book("Oracle开发",12.2) ; // 实例化Book类对象
ba.pub = "北京大学出版社" ; // 修改了一个属性的内容
System.out.println(ba.getInfo()) ;
System.out.println(bb.getInfo()) ;
System.out.println(bc.getInfo()) ;
}
}
程序执行结果:
图书名称:Java开发,价格:10.2,出版社:北京大学出版社
图书名称:Android开发,价格:11.2,出版社:北京大学出版社
图书名称:Oracle开发,价格:12.2,出版社:北京大学出版社

static属性保存

static是一个公共属性的概念,那么如果只是简单的由一个对象去修改static属性的做法很不合适,那么最好的做法是由所有对象的公共的代表来进行访问,那么就是类,所以来讲利用static定义的属性是可以由类名称直接调用的。

Book.pub = "北京大学出版社" ;

范例:在没有实例化对象产生时直接操作static属性

public class TestDemo {
public static void main(String args[]) {
System.out.println(Book.pub) ; // 在没有实例化对象的情况下直接输出属性内容
Book.pub = "北京大学出版社" ; // 修改static属性内容
Book ba = new Book("Java开发",10.9) ; // 实例化Book类对象
System.out.println(ba.getInfo()) ; // 输出Book类对象信息
}
}
程序执行结果:
清华大学出版社
图书名称:Java开发,价格:10.9,出版社:北京大学出版社

static定义方法

在定义类的普通方法时也可以使用static进行定义,那么很明显,使用static定义的方法也可以在没有实例化对象产生的情况下由类名称直接进行调用。

范例:使用static定义方法

class Book {		// 描述的是同一个出版社的信息
private String title ;
private double price ;
private static String pub = "清华大学出版社" // 定义一个描述出版社信息的属性
public Book(String title,double price) {
this.title = title ;
this.price = price ;
}
public static void setPub(String p) { // 定义static方法可以由类名称直接调用
pub = p ;
}
public String getInfo() {
return "图书名称:" + this.title + ",价格:" + this.price + ",出版社:" + this.pub ;
}
}
public class TestDemo {
public static void main(String args[]) {
Book.setPub("北京大学出版社") ; // 在没有对象产生的时候进行调用
Book ba = new Book("Java开发",10.2) ; // 实例化Book类对象
Book bb = new Book("Android开发",11.2) ;// 实例化Book类对象
Book bc = new Book("Oracle开发",12.2) ;// 实例化Book类对象
System.out.println(ba.getInfo()) ;
System.out.println(bb.getInfo()) ;
System.out.println(bc.getInfo()) ;
}
}
程序执行结果:
图书名称:Java开发,价格:10.2,出版社:北京大学出版社
图书名称:Android开发,价格:11.2,出版社:北京大学出版社
图书名称:Oracle开发,价格:12.2,出版社:北京大学出版社

范例:使用static定义方法

class Book {		// 描述的是同一个出版社的信息
private String title ;
private double price ;
private static String pub = "清华大学出版社" // 定义一个描述出版社信息的属性
public Book(String title,double price) {
this.title = title ;
this.price = price ;
}
public static void setPub(String p) { // 定义static方法可以由类名称直接调用
pub = p ;
}
public String getInfo() {
return "图书名称:" + this.title + ",价格:" + this.price + ",出版社:" + this.pub ;
}
}
public class TestDemo {
public static void main(String args[]) {
Book.setPub("北京大学出版社") ; // 在没有对象产生的时候进行调用
Book ba = new Book("Java开发",10.2) ; // 实例化Book类对象
Book bb = new Book("Android开发",11.2) ;// 实例化Book类对象
Book bc = new Book("Oracle开发",12.2) ;// 实例化Book类对象
System.out.println(ba.getInfo()) ;
System.out.println(bb.getInfo()) ;
System.out.println(bc.getInfo()) ;
}
}
程序执行结果:
图书名称:Java开发,价格:10.2,出版社:北京大学出版社
图书名称:Android开发,价格:11.2,出版社:北京大学出版社
图书名称:Oracle开发,价格:12.2,出版社:北京大学出版社

static方法限制

类中的方法有两组:

  • static方法
  • 非static方法

这两组件方法间访问也将受到限制:

  • static方法不能够直接访问非static属性或者是方法,只能够调用static属性或方法;
  • 非static方法可以访问static的属性或者是方法,不受任何的限制;

主方法

Java语言最大的特点可能就在于主方法上了,因为在Java中的主方法的组成单元许多,下面来观察一下每一个组成单元的含义:

  • public:主方法是程序的开始,所以这个方法对任何的操作都一定是可见的,那么既然是可见的就必须使用public(公共)。
  • static:证明此方法是由类名称调用的;
  • void:主方法是一切的执行的开始点,既然是所有的开头,那么就不能够回头,执行完毕为止;
  • main:是一个系统规定好的方法名称,不能够修改;
  • String args[]:指的程序运行的时候传递的参数,格式为:“java 类名称 参数 参数 参数”;

功能一:实现类实例化对象个数的统计

class Book {
private static int num = 0; // 保存统计个数
public Book() { // 只要是新对象实例化就执行此构造
num++; // 保存个数自增
System.out.println("这是第" + num + "个产生的对象!");
}
}
public class TestDemo {
public static void main(String args[]) {
new Book(); new Book(); new Book();
new Book(); new Book(); new Book();
}
} 程序执行结果:
这是第1个产生的对象!
这是第2个产生的对象!
这是第3个产生的对象!
这是第4个产生的对象!
这是第5个产生的对象!
这是第6个产生的对象!

功能二:实现属性的自动设置

class Book {
private String title ; // title属性
private static int num = 0 ; // 自动命名索引号
public Book() { // 没有设置title属性内容
this("NOTITLE - " + num ++) ; // 自动命名
}
public Book(String title){ // 设置title属性内容
this.title = title ;
}
public String getTitle() {
return this.title ;
}
}
public class TestDemo {
public static void main(String args[]) {
System.out.println(new Book("Java").getTitle()) ;
System.out.println(new Book().getTitle()) ;
System.out.println(new Book().getTitle()) ;
}
}
程序执行结果:
Java
NOTITLE - 0
NOTITLE - 1

03-13_static关键字的更多相关文章

  1. 093 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 03 static关键字(下)

    093 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...

  2. Docs-.NET-C#-指南-语言参考-关键字:C# 关键字

    ylbtech-Docs-.NET-C#-指南-语言参考-关键字:C# 关键字 1.返回顶部 1. C# 关键字 2017/03/07 关键字是预定义的保留标识符,对编译器有特殊意义. 除非前面有 @ ...

  3. C#语言和数据库基础

    第一章 第一个C#程序 Vs2012密钥 RBCXF-CVBGR-382MK-DFHJ4-C69G8 01..net和C#的区别 大概在2000年,微软推出了一种革命性的产品--.NET(战略) 目标 ...

  4. S2---深入.NET平台和C#编程的完美总结

    1.NET简单解说 l 面向对象提升 OOP(Object Oriented  Programming)面向对象编程 AOP:(Aspache  Oriented Programming):面向切面编 ...

  5. 20160129.CCPP体系详解(0008天)

    程序片段(01):函数.c+call.c+测试.cpp 内容概要:函数 ///函数.c #include <stdio.h> #include <stdlib.h> //01. ...

  6. 20160126.CCPP体系详解(0005天)

    程序片段(01):eatmem.c 内容概要:语句和逻辑结构 #include <stdio.h> #include <stdlib.h> #include <Windo ...

  7. JavaSE_ 面向对象 总目录(7~10)

    JavaSE学习总结第07天_面向对象2 07.01 成员变量和局部变量的区别07.02 方法的形式参数是类名的调用07.03 匿名对象的概述和应用07.04 封装的概述07.05 封装的好处和设计原 ...

  8. JavaSE学习总结第09天_面向对象4

      09.01 final关键字引入 例: class Fu { public final void show() { System.out.println("访问底层资源"); ...

  9. SQL注入的优化和绕过

    作者:Arizona 原文来自:https://bbs.ichunqiu.com/thread-43169-1-1.html 0×00 ~ 介绍 SQL注入毫无疑问是最危险的Web漏洞之一,因为我们将 ...

  10. 作为一个新手的Oracle(DBA)学习笔记【转】

    一.Oracle的使用 1).启动 *DQL:数据查询语言 *DML:数据操作语言 *DDL:数据定义语言 DCL:数据控制语言 TPL:事务处理语言 CCL:指针控制语言 1.登录 Win+R—cm ...

随机推荐

  1. 关于dp(背包)

    有关背包,我这几天可是尽受其苦(不得不靠我聪颖的背诵代码的大脑来进行一波操作) Step 1      01背包 关于01背包的主要代码: ;j<=m;j++) { for(int i=n;i& ...

  2. bcftools将vcf生成bgzip和index格式

    利用bcftools软件将vcf格式生成gz格式和index格式,需要用到“-Oz”和“index”命令,具体如下: /bcftools-1.8/bin/bcftools view ExAC.vcf ...

  3. easyUI,重新渲染

    Easyui中使用jquery或js动态添加元素时出现的样式失效的解决方法 可以使用$.parser.parse();这个方法进行处理: 例如: $.parser.parse(); 表示对整个页面重新 ...

  4. 移动端click事件延时

    在移动端使用click事件会产生300ms的延迟 问题的产生: 移动端存在双击放大的问题,所以在移动端点击事件发生时,为了判断用户的行为(到底是要双击还是要点击),浏览器通常会等待300ms,如果30 ...

  5. Laravel 下生成验证码的类

    <?php namespace App\Tool\Validate; //验证码类 class ValidateCode { private $charset = 'abcdefghkmnprs ...

  6. 爬虫之requests请求库高级应用

    1.SSL Cert Verification #证书验证(大部分网站都是https) import requests respone=requests.get('https://www.12306. ...

  7. 一键开启MacOS HiDPI

    完整文件下载:一键开启MacOS HiDPI 引言 作为一个黑苹果用户,追求黑果的体验是当然的,当各个硬件都驱动完善后,要做的就是细节的优化了,毕竟装上是拿来用的,可不能因为体验差苦了自己啊.机器毕竟 ...

  8. ADB interface驱动

    原文地址:https://blog.csdn.net/weixin_42108952/article/details/80153402

  9. IMDB影评倾向分类 - N-Gram

    catalogue . 数据集 . 模型设计 . 训练 1. 数据集 0x1: IMDB影评数据 本数据库含有来自IMDB的25,000条影评,被标记为正面/负面两种评价 from keras.dat ...

  10. Spring Boot笔记四:日志框架介绍

    我是一名程序员,我喜欢写System.out.println来打印一些重要的信息...后来我学了面向对象,我把这些输出语句整合到了一个工具类里面,可以打印,也可以保存日志. 我是一名积极思考的程序员, ...