静态变量

transient关键字

隐身守侯 提交于 2020-02-03 04:10:13
transient 关键字用于 Serializable 接口下, 被 transient 关键字修饰的变量不能序列化, 静态变量无论用不用transient 修饰都不能被序列化 来源: CSDN 作者: 小矮多 链接: https://blog.csdn.net/nefss_/article/details/104143449

ARTS第七周打卡

允我心安 提交于 2020-02-02 17:24:17
1.Algorithm    https://leetcode-cn.com/problems/median-of-two-sorted-arrays/ 2.Review https://programtalk.com/java/top-corejava-interview-questions/ equals()和hashCode()使用时的约定规则。 equals()和hashCode()在集中中的使用。 List、Set、Map的特点和性能对比。 描述Java集合、接口和实现,LinkedList和ArrayList的区别是什么? 原始类型和包装器类型的区别?什么是自动装箱? final和static的用途及使用方法。 Java中的访问修饰符。 String、StringBuilder、StringBuffer之间的区别。 接口和抽象类之间的区别。 覆盖和重载之间的区别。 异常类型和"处理或声明"规则:异常类型有:Checked Exceptions、Error、Runtime Exceptions。 垃圾收集器是怎么工作的? 怎么使类不可变,这有什么意义? 什么是JIT编译? Java7/8有什么新特性?Java9又会什么呢? 3.Tips   kill -9 与 kill -15区别 1)(kill pid) 、( kill -15 pid)

static关键字详解

南笙酒味 提交于 2020-02-01 02:58:02
首先,要了解一下这些东西的存放位置 堆区: 1.存储的全部是对象,每个对象都包含一个与之对应的class的信息。(class的目的是得到操作指令) 2.jvm只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本身 栈区: 1.每个线程包含一个栈区,栈中只保存基础数据类型的对象和自定义对象的引用(不是对象),对象都存放在堆区中 2.每个栈中的数据(原始类型和对象引用)都是私有的,其他栈不能访问。 3.栈分为3个部分:基本类型变量区、执行环境上下文、操作指令区(存放操作指令)。 方法区: 1.又叫静态区,跟堆一样,被所有的线程共享。方法区包含所有的class和static变量。 2.方法区中包含的都是在整个程序中永远唯一的元素,如class,static变量。 还有补充的一点,有这样一个步骤: 加载->链接(验证+准备+解析)->初始化(使用前的准备)->使用->卸载 一、静态内部类 为什么只有静态内部类而没有静态外部类? 答:因为Jvm的类加载器在加载类时,会判断是否有静态变量,静态方法,和静态内部类,如果存在,则将其加载到方法区(方法区中所有东西都只有一个,即不会重复),静态内部类的作用是可以在外部不需要实例化,而通过类名.内部类名直接调用,而外部静态类是没有必要的,因为static的作用时间是类加载时才被加载,而此时外部类已经在被加载

java static关键字

烈酒焚心 提交于 2020-02-01 02:30:57
static 静态的可以修饰属性、方法、代码块 static修饰属性(类变量) 1.由类创建的所有对象,都共享这个属性 2.如果其中一个对象对属性值发生改变会导致其他对象属性值跟着改变 3.类变量随着类的加载而加载独一份 4.静态变量可以直接通过"类名.类变量"的方式调用 5.类变量存在静态域中,不存在堆中,存在堆中的都是实例变量 6.类变量的加载要早于对象 static修饰方法() 1.随着类的加载而加载 2.可以通过"类名.方法名"的方式调用 3.内部可以调用静态方法或者静态属性,不能调用(注意是调用静态方法外的)非静态方法非静态变量,非静态方法可以 调用静态方法和静态变量 注意:静态方法不能使用this或super关键字 static可以修饰代码块 只要在静态代码块里面定义的变量都是静态变量 来源: CSDN 作者: jzbx 链接: https://blog.csdn.net/qq_41787492/article/details/103983421

c++堆,栈的存储方式及代码内存分配

天大地大妈咪最大 提交于 2020-01-31 22:32:25
使用对象指针 C语言中经典的指针在 C++ 中仍然广泛使用,尤其是指向对象的指针,没有它就不能实现某些功能。 Student stu ; Student * pStu = & stu ; 上面代码中创建的对象 stu 在栈上分配内存,需要使用&获取它的地址,例如: Student stu;Student *pStu = &stu; pStu 是一个指针,它指向 Student 类型的数据,也就是通过 Student 创建出来的对象。 当然,你也可以在堆上创建对象,这个时候就需要使用前面讲到的new关键字(C++ new和delete运算符简介),例如: Student *pStu = new Student; 在栈上创建出来的对象都有一个名字,比如 stu,使用指针指向它不是必须的。但是通过 new 创建出来的对象就不一样了,它在堆上分配内存,没有名字,只能得到一个指向它的指针,所以必须使用一个指针变量来接收这个指针,否则以后再也无法找到这个对象了,更没有办法使用它。也就是说,使用 new 在堆上创建出来的对象是匿名的,没法直接使用,必须要用一个指针指向它,再借助指针来访问它的成员变量或成员函数。 栈内存是程序自动管理的,不能使用 delete 删除在栈上创建的对象;堆内存由程序员管理,对象使用完毕后可以通过 delete 删除。在实际开发中,new 和 delete 往往成对出现

