一、 static 定义属性

static 定义的属性和非 static 定义的属性有一个最大区别:所有的非 static 属性必须产生实例化对象之后才可以访问,static 定义的属性不受此限制。也就是说,在没有实例化对象产生的情况下,依然可以使用 static 属性。

static 定义属性的一个特征:虽然定义在类结构里面,但是并不受对象的控制,是独立于类存在的。

二、static 定义方法

static 定义方法的时候也可以在没有实例化对象产生的时候利用类名称直接调用。

1、static 方法和非 static 方法区别

  • static 方法不能直接访问非 static 属性和 非 static 方法,只能调用 static 属性和方法;

  • 非 static 方法 可以直接访问 static 属性和方法,不受任何的限制。

分析:为什么会存在以上的限制?

  • 所有非static 定义的结构,必须在类已经明确产生了实例化对象之后才会分配堆内存空间,才可以使用。
  • 所有 static 定义的结构,不受实例化对象的控制,即可以在没有实例化对象的时候访问。

2、什么时候使用 static 方法?

​ 类里面没有任何的属性存在,只有方法,建议将所有的方法定义为 static 方法,这样就不用在每次调用的时候再产生实例化对象了。

三、主方法

观察主方法的每一个构成:

  • public:主方法是程序的开始,所以这个方法对任何的操作都一定是可见的,既然可见就必须使用public。
  • static:不需要产生实例化对象,由类名称调用。编译运行 java 程序时我们是在命令行里执行: java 类名称。
  • void:主方法是一切执行的开始点,既然是所有的开头,那么就不能回头(return),执行完毕为止。
  • main:是一个系统规定好的方法名称,不能修改。
  • String args[]:指的是程序运行时传递的参数,例子如下。

示例代码:

public class Test{
public static void main(String args[]){
for(int x=0; x< args.length; x++){
System.out.println(args[x]);
}
}
}

所有输入的参数必须使用空格分隔,例如: java Test adc tef sdf sdg。

四、static 的实际应用

之前的结论:

  • 不管有多少个对象,都使用同一个 static 属性;
  • 使用 static 方法可以避免掉实例化对象调用方法的限制。

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

希望每当实例化一个对象的时候,输出”这是产生的第x个实例化对象“

class Book{
private static int num = 0;
public Book(){
num ++ ;
System.out.println("这是产生的第" + num + "个实例化对象。");
}
}
public class TestBook{
public static void main(String [] args){
new Book();new Book();new Book();new Book();new Book();
}
}

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

例如现在某一个类有一个无参构成方法、一个有参构造方法,有参构造方法主要目的是传递一个 title 属性,希望调用的不管是有参还是无参构造,都可以为 title 设置内容。

class Book{
private String title;
private static int num = 0;
public Book(){
this.title = "Native-" + (num++);
}
public Book(String title){
this.title = title;
}
public String getTitle(){
return this.title;
}
}
public class TestBook{
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());
System.out.println(new Book().getTitle());
}
}

此时就算是没有设置 title 属性,该内容也不会为 null。

五、总结

1、开发中首选的属性一定不是 static 属性,首选的方法一定不是 static 方法。

2、static 修饰的属性和方法可以在没有实例化对象的时候直接有类名称进行调用。

3、static 属性保存在全局数据区

内存区一共有四个:栈内存、堆内存、全局数据区、全局代码区

