JAVA基础知识总结笔记

 

1.
栈与堆:
栈中用来存放一些原始数据类型的局部变量数据和对象的引用(String、数组、对象等等)但不存放对象内容。

堆中存放使用new关键字创建的对象。
字符串是一个特殊包装类,其引用是存放在栈里的,而对象内容必须根据创建方式不同定义(常量池和堆)。有的是编译期就已经创建好,存放在字符串常量池中,而有的是运行时才被创建。

2.
·java中的Set表示的是无重复的集合, List表示按索引进行排序, 有重复的集合.

·TreeSet集合会对加入其中的对象进行排序处理, 因此添加的元素必须实现Comparable接口, 否则执行add方法的时候会抛出异常
HashSet会根据集合元素的hashCode进行排序, 具有很好的存取性能, TreeSet会根据集合元素实现的Comparable接口进行排序,或者根据制定的Comparator排序规则进行排序

·添加到TreeSet中元素在被修改之后不会重新进行排序, 最适合排序的是不可变类(其属性不可修改)

·List会对集合中的元素按索引进行排序, 如果需要按自然方式或者自定义的方式排序, 可以通过Collections的sort(List), sort(List, Comparator)方法来处理


3.
java里使用线程的两种方式:
A。extends Thread类;其子类重写run()方法,
B.implements Runnable 接口。实现run()方法。

4.
数据类型 字节 表示范围 (1字节==8位)
byte(字节型) 1 -128~127
short(短整型) 2 -32768~32767
int(整型) 4 -2147483648~2147483647
long(长整型) 8 -9223372036854775808 ~ 9223372036854775807
float(浮点型) 4 -3.4E38~3.4E38
double(双精度型) 8 -1.7E308~1.7E308
char(字符型) 2 从字符型对应的整型数来划分,其表示范围是0~65535
boolean(布尔型) 1 true或false

5.
Mysql 数据库字段的加密与解密
字段的加密解密:*************
加密:
UPDATE   你的表   SET   加密字段=ENCODE( '123 ', '456 ');
解密:
SELECT   DECODE(加密字段, '456 ')   FROM   你的表

6.
java collection:
  如果涉及到堆栈,队列等操作,应该考虑用List,对于需要快速插入,删除元素,应该使用LinkedList,如果需要快速随机访问元素,应该使用ArrayList。尽量返回接口而非实际的类型。
* 只有HashMap可以让你将空值作为一个表的条目的key或value
*Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的    ,不是同步的

7.
匿名内部类:
匿名的内部类是没有名字的内部类。不能extends(继承) 其它类,但一个内部类可以作为一个接口,由另一个内部类实现
* &是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)


8.
Overload and Override:
Overload[同一类中同名方法]和Override[父子类间]的区别。Overloaded的方法是否可以改变返回值的类型
答:方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型

9.
Set:
Set里的元素是不能重复的,那么用iterator()方法来区分重复与否。equals()是判读两个Set是否相等
    equals()和==方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值

10.
abstract class and interface:
声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能有抽象构造函数或抽象静态方法。
* 接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。

11.
* String类是final类故不可以继承
* 接口可以继承接口。抽象类可以实现(implements)接口,抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数

12.
用最有效率的方法算出2乘以8等於几
答:2 << 3,位移是二进制运算

13.
java值传递:
Java 编程语言只有值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的

14.
switch:
switch(expr1)中,expr1是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是 int、 short、 char 或者 byte。long,string 都不能作用于swtich。

15.
ArrayList和Vector的区别,HashMap和Hashtable的区别:
答:就ArrayList与Vector主要从二方面来说.
一.同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的
二.数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半
就HashMap与HashTable主要从三方面来说。
一.历史原因:Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现
二.同步性:Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的
三.值:只有HashMap可以让你将空值作为一个表的条目的key或value

16.
char型变量中能不能存贮一个中文汉字?为什么?
答:是能够定义成为一个中文的,因为java中以unicode编码,一个char它能存储四个字节而每个汉字只占两个字节,所以放一个中文是没问题的