JVM学习之类的加载连接和初始化过程详解

…衆ロ難τιáo~ 提交于 2020-01-31 00:18:12
闲言少叙,先说知识点 1.JAVA程序对类的使用方式可分为主动使用使用和被动使用两种 2.所有的Java虚拟机实现必须在每个类或接口被Java程序“首次主动使用”时才初始化他们 3.类的加载、连接和初始化中主动使用分为以下七种 (1)、创建类的实例 (2)、访问某个类或接口的静态变量,或者对该静态变量赋值 (3)、调用类的静态方法。 (4)、反射。 (5)、初始化一个类的子类(算是对父类的主动使用)。 (6)、Java虚拟机启动时被表明为启动类的类(Java Test) (7)、JDK1.7开始提供的动态语言支持(了解)。 4.除上面七种之外,都被视为类的被动使用,不会被初始化。 5.类的加载指的是将.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内然后在内存中创建一个java.lang.Class对象(规范未说明Class对象位于哪里,HotSpot虚拟机将其放在方法区中)用来封装类的方法区内的数据结构 6.加载.class文件的方式(一般从磁盘中),还可以从网上下载、从压缩包中、将Java源文件动态编译为.class文件等方式。 如果以上的内容你不理解,先忘掉它,咱们看两个例子 No1: public class Main { public static void main(String args[]){ System.out.println

面试-Java 基础面试题

℡╲_俬逩灬. 提交于 2020-01-30 12:10:24
---------------------------------------Java 基础面试题 1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致。 2、Java有没有goto? java中的保留字,现在没有在java中使用。 3、说说&和&&的区别。 &和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。 &&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式。 &还可以用作位运算符,当&操作符两边的表达式不是boolean类型时,&表示按位与操作。 4、在JAVA中如何跳出当前的多重嵌套循环? 在Java中,要想跳出多重循环,可以在外面的循环语句前定义一个标号,然后在里层循环体的代码中使用带有标号的break语句,即可跳出外层循环。 5、switch语句能否作用在byte上,能否作用在long上,能否作用在String上? 在switch(expr1)中,expr1只能是一个整数表达式或者枚举常量(更大字体),整数表达式可以是int基本类型或Integer包装类型,由于,byte,short,char都可以隐含转换为int

类和对象的认识

北战南征 提交于 2020-01-30 05:36:12
1.定义String型变量 s没有初始化,进行如下操作,代码不能编译通过。 public static void main(String[] args){ String s; System.out.println(“s=”+s); } 2.对静态变量的引用的两种方式: (1)类.静态变量 (2)对象.静态变量 3. boolean 默认初始值false 4. 方法中不能定义static变量 5. 一个类中已经使用 private 来修饰的变量, 类的调用者(main方法中)不能直接使用,可以再这个类中次写一个方法,然后再在main方法中调用这个方法。 来源: CSDN 作者: star9523 链接: https://blog.csdn.net/star9523/article/details/104106384

C#中的静态变量与非静态变量

亡梦爱人 提交于 2020-01-30 01:39:35
一:为什么要有静态变量 C#中没有全局变量的概念,所有的变量必须由该类的实例进行操作,这样做是为了提升安全性,但是有些时候会显得很不方便,所以引入了静态变量 二:静态变量与非静态变量的区别 ——静态变量是通过类名去访问的 非静态变量是当该变量所在的类被实例化后,通过实例化的对象名访问 ——静态变量在应用程序初始化时,就存在于内存当中,直到它所在的类的程序运行结束时才消亡。而非静态变量需要被实例化后才会分配内存 ——静态变量生命周期为应用程序的生命周期。非静态变量的生命周期取决于实例化的类的生命周期 ——静态变量是全局变量,被所有类所共享,即一个类中改变了这个静态变量后,其他类读到的就是变化后的值。非静态变量是局部变量,不共享改变的值 来源: CSDN 作者: LLLLL__ 链接: https://blog.csdn.net/LLLLL__/article/details/104106156

PHP常用原生函数总结(不定期更新)

五迷三道 提交于 2020-01-29 17:44:30
1.var_dump() 用于输出变量的相关信息 在后面有应用 2.unset() 用于销毁给定的变量 如果在函数中 unset() 一个全局变量,则只是局部变量被销毁,而在调用环境中的变量将保持调用 unset() 之前一样的值。 如果想在函数中 unset() 一个全局变量,可使用 $GLOBALS 数组来实现 function foo() { unset($GLOBALS['bar']); } $bar = "something"; foo(); 如果在函数中 unset() 一个静态变量,那么在函数内部此静态变量将被销毁。但是,当再次调用此函数时,此静态变量将被复原为上次被销毁之前的值。 比如下面这个例子: function foo() { static $bar; $bar++; echo "Before unset: $bar, "; unset($bar); $bar = 23; echo "after unset: $bar\n"; } foo(); foo(); foo(); 输出的结果为: Before unset: 1, after unset: 23 Before unset: 2, after unset: 23 Before unset: 3, after unset: 23 3.explode() 字符串转换为数组 例如: $a="I come