java基础知识(二)

1、关于static关键字总结:

1、不能在static修饰的方法中引用this变量,只能引用一些静态变量或方法,或new新的对象(可以定义局部变量)。

简言之,静态方法或块中,只能引用静态的方法或变量。

2、类中的成员变量(static修饰)有缺省值,而类的定义的方法中的局部变量没有缺省值。

3、在类的构造器中,可以引用任何的静态或非静态的变量和方法,可以在非static方法中调用static方法。

4、static{}块中的代码在类装载中仅执行一次。

5、在7-7,A staticmethod cannot be overridden but can be hidden. 不理解。

6、不能在无论非static方法中或static方法中定义static变量。

2、关于类的构造器重载问题

class A{

public A(int i){

}

}

class AAextends A{

publicAA(){

int i = 5; // 这里出错,没有父构造器

}

}

由于父类A自定义了构造器,所以缺省的构造器就丢失了,当子类的构造器自动试图调用父类没参数的构造器时却没有,所以会编译出错。

3、关于final关键字

1、不能继承final修饰的类,不能覆盖final修饰的方法。

2、final修饰的变量,若没赋值,必须在构造器中赋初始值。

class A{

final int j;

public A(){

j = 9;//若没有此行,则编译不通过。

}

}

3、final类型的方法参数可定义,但不能改变。

class A{

void m(final int i){ //这一行的声明i为一个final没问题。

i ++ ; //但在这里面,i的值不能再被改变。

}

}

4、集合类型

以有无顺序,允许不允许重复区分

Collections: 一组对象,无序集合,允许重复

Set:无序集合,不允许重复

List:有序集合,允许重复

注意:在JDK1.1中定义的集合类型,都是线程安全的,所以都是“重量级”的。像HashTable,Vector

而在java2中定义的一些新的集合类型如HashMap,ArrayList不是线程安全的,是“轻量级”的,但速度快,性能好。这一点在许多公司面试试题都见过。

5、abstract抽象关键字

abstractclass A{

private int i;

private void m();{}

}

抽象类中可以有私有的变量和私有属性,而接口就不行(原因如上),

这是因为java是按实例虚拟调用的,在生成某一个具体的对象可以有私有的属性或方法的。

abstractclass A{

private int i;

private void m(){};

public abstract void n();//若是private则编译不通过。

}

抽象类中的抽象方法是让其他类继承的,如果本身都是私有的,就没有什么意义了

6、Interface接口关键字

1、接口中的变量

1、必须初始化其值。

2、默认修饰符为public+static+final,其他的修饰符不允许。

2、接口中的方法

1、默认为public+abstract

2、其它修饰符 static,private,protected,final,synchronized,native均不能有。

interfaceA{

void s();

}

class AAimplements A{

void s(){ //编译器在这里提示由于接口中的方法s()修饰符默认是public,

//而这里的s()默认是protected,小于public所以不允许。

}

}

7、线程部分

1、基本实现方式两中,继承Thread类和实现Runnable接口

2、必须实现父类或接口中的run()方法。

3、有关线程方法,start()启动线程。

join()指在调用这个线程的方法或进程中,必须等待此线程运行结束才能继续其他进程。

4、线程中的同步synchronized,注意死锁。

8、Applet部分

1、使用代码

<applet code = "a.class"width=100 height=200>

<param name=a vlaue"11">

</applet>

2、可以覆盖的方法init(),start(),stop(),destory(),paint(g)

9、布局管理器

FlowLayout,BorderLayout,GridLayout,CardLayout

关于Panel和Frame默认的Layout常在一些公司的面试试题中出现。

1、Panel和Applet类默认的布局管理器是FlowLayout 一个一个的加上去

2、Frame和window类默认的布局管理器是BorderLayout 按东南西北加入

3、xyLayout是Borland公司开发的布局管理器。

10、对象串行化

1、仅仅对象类型的数据可以串行化。

2、标记为transient的数据不可以串行化。

存储一个对象到某种永久性存储叫persistence,如存储到磁盘、磁带或别的机器的内存中。

java.io.Serializable接口没有定义方法要实现,仅仅是一个标记暗示实现了这个接口的类可以被考虑串行化。没有实现这个接口的对象不能保存或存储它们的状态。

当一个对象被串行化的时候,仅仅数据被保留,而方法和构造器不是串行化的部分。

一些对象类是不能串行化的因为他们代表的数据是经常变化的。如java.io.FileInputSream和java.langThread。如果串行化的对象包含了不可串行化的对象,整个串行化动作会失败,并抛出NotSerializableException。

文章整理自长沙软件培训,转载请注明出处:http://www.cshope.net/xueyuanjianjie/

java基础知识(二),布布扣,bubuko.com

时间: 2024-12-26 20:58:17

java基础知识(二)的相关文章

Java基础知识(二)

1,字符串 new String("abc")创建了几个对象? 一个或两个,如果常量池中原来有"abc",则只创建一个对象:如果常量池中原来没有字符串"abc",那么就会创建两个对象. String s="abc"; String s1="ab"+"c"; System.out.println(s==s1); 输出 true ,因为"ab"+"c"

