随笔分类 - java
java中的@Override
摘要:java编程中的一个比较有用的工具注释----@Override被该注释修饰的方法必须重写父类的方法。为了避免在编程过程中出现的手误,每当希望某个方法重写父类方法时总应该为该方法添加该注释。如果添加该注释的方法没有重写父类方法,编译该程序时提示编译错误。
阅读全文
String的缓存池问题
摘要:String的简单说明:string类是不可改变的,对String的任何改变都是返回一个新的String对象。String缓存池:为了提高效率java引用了字符串池的概念。如果池中存在,就会直接调用。创建字符串的三类方式:1、String s=new String(“abc”);2、直接指定:String s=“abc”;3、用字符串生成新的字符串:String s=“ab”+c;String对象创建的原理:(1)、当使用任何一种方法创建一个字符串对象s时,java运行时会拿这个s在string池中找是否存在相同的内容的字符串对象,如果不存在,则在池中创建一个字符串s,否则,不在池中添加。(2
阅读全文
实例变量和类变量
摘要:java中的变量:成员变量: 在类体内定义的变量局部变量: (1)形参(2)方法内的局部变量(3)代码块中的局部变量什么是实例变量?定义成员变量时没有用static修饰,此时的成员变量叫做实例变量也称非静态变量。什么是类变量?定义成员变量时用static修饰,此时的成员变量叫做类变量。类变量和实例变量的初始化时机: 实例变量初始化时机: (1)定义实例变量时对实例变量进行初始化 (2)在非静态代码快中对实例变量进行初始化 (3)在构造函数中对实例变量进行初始化注意: (1)和(2)的初始化的先后顺序同他们在程序中的顺序相同。 (3)在(1)(2)之后 类变量的初始化时机: (1)定义类变量..
阅读全文
return与finally的几种组合情况
摘要:情况一:return在try块中: 先执行finally块,在执行return语句。情况二:return在try块中,finally块中也有return语句:finally语句中的return的返回值会把try块中的return的返回值覆盖。情况三:finally内改变返回值的value但不返回继续修改。如果finally语句中没有返回语句覆盖的话,那么原来的返回值就不会变,不管你是不是改变了要返回的那个变量。情况四:在try,finally外,返回一个值,如果try,finally内已经有return则外部的return不会起作用。总结:碰到try语句中的return,先把return的值放
阅读全文
数组的协变性与范型的不可变性
摘要:1、数组的协变性是指: base类是sub类的基类,那么base[]也是sub[]的基类。数组是在运行时才去判断数组元素的类型约束数组的协变性会导致一些错误:编译时可以通过但是运行时会报异常(ArrayStoreException)。public static void main(String[] args) { Object[] array = new String[10]; array[0] = 10; }因为数组是协变的,Object是String的基类,Object[]类型的引用可以指向一个String[]类型的对象 。 2、 泛型不是协变的,在运行时...
阅读全文
经典String str = new String("abc")创建了几个对象?(转)
摘要:[Csharp]view plaincopyStringstr1="abc";Stringstr2=newString("abc");有啥区别Java把内存划分成两种:一种是栈内存,一种是堆内存。 在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配。 当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放掉为该变量所分配的内存空间,该内存空间可以立即被另作他用。 堆内存用来存放由new创建的对象和数组。 在堆中分配的内存,由Java虚拟机的自动垃圾回收器来管理。 在堆中产生了一个
阅读全文
浙公网安备 33010602011771号