17.
介绍JAVA中的Collection FrameWork(包括如何写自己的数据结构)?
答:Collection FrameWork如下:
Collection
├List【有序】
│├LinkedList
│├ArrayList
│└Vector【同步】
│ └Stack
└Set【无序】
   |-HashSet[实际上是一个HashMap的实例] 
Map
├Hashtable【同步】
├HashMap
└WeakHashMap
Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)
Map提供key到value的映射

18.
抽象类与接口?
答:抽象类与接口都用于抽象,但是抽象类(JAVA中)可以有自己的部分实现,而接口则完全是一个标识(同时有多重继承的功能)。

19.
* final—修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。
* finalize—方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。

20.
多态性:
多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。

21.
java基本数据类型:
基本数据类型包括byte、int、char、long、float、double、boolean和short。
java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。

22.
heap[堆]和stack【栈】有什么区别
栈是一种线形集合,其添加和删除元素的操作应在同一段完成。栈按照后进先出的方式进行处理。堆是栈的一个组成元素。

23.
描述一下JVM加载class文件的原理机制?
答:JVM中类的装载是由ClassLoader和它的子类来实现的,Java ClassLoader 是一个重要的Java运行时系统组件。它负责在运行时查找和装入类文件的类。


24.
java Exception:
java的异常处理是通过5个关键词来实现的:try、catch、throw、throws和finally。
throw语句用来明确地抛出一个"异常"。
throws用来标明一个成员函数可能抛出的各种"异常"。

25.
什么是java序列化,如何实现java序列化?
序列化就是一种用来处理【对象流】的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题。
序列化的实现:将需要被序列化的类实现Serializable接口,该接口没有需要实现的方法,implements Serializable只是为了标注该对象是可被序列化的,然后使用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流。

26.
4). super();this();这两个方法只能在构造方法里调用.
5). 成员变量声明时候赋值,比构造函数还早.
 

27.
描述使用JDBC连接数据库的过程  
  Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");  
  String   url   =   "jdbc:obdc:mydb";  
  Connection   con   =   DriverManager.getConnection(url);  
  Statement   stmt   =   con.createStatement();  
  ResultSet   rs   =   stmt.execte("select   *   from   mytable");  

28.
Java中有几种方法可以实现一个线程?
答:有两种实现方法,分别是继承Thread类与实现Runnable接口
同步的实现方面有两种,分别是synchronized,wait与notify

29.
1.说一说Servlet的生命周期?
答:servlet有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。这个生存期由javax.servlet.Servlet接口的init,service和destroy方法表达。 Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。
与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。

30.
java访问修饰符:
2.访问修饰符“public/private/protected/缺省的修饰符”的使用类?
public :  公共,均可访问
private:  私有的,同一个java类中可以访问.子类不能访问.
protected: 同一个包中的类都可访问.子类可以访问.
缺省,friendly :当前类,同一个包,都可以访问.


31.
java随机数  java.Math.*;
static double|| random()
          返回带正号的 double 值,该值大于等于 0.0 且小于 1.0。
static double|| rint(double a)
          返回最接近参数并等于某一整数的 double 值。
static long || round(double a)
          返回最接近参数的 long。
static int || round(float a)
          返回最接近参数的 int。

32.
java.io.*; java文件读写
try {
   FileOutputStream fos = new FileOutputStream("shushu.txt");//
   /*fileOutputStream("文件名或路径")如果不存在将自动创建一个文件,但不能自动创建路径
   因方法此方法只能默认创建在根目录上,若指定了物理路径则在物理路径的根目录 h,若无只是文件名
   则在项目工程的根目录下
   */
   OutputStreamWriter osw = new OutputStreamWriter(fos);
   bw = new BufferedWriter(osw);
   bw.write(sb.toString());
  } catch (Exception e) {
   e.printStackTrace();
  }

33.
**:java中equals和==的区别
值类型是存储在内存中的堆栈(以后简称栈),而引用类型的变量在栈中仅仅是存储引用类型变量的地址,而其本身则存储在堆中。
==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。
equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。

==比较的是2个对象的地址,而equals比较的是2个对象的内容。
显然,当equals为true时,==不一定为true;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值