Java基础知识点备忘

static

1、静态域

用static修饰的域是仅属于类的静态域,静态域是类中每个对象共享的域;他们是类的域,不属于任何一个类的具体对象;静态域是一个公共的存储单元,任何一个类的对象访问它时,取到的都是相同的数值,因此static代码块可以优化程序性能。

2、静态方法

用static修饰的方法叫类方法也叫静态方法;静态方法和静态变量一样,不许创建类的实例,可以直接通过类名被访问;无法使用protected和abstract关键字;在静态方法中不能访问非静态成员方法和非静态成员变量,但是在非静态成员方法中是可以访问静态方法和静态变量

3、静态代码执行顺序

public class Test {
    Person person = new Person("Test");
    static{
        System.out.println("test static");
    }

    public Test() {
        System.out.println("test constructor");
    }

    public static void main(String[] args) {
        new MyClass();
    }
}

class Person{
    static{
        System.out.println("person static");
    }
    public Person(String str) {
        System.out.println("person "+str);
    }
}

class MyClass extends Test {
    Person person = new Person("MyClass");
    static{
        System.out.println("myclass static");
    }

    public MyClass() {
        System.out.println("myclass constructor");
    }
}

static语句的执行是在第一次加载类信息的时候,static 语句和 static 成员变量的初始化会先于其他语句执行,而且只会在加载类信息的时候执行一次,以后再访问该类或new新对象都不会执行

Java代码中父类和子类中,static变量,成员变量,构造函数三者的调用先后顺序:

先初始化父类Static --> 再初始化子类的Static -->  再初始化父类的其他成员变量->父类构造方法->子类其他成员变量->子类的构造方法。

所以例子输出的结果为:

test static
myclass static
person static
person Test
test constructor
person MyClass
myclass constructor

final

1、最终域

用final修饰的域,实际上就是Java中的常量,final变量必须被显式的初始化,并且只能初始化一次

2、最终方法

用final修饰的方法是最终方法,最终方法是不能被当前类的子类重写的方法

3、最终类

如果一个类被final修饰,这个类不能有子类

异常

无论在try部分或者catch部分成功return,finally语句部分一定会执行;如果在这个语句块中如果return成功,则同一方法的return不会执行;finally不允许return。

自定义异常类需要继承Exception类

throws使用在方法头,声明可能发生以上异常并抛出;throw使用在方法内,执行throw则一定抛出了某种异常

String

String 类是java.lang下所提供的类,并不是 java的基本数据类型;一个字符串对象一旦被创建,它的内容就是固定不变的;如果程序对这种附加字符串的需求很频繁,会消耗很大资源

StringBuffer类和String一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和String不同,所以StringBuffer在进行字符串处理时,不生成新的对象,在内存使用上要优于String类

String a,String a = null, String a =""的区别

String a; 申明一个string类型的 a,即没有在申请内存地址,更没有在内存任何指向引用地址

String a = null ; 申明一个string类型的 a,同时在内存里申请了一个地址,但是该地址不指向任何引用地址

String a = "" ;申明一个string类型的 a,既在内存里申请了地址,该地址又指向一个引用该字符串的引用地址

Math类是final的,其中所有方法都是static的。

ArrayList 是一个数组队列,相当于动态数组。它由数组实现,随机访问效率高,随机插入、随机删除效率低。对于需要快速随机访问元素,应该使用ArrayList。
LinkedList 是一个双向链表。它也可以被当作堆栈、队列或双端队列进行操作。LinkedList随机访问效率低,但随机插入、随机删除效率低。对于需要快速插入,删除元素,应该使用LinkedList。
Vector 是矢量队列,和ArrayList一样,它也是一个动态数组,由数组实现。但是ArrayList是非线程安全的,而Vector是线程安全的。对于“单线程环境” 或者 “多线程环境,但List仅仅只会被单个线程操作”,此时应该使用非同步的类(如ArrayList)。对于“多线程环境,且List可能同时被多个线程操作”,此时,应该使用同步的类(如Vector)。

Stack 是栈,它继承于Vector。它的特性是:先进后出(FILO, First In Last Out)。

时间: 2024-11-04 20:41:40

Java基础知识点备忘的相关文章

java基础知识备忘

