静态变量

面向对象 三 (三大特性)

可紊 提交于 2020-03-18 07:47:39
封装,继承,多态 一: 了解什么是封装: 就象一个盒子,你不需要知道里面有什么东西,只知道它有那些用处就行,能够为你提供相对应的方法. 封装的意义: 封装的意义在于保护或者防止 代码 (数据)被我们无意中破坏。 保护成员属性,不让类以外的程序直接访问和修改; 隐藏方法细节 关于对象封装的原则: 内聚:内聚是指一个模块内部各个部分之间的关联程度 耦合:耦合指各个模块之前的关联程度 封装原则:隐藏对象的属性和实现细节,仅对外公开访问方法,并且控制访问级别 在面向对象方法中,用类来实现上面的要求。用类实现封装,用封装来实现高内聚,低耦合。 1.1 了解访问权限修饰符 所谓访问权限,指的是本类的成员变量、成员方法和内部类对其他类的可见性。 Java一共有四种访问权限,按照权限由大到小分别为public、protected、default和private,如果省略了访问修饰符,那访问权限就是defualt。四种访问权限的含义和权限控制见下面表格: 注意:所谓的访问,有两种方式,直接访问和通过对象访问。 封装代码例: public class House { // 私有化属性 private String cookroom; private String bathroom; private String bedroom; private String parlor; public String

Java static修饰符

吃可爱长大的小学妹 提交于 2020-03-16 18:29:10
Java static修饰符 static修饰符是静态修饰符,大家写Java第一次接触static就是主函数中的pubic static void main的声明了。 那么static有什么用?本文来详细说说。 static成员与普通成员的区别 static表示 全局 或 静态 的意思,用来修饰类的成员变量和成员方法。 我们知道,程序中代码都是在编译的过程中由编译器自动分配的内存,而 static类型 就指其修饰的变量、方法在编译后就一直存在,直到程序结束才会释放内存。而我们知道Java是纯面向对象语言,万事万物都存在于类当中。 对于一个类而言,如果要使用它的成员变量、成员函数, 普通情况下必须先实例化对象之后, 通过对象的引用才能够访问这些成员。 但是用static修饰的成员可以直接通过'.'访问标识符访问。 被static修饰的成员变量和成员方法 独立于该类的任何对象 ,也就是说, static成员不依赖于特定的实例 ,而是被该类的所有对象共享,且 不会被垃圾回收。 那么,只要这个类的代码被编译器编译了,static成员就可以直接通过类名访问(调用),无需引用任何对象。 static方法 静态方法可以直接通过类名访问,这也解释了为什么主函数是static方法了,因为我们不需要利用public类来实例化后才找到主函数入口。 静态方法可以直接通过类名调用,任何对象也可以调用

Java 修饰符

生来就可爱ヽ(ⅴ<●) 提交于 2020-03-16 03:20:55
访问修饰符 Java中,可以使用访问控制符来保护对类、变量、方法和构造方法的访问。Java支持4种不同的访问权限。 默认的,也称为default,在同一包内可见,不使用任何修饰符。 私有的,以private修饰符指定,在同一类内可见。 共有的,以public修饰符指定,对所有类可见。 受保护的,以protected修饰符指定,对同一包内的类和所有子类可见。 非访问修饰符 static修饰符 静态变量: static关键字用来声明独立于对象的静态变量,无论一个类实例化多少对象,它的静态变量只有一份拷贝。静态变量也被称为类变量。局部变量不能被声明为static变量。 静态方法: static关键字用来声明独立于对象的静态方法。静态方法不能使用类的非静态变量。静态方法从参数列表得到数据,然后计算这些数据。 fianl修饰符 final变量: final变量能被显式地初始化并且只能初始化一次。被声明为final的对象的引用不能指向不同的对象。但是final对象里的数据可以被改变。也就是说final对象的引用不能改变,但是里面的值可以改变。 final修饰符通常和static修饰符一起使用来创建类常量。 final方法: 类中的Final方法可以被子类继承,但是不能被子类修改。 final类: final类不能被继承 abstract修饰符 抽象类: 抽象类不能用来实例化对象

javaSE基础07

。_饼干妹妹 提交于 2020-03-14 00:41:49
javaSE基础07 一、 static 静态修饰符 用了 static 修饰的变量就会变成共享的属性,只会初始化一次,在内存中只存在一个,并且每个对象都可以访问,存放在 方法区(数据共享区) 1.1 static 用来修饰成员变量 一个成员变量被 static 修饰了叫静态成员变量,如果没有修饰叫非静态成员变量 静态成员变量的访问方式:   1.用 对象进行访问: 对象 . 变量名   2.还可以通过 类名来访问 :类名 . 变量名 使用注意点:   1. 不要认为方便就将所有的变量用 static 修饰,只有当这个数据真正 需要共享的时候才用 static 修饰   2.只有静态变量才能用类名访问,非静态变量只能用对象访问   3. 局部变量不允许被 static 修饰 1.1.1 静态变量和非静态变量的区别: 1.作用上看:   a) 静态变量是用来共享的,所有的对象都可以访问到   b) 非静态变量就是用来描述同一类事物的公共属性 2.数量和存储位置   a) 静态变量在方法区(数据共享区),并且只有一份数据   b) 非静态变量存在堆区中,对象有 n 个那么数据就有 n 个 3.生命周期:   a) 静态变量是随着类文件的加载而加载,随着类文件的消失而消失   b) 非静态变量是随着对象创建而创建的,随着对象的消失而消失 1.2 用来修饰方法 类似 OC 中的类方法:  

