staticjava方法(java static的用法)

本篇文章给大家谈谈staticjava方法,以及java static的用法对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

1、Java中的静态方法是什么?2、java 中static用法3、Java中static方法和普通方法的区别4、java中static怎么用5、java中static的用法6、java 静态方法

Java中的静态方法是什么?

静态方法是在类中使用staitc修饰的方法,在类定义的时候已经被装载和分配。

静态方法为类所有,可以通过对象来使用,也可以通过类来使用。

我们之前一直写的mian方法仔细看看,它就是一个静态方法,静态方法使用如下:

运行结果:

使用静态方法时,要注意:

1、静态方法可以调用同类中的其他成员,但不能直接调用非静态成员,如:

运行结果:

2、但是如果希望静态方法中调用非静态成员,可以通过创建类的对象 ,然后通过对象来访问非静态变量。如

运行结果:

3、静态方法同样不能直接调用非静态方法,但可以通过对象来访问非静态方法,如:

运行结果:

java 中static用法

static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念。

被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享。

只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内定找到他们。因此,static对象可以在它的任何对象创建之前访问,无需引用任何对象。

用public修饰的static成员变量和成员方法本质是全局变量和全局方法,当声明它类的对象市,不生成static变量的副本,而是类的所有实例共享同一个static变量。

static变量前可以有private修饰,表示这个变量可以在类的静态代码块中,或者类的其他静态成员方法中使用(当然也可以在非静态成员方法中使用–废话),但是不能在其他类中通过类名来直接引用,这一点很重要。实际上你需要搞明白,private是访问权限限定,static表示不要实例化就可以使用,这样就容易理解多了。static前面加上其它访问权限关键字的效果也以此类推。

Java中static方法和普通方法的区别

static方法就是静态方法。

静态方法是类方法,类名即可引用。

普通方法是对象方法,需要实例化对象才可以引用

java中static怎么用

static 属于全局,也就是类的属性 和方法,换句话说 一个类,不管有多少个实例,却只有一个全局变量

class B {static int a=0;}

B b1=new B();………………;B bn=new B();

b1~bn 都是类B的实例,每个实例都共享 变量a,a是全局变量,属于类B的属性,每个实例都能引用变量a,

加入执行b1.a=1;后 那么b2.a,b3.a,b4.a……bn.a 都等于1了,

static 方法也是类似的

需要注意的是 静态属性和方法属于类方法,加载类后,就已经存在静态属性和方法,实例是需要用new构造出来后 才会有引用

根据先后顺序,就有以下两条规则

1、非静态的方法可以调用静态的或者非静态的属性和方法;

2、静态的方法不可以调用非静态的属性和方法,因为非静态的还不一定存在,只能先构造出来后,再通过实例引用

例如 在main方法中 可以直接调用static 的方法,调用非static方法 需要先构造出类的实例,通过实例才能调用方法

java中static的用法

static变量有点类似于C中的全局变量的概念。值得探讨的是静态变量的初始化问题。拿以下程序为例

class Value{

static int c=0;

Value(){

c=15;

}

Value(int i){

c=i;

}

static void inc(){

c++;

}

}

class Count{

public static void prt(String s){

System.out.println(s);

}

Value v=new Value(10);

static Value v1,v2;

static{

prt(“v1.c=”+v1.c+” v2.c=”+v2.c);

v1=new Value(27);

prt(“v1.c=”+v1.c+” v2.c=”+v2.c);

v2=new Value(15);

prt(“v1.c=”+v1.c+” v2.c=”+v2.c);

}

public static void main(String[] args){

Count ct=new Count();

prt(“ct.c=”+ct.v.c);

prt(“v1.c=”+v1.c+” v2.c=”+v2.c);

v1.inc();

prt(“v1.c=”+v1.c+” v2.c=”+v2.c);

prt(“ct.c=”+ct.v.c);

}

}

运行结果如下:

v1.c=0 v2.c=0

v1.c=27 v2.c=27

v1.c=15 v2.c=15

ct.c=10

v1.c=10 v2.c=10

v1.c=11 v2.c=11

ct.c=11