1.java内存分配 a.寄存器cup -- 暂不涉及 b.本地方法栈  -- 虚拟机调用windows功能用的,比如创建文件夹 c.方法区  -- 存放 .class文件,负责存放方法 d.栈 -- 负责运行方法(运行时从方法区拷贝一份到栈) e.堆     -- 创建并存放对象(new出来的对象) 2.栈和堆的区别 a.存储内容   栈-方法 堆-对象 b.默认值 栈-无默认值 堆-有默认值 (所以成员变量不需初始化赋值,局部变量必须赋值 ) c.生命周期 栈-方法执行完毕弹出 堆-对象使用

Phalcon 知识点备忘

phalcon 毕竟无法看到源代码,有些小设置还是需要实践记忆. 一.如何调用config.php里面的配置 很多时候,我们习惯将全局的配置参数放入主配置文件中,比如分页数.比如appkey之类. 'params' => array(  //加入config.php中,那controller中如何调用呢 'limit' => 10, ) 想要在controller中调用,可以通过services.php $di->set('main_config', $config); //将配置文件作

JAVA基础知识点总结(全集)

1.JAVA简介 1.1java体系结构:j2se,javaweb,j2ee 1.2java特点:平台无关(虚拟机),垃圾回收(使得java更加稳定) 1.3 JDK与JRE,JDK:java开发环境,JRE:java运行环境 1.4第一个java程序:HelloWorld,java的入口是main(public static void main(String[] args)) 1.5java程序的开发步骤:.java编译(javac)成.class运行(java).class文件 2.基本数据

java基础知识点回顾

java基础数据类型 bollean 1 char 2 byte 1, short 2 , int 4, long 8 float 4, double 8 ----------------------------------------------------- java 四大特征 抽象,封装,继承,多态 ---------------------------------------------------- override 和 overload override(重写):子类重写父类方法体,

java基础知识点

1.Java语言的特点是什么? 简单性,面向对象的语言,一种与平台无关的语言,健壮性和安全性,多线程,垃圾回收机制: 2.如何编译和执行java文件?产生帮助文档用什么命令? 编译: javac   文件名 执行:java    类名 产生帮助文档:   javadoc  文件名 3.虚拟机的工作流程是什么? 编写源文件*.java---通过javac将源文件编译成字节码文件*.class 类加载------字节码效验-------解释器------操作系统 4.Jdk和jre是什么?main方

Java基础知识点总结

转:http://my.oschina.net/u/267295/blog/52716 写代码: 1,明确需求.我要做什么? 2,分析思路.我要怎么做?1,2,3. 3,确定步骤.每一个思路部分用到哪些语句,方法,和对象. 4,代码实现.用具体的java语言代码把思路体现出来. 学习新技术的四点: 1,该技术是什么? 2,该技术有什么特点(使用注意): 3,该技术怎么使用.demo 4,该技术什么时候用?test. ----------------------------------------

java基础知识点总结 1

>标示符: 所有的名字 和同类区分 方便调用       命名规则:由数字字母_$组成 不能以数字开头 区分大小写 不能是java关键字 命名规范:尽量增加可读性 类名:所有单词首字母大写 变量名/方法名:除了第一个单词 其他单词首字母大写 final常量: 所有字母大写 >关键字:java中被赋予特殊含义的单词或者字符 static void byte short int long float double boolean char protected private public stat

【Java基本功】很多人经常忽视的Java基础知识点

*.Java文件 问题:一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 答案:可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致.一个文件中可以只有非public类,如果只有一个非public类,此类可以跟文件名不同. 为什么一个java源文件中只能有一个public类? 在java编程思想(第四版)一书中有这样3段话(6.4 类的访问权限): 1.每个编译单元(文件)都只能有一个public类,这表示,每个编译单元都有单一的

Java基础知识点1

运算符 运算符的分类: 算术运算符 赋值运算符 关系运算符 逻辑运算符 位运算符 三目运算符 自增自减运算符:++i:i先自加,再做其他运算:i++先运算再自加: --i先自减再做其他运算:i--先运算再自减: 赋值运算符 = : 这个等于号在Java中表示赋值的意思,真正数学意义上的相等是 == 在JavaScript当中还有 ===,表示类型和数值都相等   扩展赋值运算符: +=   -=   *=   /=   %= (使用扩展赋值运算符系统会自动帮我们强制类型转换) *关系运算符的结果