Java基础知识二次学习-- 第一章 java基础

基础知识有时候感觉时间长似乎有点生疏,正好这几天有时间有机会,就决定重新做一轮二次学习,挑重避轻 回过头来重新整理基础知识,能收获到之前不少遗漏的,所以这一次就称作查漏补缺吧!废话不多说,开始! 第一章  JAVA简介 时间:2017年4月24日10:23:32 章节:01章_02节 内容:jdk的配置与安装 完成情况:已经完成,cmd中javac提示出相关命令 时间:2017年4月24日10:30:39 章节:01章_04节 内容:输出HelloWorld 完成情况: 已经完成 javac先将

Java基础知识二次学习-- 第二章 基础语法与递归补充

第二章 基础语法与递归补充   时间:2017年4月24日10:39:18 章节:02章_01节,02章_02节 视频长度:49:21 + 15:45 内容:标识符,关键字与数据类型 心得:由字母,下划线,$,数字组成,应该由字母,下划线$开头,同时应该避开java保留字符 变量是内存中的一小块区域,使用变量名来访问这块区域 执行过程中的内存管理(疑问:这里的内存和Jvm的一样吗?) code segment 存放代码 data segment 静态变量 字符串常量 stack 栈 局部变量 h

Java基础知识二次学习--第五章 数组

第五章 数组 时间:2017年4月26日15:11:30~2017年4月26日15:15:54 章节:05章_01节  视频长度:09:30 内容:一维数组的内存分析 心得: Java中数组是引用类型 栈里面存的数组的引用 实际对象在堆内存里面 (C与C++是分配在栈里的) 内存图: 元素为引用数据类型的数组 引用类型的数组如上图 时间:2017年4月26日15:16:22~2017年4月26日15:19:00 章节:05章_02节  视频长度:05:25 内容:数组元素的创建与使用 心得: 首

Java 基础知识(二)之面向对象技术

1.    面向对象与面向过程的区别 面向对象把数据及对数据的操作方法放在一起,作为一个互相依存的整体,即对象.对同类对象抽象出其共性,即类,类中的大多数数据,只能被本类的方法进行处理.类通过一个简单的外部接口与外界发生关系,对象与对象之间通过消息进行通信.程序流程由用户在使用中决定. 面向过程是一种以事件为中心的开发方法,就是自顶向下顺序执行,逐步求精,其程序结构是按功能划分为若干个基本模块,这些模块形成一个树状结构,各模块之间的关系也比较简单,在功能上相对独立,每一模块内部一般是由顺序.选择

Java基础知识二次学习--第四章 异常

第四章 异常处理 时间:2017年4月26日11:16:39~2017年4月26日11:28:58 章节:04章_01节 04章_02节 视频长度:20:46+01:16 内容:异常的概念 心得: Java异常是JAVA提供的用于处理程序中错误的一种机制 实在运行的过程中发生的一些异常事件(比如除0溢出,数组越界,要读取的文件不存在) 设计良好的程序应该在异常发生时提供处理这些错误的方法,使得程序不会因为异常的发生而阻断或产生不可预见的结果 JAVA程序的执行过程中 如果出现异常事件,可以生成异

Java基础知识二次学习--第八章 流

第八章 流   时间:2017年4月28日11:03:07~2017年4月28日11:41:54 章节:08章_01节 视频长度:21:15 内容:IO初步 心得: 所有的流在java.io包里面 定义了多个流类型(类或抽象类)来实现输入/输出功能 可以从不同的角度对其进行分类 按数据流的方向不同可以分为输入流和输出流 按处理数据单位不同可以分为字节流和字符流 按照功能不同可以分为节点流和处理流 jdk中所提供的的所有流类型位于包Java.io内都分别继承自以下四种抽象流类型 输入流 Input

java 基础(二)

java 基础(二)java 基础(二) 2016-2-1 by Damon 61. 编写多线程程序有几种实现方式 Java 5以前实现多线程有两种实现方法:一种是继承Thread类:另一种是实现Runnable接口.两种方式都要通过重写run()方法来定义线程的行为,推荐使用后者,因为Java中的继承是单继承,一个类有一个父类,如果继承了Thread类就无法再继承其他类了,显然使用Runnable接口更为灵活. 补充:Java 5以后创建线程还有第三种方式:实现Callable接口,该接口中的

JAVA基础知识整理

一.首先先明白get与post的基本定义和区别: 这是两种在客户端和服务器端进行请求-响应的方法. 1get:从指定的资源请求数据. 2post:向指定的资源提交要处理的数据. get基本上用于从服务器取回数据,注意:get方法可能返回缓存数据. post可以从服务器上获取数据,不过,post方法不会缓存数据,并且常用语连同请求一起发送数据. 二. Jquery $.get()方法. $.get()方法通过Http Get发起请求,从服务器上请求数据. 语法:&.get(URL,callback