这个程序展示了静态初始化的各种特性。如果你初次接触Java,结果可能令你吃惊。可能会对static后加大括号感到困惑。首先要告诉你的是,static定义的变量会优先于任何其它非static变量,不论其出现的顺序如何。正如在程序中所表现的,虽然v出现在v1和v2的前面,但是结果却是v1和v2的初始化在v的前面。在static{后面跟着一段代码,这是用来进行显式的静态变量初始化,这段代码只会初始化一次,且在类被第一次装载时。如果你能读懂并理解这段代码,会帮助你对static关键字的认识。在涉及到继承的时候,会先初始化父类的static变量,然后是子类的,依次类推。非静态变量不是本文的主题,在此不做详细讨论,请参考Think in Java中的讲解。

java 静态方法

有时你希望定义一个类成员,使它的使用完全独立于该类的任何对象。通常情况下,类成员必须通过它的类的对象访问,但是可以创建这样一个成员,它能够被它自己使用,而不必引用特定的实例。在成员的声明前面加上关键字static(静态的)就能创建这样的成员。如果一个成员被声明为static,它就能够在它的类的任何对象创建之前被访问,而不必引用任何对象。你可以将方法和变量都声明为static。static 成员的最常见的例子是main( ) 。因为在程序开始执行时必须调用main() ,所以它被声明为static。

声明为static的变量实质上就是全局变量。当声明一个对象时,并不产生static变量的拷贝,而是该类所有的实例变量共用同一个static变量。声明为static的方法有以下几条限制:

·

它们仅能调用其他的static 方法。

·

它们只能访问static数据。

·

它们不能以任何方式引用this 或super(关键字super 与继承有关,在下一章中描述)。

如果你需要通过计算来初始化你的static变量,你可以声明一个static块,Static 块仅在该类被加载时执行一次。下面的例子显示的类有一个static方法,一些static变量,以及一个static 初始化块:

// Demonstrate static variables,methods,and blocks.

class UseStatic {

static int a = 3;

static int b;

static void meth(int x) {

System.out.println(“x = ” + x);

System.out.println(“a = ” + a);

System.out.println(“b = ” + b);

}

static {

System.out.println(“Static block initialized.”);

b = a * 4;

}

public static void main(String args[]) {

meth(42);

}

}

一旦UseStatic 类被装载,所有的static语句被运行。首先,a被设置为3,接着static 块执行(打印一条消息),最后,b被初始化为a*4 或12。然后调用main(),main() 调用meth() ,把值42传递给x。3个println ( ) 语句引用两个static变量a和b,以及局部变量x 。

注意:在一个static 方法中引用任何实例变量都是非法的。

下面是该程序的输出:

Static block initialized.

x = 42

a = 3

b = 12

在定义它们的类的外面,static 方法和变量能独立于任何对象而被使用。这样,你只要在类的名字后面加点号运算符即可。例如,如果你希望从类外面调用一个static方法,你可以使用下面通用的格式:

classname.method( )

这里,classname 是类的名字,在该类中定义static方法。可以看到,这种格式与通过对象引用变量调用非static方法的格式类似。一个static变量可以以同样的格式来访问——类名加点号运算符。这就是Java 如何实现全局功能和全局变量的一个控制版本。

下面是一个例子。在main() 中,static方法callme() 和static 变量b在它们的类之外被访问。

class StaticDemo {

static int a = 42;

static int b = 99;

static void callme() {

System.out.println(“a = ” + a);

}

}

class StaticByName {

public static void main(String args[]) {

StaticDemo.callme();

System.out.println(“b = ” + StaticDemo.b);

}

}

下面是该程序的输出:

a = 42

b = 99

staticjava方法(java static的用法)

关于staticjava方法和java static的用法的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

本文来自投稿,不代表【】观点,发布者:【

本文地址: ,如若转载,请注明出处!

举报投诉邮箱:253000106@qq.com

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年3月29日 16:10:00
下一篇 2024年3月29日 16:17:09

相关推荐

  • c语言输入数组,C语言输入数组的方法

    如何用c语言从键盘输入10个数存入数组并求和? 1、用C语言编写一段程序,用来输入10个整数保存到数组中,求出这10个整数的和并输出。 2、,数组是相同数据类型的元素的集合。 2,数组中的各元素的存储是有先后顺序的,它们在内存中按照这个先后顺序连续存放在一起。 3,数组元素用整个数组的名字和它自己在数组中的顺序位置来表示。 3、void main(){ fl…

    2024年5月23日
    5100
  • java的split方法的源码,如何理解java中的split方法

    请问java中split()方法怎么用? 1、split 的实现直接调用的 matcher 类的 split 的方法。“ . ”在正则表达式中有特殊的含义,因此我们使用的时候必须进行转义。 2、split() 方法用于把一个字符串分割成字符串数组。 语法 stringObject.split(separator,howmany) 参数与描述 separato…

    2024年5月23日
    4500
  • linux增加目录空间,linux目录空间不足时的扩容方法

    Linux下调整根目录和home目录的空间大小 1、由此可见,home减少了100G空间,根目录增加了100G空间。 2、备份 home 查看未调整前的根目录容量,可以看到默认是分配 50G,但大都数的软件安装都默认在根目录 所以这里将home的容量分给根目录。 3、首先,你得有空余的空间,比如,你发现你的/home所在分区还有好多G的剩余空间,那你就可以把…

    2024年5月23日
    5400
  • java怎么实现多个接口,java多个接口有相同的方法

    java中接口可以实现多个接口吗? 1、但接口不存在这样的问题,接口全都是抽象方法继承谁都无所谓,所以接口可以继承多个接口。 2、首先,java中的接口别说实现多个接口了,一个接口也不能实现。因为接口中的方法是没有方法体的,所以不能实现任何接口。其次,一个接口可以继承多个接口。 3、java中没有多继承(就是不能继承多个父类),只有多重继承。 java怎么定…

    2024年5月23日
    3500
  • java截取字符串的方法,JAVA截取字符串中的一段字符

    java怎么获取字符串中指定的值? 在一个String字符串中 查找某个汉字的索引 可以使用str.indexOf(字) 获取在字符串中的索引位置,同样索引从0开始,若字符串中没有该汉字, 返回-1就行了。 用substring.具体用法:字符串截取,substring(int beginindex)返回一个新的字符串,它是此字符串的一个子字符串。subst…

    2024年5月23日
    4000
  • java字符串反向遍历,java 字符串反转方法

    java请问如何用reverse().toString();进行倒序输入字符串? 其实不需要用for循环,StringBuffer中已经提供了倒置的方法,貌似方法名也是叫reverse。 方法一:利用String类的toCharArray(),再倒序输出数组。 用两个StringBuilder,一个作全部的、一个作每一行的。 String类型对象的内容是不可…

    2024年5月23日
    4800
  • java调用函数的方法,java中调用函数的方法

    如何实现Java调用C或C++函数 1、(1)创建DLL文件使用某一种C/C++开发工具创建DLL文件,实现某一功能,供Java调用,例如本文在此使用Visual studio 2005创建一个名为testdll的动态库文件。(2)使用JNIJNI是Java Na***tive Interface的缩写,中文为Java本地调用。 2、首先创建Java文件 H…

    2024年5月23日
    4400
  • java字符串转码,java字符串转码方法

    java怎么把utf-8的字符串转换为gb2312格式 1、java不同编码之间进行转换,都需要使用unicode作为中转。 2、如果你想把utf-8转为GB2312 用记事本打开源码,把换成;如果是JS不需要加这句,如果是网页最好加上这句和你页面对应的编码。用记事本打开源码,另存为,编码 哪里选择 ANSI 即可。 3、如果只有一两个文件,用记事本打开 U…

    2024年5月23日
    3900
  • java快速排序法,java快速排序的两种方法

    如何用java实现快速排序,简答讲解下原理 1、【答案】:排序的方法有:插入排序(直接插入排序、希尔排序),交换排序(冒泡排序、快速排序),选择排序(直接选择排序、堆排序),归并排序,分配排序(箱排序、基数排序)快速排序的伪代码。 2、最主要的是冒泡排序、选择排序、插入排序以及快速排序冒泡排序 冒泡排序是一个比较简单的排序方法。在待排序的数列基本有序的情况下…

    2024年5月22日
    4900
  • 网络安全知识和维护方法,网络安全知识和维护方法有哪些

    怎样维护网络安全 1、第一,保持计算机系统和软件更新。为了防范网络攻击,我们必须定期更新安全补丁和操作系统。这些补丁都是为解决已知的漏洞和安全问题而发布的。下载升级补丁可以让你的电脑系统更加安全。第二,安装杀毒软件并定期扫描。 2、维护网络安全的应对之策有物理措施、访问控制、数据加密等。物理措施 例如,保护网络关键设备(如交换机、大型计算机等),制定严格的网…

    2024年5月22日
    3200

发表回复

登录后才能评论



关注微信