静态变量setter注入

假装没事ソ 提交于 2020-03-13 23:25:57
1.java中静态方法调用非静态成员变量、非静态方法 public class Circle { private double radius = 1.0; double getAre() { return radius * radius * Math.PI; } public static void main(String[] args) { Circle myCircle = new Circle(); System.out.println( "radius is " + myCircle.radius); //radius不是静态的,静态方法可以通过类对象调用非静态成员变量、非静态方法 } } 2.不new对象,只能访问静态成员变量。而静态成员变量注入只能使用set注入,原因是静态变量/类变量不是对象的属性,而是一个类的属性,spring则是基于对象层面上的依赖注入. private static MqttServerProxy mProxy; private static DeviceStateService devStateService; public static void main(String[] args) { SpringApplication.run(App.class, args); //启动,自动连接mqtt LOGGER.info("APP: run()

静态成员和非静态成员的区别?

拥有回忆 提交于 2020-03-13 07:34:56
静态变量使用 static 修饰符进行声明,在类被实例化时创建,通过类进行访问不带有 static 修饰符声明的变量称做非静态变量,在对象被实例化时创建,通过对象进行访问一个类的所有实例的同一静态变量都是同一个值,同一个类的不同实例的同一非静态变量可以是不同的值。静态函数的实现里不能使用非静态成员,如非静态变量、非静态函数等。 示例: Codeusing System;using System.Collections.Generic;using System.Text; namespace Example01{ class Program { class Class1 { public static String staticStr = "Class"; public String notstaticStr = "Obj"; } static void Main(string[] args) { //静态变量通过类进行访问,该类所有实例的同一静态变量都是同一个值 Console.WriteLine("Class1's staticStr: {0}", Class1.staticStr); Class1 tmpObj1 = new Class1(); tmpObj1.notstaticStr = "tmpObj1"; Class1 tmpObj2 = new Class1();

静态成员和非静态成员的区别?

▼魔方 西西 提交于 2020-03-13 07:34:09
静态成员和非静态成员的区别? 答: 静态变量使用 static 修饰符进行声明,在类被实例化时创建,通过类进行访问不带有 static 修饰符声明的变量称做非静态变量,在对象被实例化时创建,通过对象进行访问一个类的所有实例的同一静态变量都是同一个值,同一个类的不同实例的同一非静态变量可以是不同的值。静态函数的实现里不能使用非静态成员,如非静态变量、非静态函数等。 来源: https://www.cnblogs.com/dupeng0811/archive/2009/03/12/1409509.html

Java 数据存储

邮差的信 提交于 2020-03-12 16:37:12
寄存器register 最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制 最快的存储区(由编译器根据需求分配,无法从程序中控制) 位于处理器内部 数量有限 常量存储constant storage 存放字符串常量和基本类型常量(public static final) 常量值通常直接存放在程序代码内部 有时在嵌入式系统中,常量本身会和其他部分分割离开,所以在这种情况下,可以选择将其放在ROM中 (ROM,Read Only Memory,只读内存。一种只能读出事先所存数据的固态半导体存储器,它相当于PC机上的硬盘,用来存储和保存数据。RAM和ROM相比,两者的最大区别是RAM在断电以后保存在上面的数据会自动消失,而ROM就不会。) 静态存储区static storage 存放静态成员(static定义的)包括静态成员变量和静态成员方法(类方法) 静态是指“在固定的位置” 静态存储里存放程序运行时一直存在的数据 可用关键字static来标识一个对象的特定元素是静态的 但JAVA对象本身从来不会存放在静态存储空间里 重点注意: 静态方法中可以直接调用同类中的静态成员,但不能直接调用非静态成员。 如果希望在静态方法中调用非静态变量,可以通过创建类的对象,然后通过对象来访问非静态变量。 在普通成员方法中,则可以直接访问同类的非静态变量和静态变量。

区分类变量和实例变量

喜夏-厌秋 提交于 2020-03-12 08:45:04
想看重点的,可直接看人话部分。 变量分类: 一、根据数据类型分类: 1.基本数据类型 2.引用数据类型 二、根据类声明位置分类: 1.成员变量 (1)类变量 (2)实例变量 2.局部变量 三、区分类变量和实例变量: 首先要区分好类和对象!! - 官方话: 类 是对对象的抽象。 对象 是对客观事物的抽象。 类变量 也叫静态变量,也就是在变量前加了static 的变量。 实例变量 也叫对象变量,即没加static 的变量。 所有的实例对象都共用一个类变量,内存中只有一处空间是放这个类变量值的。 如果一个对象把类变量值改了,另外一个对象再取类变量值就是改过之后的了。 (静态变量并不是说其就不能改变值,不能改变值的量叫常量。 其拥有的值是可变的 ,而且它会保持最新的值。说其静态,是因为它不会随着函数的调用和退出而发生变化。即上次调用函数的时候,如果我们给静态变量赋予某个值的话,下次函数调用时,这个值保持不变。) - 人话: 类 是规则。 对象 是规则下的产品。 类变量 是规则的一部分。 实例变量 是产品的一部分。 一个规则在制定好了之后,类变量也被制定好了,已经存在。但是实例变量并没有被创生。 当第一个产品被创造出来的时候, 类变量 已经存在, 实例变量1 此时存在。 当第二个产品被创造出来的时候, 类变量 已经存在, 实例变量2 此时存在。 当第三个产品被创造出来的时候, 类变量

Java修饰符

拥有回忆 提交于 2020-03-12 07:46:13
访问权限修饰符 访问级别 同类 同包 子类 不同包 public Y Y Y Y protected Y Y Y N default Y Y N N private Y N N N protected 经常需要允许子类访问定义在父类中的数据和方法,但是不允许非子类访问这些数据和方法,这种情况下就可以使用protected,它允许任何包中的子类访问父类 default (缺省,什么也不写)在同一包内可见,不使用任何修饰符 实际上它限制的范围就是一个包内可以访问。如果不在一个包内,即使继承关系任然是不能访问的。它是针对本包访问而设计的 static static 修饰符,表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念。 用法:是一个修饰符,用于修饰成员(成员变量,成员函数),当成员被静态修饰后,就多了一个调用方式,除了可以被对象调用外,还可以直接被类名调,类名.静态成员。 存在:方法区,共享区,数据区(非堆内存、栈内存的另一个存储区),static块仅在该类被加载时执行一次。 特点:随着类的加载而加载,也就是说静态会随着类的消失而消失,说明他的 生命周期最长;优先于对象的存在 ,静态先存在,对象后存在; 被所有对象所共享;可以直接被类名调用。 static变量 ——也称作 静态变量