【9】java之static关键字的更多相关文章

  1. java中static关键字的作用

    java中static关键字主要有两种作用: 第一:为某特定数据类型或对象分配单一的存储空间,而与创建对象的个数无关. 第二,实现某个方法或属性与类而不是对象关联在一起 简单来说,在Java语言中,s ...

  2. Java的static关键字

    本文参考:Java的static关键字 通过static关键字可以满足两方面的需要.一种情形是,只想为某特定域分配单一存储空间,而不去考虑究竟要创建多少对象,甚至根本就不创建任何对象.另一种情形是,希 ...

  3. java的static关键字 – Break易站

    本文内容来自:java的static关键字 – Break易站 (原文网站阅读体验更好) 通过static关键字可以满足两方面的需要.一种情形是,只想为某特定域分配单一存储空间,而不去考虑究竟要创建多 ...

  4. Java面向对象-static关键字、静态方法与普通方法、静态成员变量

    Java面向对象-static关键字.静态方法与普通方法 static关键字的基本作用:方便在没有创建对象的情况下来进行调用(方法/变量). 很显然,被static关键字修饰的方法或者变量不需要依赖于 ...

  5. Java 静态static关键字,main函数,对象的初始化过程,对象调用成员,单例模式的设计,静态代码块(6)

    Java 静态static关键字,静态代码块详情参考:static的使用原理讲解http://www.cnblogs.com/itcqx/p/5519464.html main函数: java Mai ...

  6. 面试官:兄弟,说说Java的static关键字吧

    读者乙在上一篇我去系列文章里留言说,"我盲猜下一篇标题是,'我去,你竟然不知道 static 关键字'".我只能说乙猜对了一半,像我这么有才华的博主,怎么可能被读者猜中了心思呢,必 ...

  7. Java:static关键字小记

    Java:static关键字小记 对 Java 中的 static 关键字,做一个微不足道的小小小小记 static 修饰变量 静态变量:是被 static 修饰的变量,也称为类变量,它属于类,因此不 ...

  8. [java基础]java中static关键字

    1.static概念 static是静态修饰符,什么叫静态修饰符呢?大家都知道,在程序中任何变量或者代码都是在编译时由系统自动分配内存来存储的,而所谓静态就是指在编译后所分配的内存会一直存在,直到程序 ...

  9. 关于java的static关键字

    通常来说,当你创建类时,就是在描述那个类的对象的外观与行为.除非你用new创建那个类的对象,否则,你实际上并未获得任何东西.当你用new来创建对象时,数据存储空间才被分配,其方法才供外界调用. 但是有 ...

  10. java中static关键字解析

    static关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字,也是各大公司的面试官喜欢在面试时问到的知识点之一.下面就先讲述一下static关键字的用法和平常容易误解的地方,最后列 ...

随机推荐

  1. python函数及算法

    算法二分法 二分算法图 什么是算法? ​ 算法是高效解决问题的办法. 需求:有一个按照从小到大顺序排列的数字列表,查找某一个数字 # 定义一个无序的列表 nums = [3,4,5,67,8,9,12 ...

  2. 铁威马NAS如何开启二次验证提高系统安全性

    想到登录TNAS时更安全?直接开启OTP二次验证,通过 TNAS mobile生成的一次性密码登录NAS存储,简单设置,提升TOS系统访问安全性给你TNAS双重保护. 1.首先,确认你的TOS系统在5 ...

  3. Flask初步认识

    1.Flask基本认识 Flask 本身相当于一个内核,其他几乎所有的功能都要用到扩展包(数据库Flask-SQLAlchemy),都需要用第三方的扩展来实现.比如可以用 Flask 扩展加入ORM. ...

  4. 学习.NET MAUI Blazor(二)、MAUI是个啥

    随着.NET 7的发布,MAUI也正式发布了.那么MAUI是个啥?我们先来看看官方解释: .NET 多平台应用 UI (.NET MAUI) 是一个跨平台框架,用于使用 C# 和 XAML 创建本机移 ...

  5. 使用 Bitnami Helm 安装 Kafka

    服务器端 K3S 上部署 Kafka Server Kafka 安装 ️ Quote: charts/bitnami/kafka at master · bitnami/charts (github. ...

  6. Web3区块链DAS域名注册教程 tron trx链波卡钱包地址解析 用户名转账 ENS

    而在去中心化系统中,大部分人充值.转账时,使用的都是区块链原生的长地址,比如: ETH 的地址: 0x9euo8sHip*******dHld90 CKB 的地址: ckHUEI829D******* ...

  7. dfs学习笔记

    题目链接 可以通过参考一道例题来加深对dfs的认知和学习 题意描述 按照字典序输出自然数 1 到 n 所有不重复的排列,即 n 的全排列,要求所产生的任一数 字序列中不允许出现重复的数字. 输出格式 ...

  8. 安装postcss-px-to-viewport 配置postcss.config.js 报错Error: true is not a PostCSS plugin

    因项目需要,用户突然要坚持小屏幕也要观看大屏代码,临时解决方案是加了一个postcss-px-to-viewport ,安装过程中报错Error: true is not a PostCSS plug ...

  9. Odoo View 常用技巧

    隐藏Field <field name="currency_id" invisible="True"/> <field name=" ...

  10. 11月25日内容总结——sql查询关键字

    目录 一.SQL语句查询关键字 二.前期数据准备 三.编写SQL语句的小技巧 四.查询关键字之where筛选 1.查询id大于等于3小于等于6的数据 2.查询薪资是20000或者18000或者1700 ...