静态对象与非静态对象

Java静态对象和非静态对象有什么区别??

静态对象                                                        非静态对象      
是类共同拥有的.                                          是类独立拥有的, 
内存空间上是固定的                                              空间在各个附属类里面分配 
先分配静态对象的空间                                            继而再对非静态对象分配空间,也就是初始化顺序是先静态再非静态.

java静态对象和静态属性及静态方法又有什么区别呢? 
这三者都和一般的对象属性和方法相似,可以将静态对象看成的静态属性.只不过楼主要注意的是在非静态方法里是不可以使用静态属性的.静态方法里也无法使用非静态属性(是属性不是参数.参数一般是指在方法里临时新建的数值或对象,属性是类声明部分声明的信息).

为什么先声明一个静态对象 static Lefthand left;还要在主函数中再实例化该对象呢left=new Lefthand();? 
因为任何对象在使用之前都要进行初始化,new就是进行对象的分配空间后进行初始化.

java静态对象到底有什么好处?? 
我个人的理解就是静态对象可以让相同类型的类之间共享共同的属性,这个共享是同步的,而且不用new,节省了空间

1、静态对象的数据在全局是唯一的,一改都改。如果你想要处理的东西是整个程序中唯一的,弄成静态是个好方法。 
2、非静态的东西你修改以后只是修改了他自己的数据,但是不会影响其他同类对象的数据。 
3、静态对象和非静态对象都是对象,是对象都是要实例化的。不同之处就是2者的数据表现和存储方式不一样。 
4、静态的好处: 
引用方便。对于公用类型的变量,直接用 类名.静态方法名  或者  类名.静态变量名就可引用并且直接可以修改其属性值,不用getter和setter方法。 
保持数据的唯一性。此数据全局都是唯一的,修改他的任何一处地方,在程序所有使用到的地方都将会体现到这些数据的修改。 
有效减少多余的浪费。

时间: 2024-12-26 22:35:25

静态对象与非静态对象的相关文章

java synchronized静态同步方法与非静态同步方法,同步语句块

摘自:http://topmanopensource.iteye.com/blog/1738178 进行多线程编程,同步控制是非常重要的,而同步控制就涉及到了锁. 对代码进行同步控制我们可以选择同步方法,也可以选择同步块,这两种方式各有优缺点,至于具体选择什么方式,就见仁见智了,同步块不仅可以更加精确的控制对象锁,也就是控制锁的作用域,何谓锁的作用域?锁的作用域就是从锁被获取到其被释放的时间.而且可以选择要获取哪个对象的对象锁.但是如果在使用同步块机制时,如果使用过多的锁也会容易引起死锁问题,同

静态代码块&非静态代码块&构造函数

总结:静态代码块总是最先执行.非静态代码块跟非静态方法一样,跟对象有关.只不过非静态代码块在构造函数之前执行.父类非静态代码块.构造函数执行完毕后(相当于父类对象初始化完成), 才开始执行子类的非静态代码块和构造函数. 相同点:都是在JVM加载类时且在构造方法执行之前执行,在类中都可以定义多个,一般在代码块中对一些static变量进行赋值. 不同点:静态代码块在非静态代码块之前执行(静态代码块—>非静态代码块—>构造方法). 静态代码块只在第一次new执行一次,之后不再执行,而非静态代码块在每

区分同步代码块、静态同步方法、非静态同步方法的锁

同步代码块.静态同步方法.非静态同步方法的锁分别是: 同步代码块可以使用自定义的Object对象,也可以使用this或者当前类的字节码文件(类名.class): 静态同步方法的锁是当前类的字节码文件(类名.class): 非静态同步方法的锁是this: 证明方法: 两个线程之间实现同步,一个线程使用同步代码块,一个线程使用同步方法. 如果这两个线程同步了,说明了使用的是同一个锁: 创建线程类(以售票为例) /** * @methodDesc 售票线程类 */ public class Threa

关于静态变量和非静态变量的区别

关于静态变量和非静态变量的区别 静态变量:被static修饰的变量,加载类的时候被创建,不随对象的创建而改变,静态变量位于方法区,类消失对应的变量消失. 非静态变量:不被static修饰的变量,每创建一次对象,就会为变量分配一次内存,存放在堆内存中,对象消失对应的变量消失. JAVA中初始化的顺序: 加载类: 静态变量初始化 静态代码块:[其只能调度静态的,不能调度非静态的] 成员变量 构造代码块 构造方法 普通代码块 原文地址:https://www.cnblogs.com/wangwswan

java 静态资源,非静态资源,父类子类,构造方法之间的初始化循序

java面试经常被问静态资源,非静态资源,父类子类,构造方法之间的执行顺序.下面添加两个类做个测试 class Parent { // 静态变量 public static String p_StaticField = "父类--静态变量"; // 变量(其实这用对象更好能体同这一点,如专门写一个类的实例) //如果这个变量放在初始化块的后面,是会报错的,因为你根本没有被初始化 public String p_Field = "父类--变量"; // 静态初始化块

Java显示的静态初始化和非静态实例初始化

静态初始化只执行一次,实例初始化每次创建实例都会执行. 1.创建一个Spoon类: package com.samsung.wx; public class Spoon { static { System.out.println("显示的静态初始化"); } { System.out.println("非静态实例初始化"); } public void f1(int i) { System.out.println(i); } } 2.测试代码: package co

匿名对象与非匿名对象的区别

类封装完以后就可以通过使用new关键字和类的构造方法来创建对象,这种对象分为两种:匿名对象与非匿名对象.何为匿名对象,何为非匿名对象呢?举个例子:假如有如下类: package com.heima.vo; public class Student{                    private String name="lisi";                    private int age=12;                    public void pri

Static静态变量和非静态变量

Static静态变量:   不同的对象共享这个变量的存储空间 而不是静态变量   每个对象具有可变的存储器空间 public class StaticDemo { private int count=0; private static int staticCount=0; public StaticDemo() { System.out.println(++count); System.out.println(++staticCount); } public static void main(S

关于静态变量,静态代码块,非静态变量,构造方法中变量实例化顺序

LuceneUtils.java 1 import java.util.ArrayList; 2 import java.util.List; 3 4 @SuppressWarnings("unused") 5 public class LuceneUtils { 6 private String a = "string";//第四个个实例化,如果这个地方没有给a赋值那么不走这个语句(仅仅是声明). 7 private static Object o = null;