当前位置:文档之家› java知识点梳理

java知识点梳理

java知识点梳理
java知识点梳理

第一部分

JA V A SE

1.异常与一般异常有何异同?

解答:异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。

2.error和exception有什么区别:

error表示系统级的错误和程序不必处理的异常,是恢复不是不可能但很困难的情况下的一种严重问题;比如内存溢出,不可能指望程序能处理这样的情况;exception表示需要捕捉或者需要程序进行处理的异常,是比较轻微的是一种设计或实现问题;也就是说,它表示如果程序运行正常,从不会发生的情况。

知识点:

Error:重大问题,通过修改代码不能快速解决问题

Eception:较小的问题,可通过修改代码快速解决问题

异常的种类有捕获异常和未捕获异常。捕获异常是编译时报错,未捕获异常时编译时没有报错。

执行时报异常决解异常有两种方法:

一种是try_cath,语法是try{有可能发生异常的代码}catch(异常类名对象名){发生异常时解决异常的代码} try后可以跟多个catch或一个finally.

注意:return 与finally的关系:永远先finally再return,finally前有System.exit(1);则finally 不执行

另一种throws关键字抛出异常,语法是在产生异常的语句所在的函数后加throws 所产生异常的类名===擅于解决捕获异常(编译时报的异常)

此处理方法,只是将异常抛给上级调用函数,直至抛到main函数交给JVM 但是不处理如何产生异常?一是编码时语句操作有误,产生异常;二是用throw关键字throw new 异常构造函数扔一个异常对象

3.简述你做项目时曾见到的异常(背10异常类名及什么时候会产生这种异常)

未捕获异常

NullPointerExcetion(空指针异常)

ArrayIndexOutOfBoundsException(数组下标越界)StringIndexOutOfBoundsException

ClassCastException(强制类型转换的时候产生的异常)

ArithmeticException(算术异常)

SQLException

捕获异常

IOException

知识点:

MissingResourceException(丢失资源)、ClassNotFoundException(找不到类)等异常,

4. Collection 和Collections的区别?

解答:Collection是java.util下的接口,它是各种集合的父接口,继承于它的接口主要有Set 和List;Collections是个java.util下的类,是针对集合的帮助类,提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。

知识点:

List子接口:1.子类ArrayList:按照添加的顺序取出

ArrayList对象的语法用构造函数

ArrayList常用的函数:add函数、get函数、size()、-clear() 、remove(int index)

遍历ArrayList中的元素

方法一:标准for循环

方法二:增强型for循环

2.子类LinkedList:按照添加的顺序取出

用法同ArrayList

3.子类Vector:按照添加的顺序取出

过时用法同ArrayList

Set子接口----set中存放的元素都是不重复的

判断不重复的原理是:只有equals结果为true hashCode结果为相等则不再加入此新元素,判定的结果是新元素与已有元素是重复的,equals结果和hashCode结果只要有一个是不同则继续添加新元素,判定的结果是新元素与已有元素不重复

1.子类HashSet:乱序,元素不重复

HashSet常用函数:add函数、size()、-clear()、remove(Object obj)

遍历HashSet中的元素

方法一:增强型for循环

方法二:用迭代器取出所有元素

将set中的所有元素放入传送带用iterator()函数传送带名字Iterator Iterator it = s.iterator();

从传送带上取出所有元素Iterator

while(it.hasNext()){

Integer i = it.next();

System.out.println(i);

}

2.子类LinkedHashSet:按照添加顺序取出后天顺序不重复。用法同HashSet

3子类TreeSet:按照天然顺序排序,不重复。用法同HashSet

Map接口:键-值对来存放数据,键不可重复唯一的,值可重复

1子类HashMap:键值都可为null 键只能有一个为null 值可有多个为null

常用函数:put、get、keySet、values

取出所有值Collection allValues = map.values();

for(String temp:allValues){

System.out.println(temp);

}

取出所有键Set set = map.keySet();按照自然顺序排列

for(Integer i:set){

System.out.print("键---" + i);

System.out.println("值" + map.get(i));

}

2子类Hashtable:键值都不可为null,用法同HashMap

5.String、StringBuilder和StringBuffer

差别跟String相比、//String 不可改变的字符串

StringBuffer,线程安全、慢、旧版本、线程同步。

StringBuilder,线程不安全、快、新版本、线程不同步。

都是可改变的字符序列。

String 不可改变的,字符串。+

6.ArrayList和Vector的区别?

解答:同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程不安全的,不是同步的;数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半。

7.HashMap与TreeMap的区别?

解答:HashMap通过hashcode对其内容进行快速查找,而TreeMap中所有的元素都保持着

某种固定的顺序,如果你需要得到一个有序的结果你就应该使用TreeMap(HashMap中元素的排列顺序是不固定的)。

8.HashMap和Hashtable的区别?(不太懂)

解答:HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都实现了Map接口,主要区别在于,HashMap允许空(null)键值(key),由于非线程安全,效率上高于Hashtable。HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface 的一个实现。最大的不同是,Hastable的方法是synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供同步。

9.说出ArrayList,Vector, LinkedList的存储性能和特性

ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized思路方法(线程安全) ,通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项前后项即可,所以插入速度较快

最大的区别是,Hashtable的思路方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的思路方法实现同步,而HashMap 就必须为的提供外同步。

Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。

10..列出自己常用的jdk包.

解答:JDK常用的package

https://www.doczj.com/doc/bb12205885.html,ng:这个是系统的基础类,比如String等都是这里面的,这个package是唯一一个可以不用import就可以使用的Package

java.io: 这里面是所有输入输出有关的类,比如文件操作等

https://www.doczj.com/doc/bb12205885.html,: 这里面是与网络有关的类,比如URL,URLConnection等。

java.util : 这个是系统辅助类,特别是集合类Collection,List,Map等。

java.sql: 这个是数据库操作的类,Connection, Statememt,ResultSet等

11.. abstract class和interface有什么区别?

解答:声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽

象方法提供实现,否则它们也是抽象类。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。接口(interface)是抽象类的变体。新型多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,所有成员变量都是public static final 的。一个类可以实现多个接口,当类实现接口时,必须实现接口的所有方法。抽象类在Java 语言中表示的是一种单继承的关系,对于interface 来说则不然,并不要求interface的实现者和interface定义在概念本质上是一致的,仅仅是实现了interface定义的契约而已。;抽象类中可以定义自己的成员变量,也可以包含非抽象的方法,而在接口中只能有静态的常量,所有方法必须是抽象的;实现抽象类时可以只实现其中的部分方法,而要是实现一个接口的话就必须实现这个接口中的所有抽象方法

知识点:

抽象类:用abstract修饰。类里可以没有抽象函数。抽象类不可以用final修饰。

(其实所有的类,包括抽象类和非抽象类,只可以用public 和默认的权限修饰类)

抽象类中可以有:成员属性,非抽象的成员函数,代码块,内部类,构造方法(不可创建对象,只是为子类分配内存空间用的),抽象函数(不可以用final,private,static修饰)

接口:

一个特殊的抽象类,当一个抽象类中所有的方法都是抽象方法时,我们称之为接口。

接口中,所有的函数都是默认用public abstract修饰的,所有的成员函数都是常量,默认为public static final修饰的,接口中无构造函数,不可实例化,实现接口用关键字implements,类继承接口用关键字extends

综合:

抽象类可以被非抽象类继承,但是必须重写父类(抽象类)中的抽象方法。

非抽象类可以实现接口,但是必须重写接口中的所有函数,且访问权限一定为public

抽象类和接口都不能实例化

类支持单继承,多实现(实现多接口),先继承(extends)后实现(implements)

12..java语言中public、private、protected三个关键字的用法,

解答:

作用域有:当前类同包子类其它

public的访问权限是最松的,它可以在同一个包内访问,也可以在不同包内访问,它表示紧随其后的元素对任何人都是可用的。

private它表示当前类和类的内部方法之外的任何人都不能访问的元素

protected它与private关键字的作用相当,差别仅在于继承的类可以访问protected成员,但是不能访问private成员.

默认的访问权限,当没有使用到前面所述的任何访问指定权限时,它将发挥作用,这种权限通过被称为包访问权限,因为在这种权限下,类可以访问在同一个包中的其他类的成员,

知识点:

类与类之间的关系有三种:is—继承、has—创建对象、use—传参。

继承满足的关系条件:两个类A,B,A isB,but B is not A.

特点

子类继承父类,继承父类的所有成员,包括成员属性,成员函数(也有私有成员),代码块,内部类。

但不能使用父类的私有成员属性(传参用setter 和getter)。

不继承父类的构造函数。

每个子类都在自己的构造函数中默认调用父类的无参的方法体为空的构造函数,且放在语句的第一句。

当子类成员属性和父类成员属性同名时,父类成员属性隐藏

13..重写和重载的区别。

重写:发生在两个类父子类之间,方法名相同,参数的类型、个数、顺序相同,返回值相同,重载:发生在同一个类中,方法名相同,但是参数不同(类型不同或个数不同或参数的顺序不同),返回值可以不相同。

知识点:

多态,是一种事物的多种形态,

在java中具体表现有:

重写(具有继承关系的父子类,子类重写父类的方法);

重载;

父类的引用指向之类的对象(只能使用父类跟子类共有的成员,不能同过父类的引用使用子类独有的成员)。

成员属性的隐藏:

当子类的成员属性与父类的成员属性同名时,父类成员属性隐藏

静态成员属性的隐藏:

当父类的成员函数用static修饰时,子类不可以重写父类的静态成员函数,而是将父类的成员函数隐藏。用父类的引用指向子类的对象时取出的是被隐藏的父类的静态成员函数和静态成员属性。

(父亲找父亲,儿子找儿子)

14..面向对象编程的三大特性是什么,请简要阐述

(1).继承:

继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。

(2).封装:

封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。

(3).多态性:

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

15.你是怎么理解java的泛型的?

解答:在Java SE 1.5之前,没有泛型的情况的下,通过对类型Object的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实际参数类型可以预知的情况下进行的。对于强制类型转换错误的情况,编译器可能不提示错误,在运行的时候才出现异常,这是一个安全隐患。

泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。

泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率。

知识点:

定义泛型的语法:

class my 此句相当于定义了四个类一个是my类一个是E,T,M类若没有特殊指定E的类型则默认为Object类不含成员属性和成员函数

使用泛型的语法:创建对象时在类名后指定明确类型

例:my m = new my();

16.数组有没有length()这个方法?String有没有length()这个方法?

解答:数组没有length()方法它有length属性

String有length()方法。

知识点:

静态数组--用来存放n个相同类型元素、长度定以后不可改变。

集合框架--动态数组、长度可改变。

一维数组:数组长度必须为整数必须> 0;当= 0 时语法执行都无错但不可使用u[0] = 11;当< 0 时语法无错,执行报NegativeArraySizeException

1)语法:数组类型[] 数组名= new 数组类型[数组长度]

= new 数组类型[]{,,,,};

= {,,,,};

2)遍历数

方法一:传统for循环

方法二: 增强型for循环(for-each) ---只可在遍历数组时使用JDK5.0 和C#学

一维数组常用API:数组长度:数组名.length、数组填充fill、数组比较equals、数组复制copy、)数组排序sort (升序)

多维数组:

语法数组类型[][][]...[] 数组名= new 数组类型[数组长度][][][]...[]

a ) 必须给定第一维的长度其他维长度可以不给定

例:double[][][][][] d3 = new double[2][][][][];

b ) 不可间隔给定长度

例:double[][][][][] d3 = new double[2][][3][][2];

c ) 等式两端数组维数必须相同--- 基本数据类型数组

例:double[][][] d3 = new double[2][][][][];

d ) 定义数组时,和[]的位置无关只要对数相同即可

例:double[][] d3[][][] = new double[2][][][][];

2) 数组类型[] 数组名= new 数组类型[]{{,},{,,},{,}};

简化语法:double[][] d2 = {{1,2,3},{11,23,4,5}};

常用操作

求数组长度:数组名.length ---- 只能取出第一维的长度

d2[0].length //求第一行列数

d2[1].length //求第二行列数

求多维数组中元素总数:每一维的长度相乘

int sum = 0;

for (int i = 0;i

{sum = sum + d2[i].length;

}

遍历数组(取出数组中的所有元素):

方法一: 传统for循环,几维数组就用几层循环

for (int i = 0;i

{for(int j = 0;j

{for(int k = 0;k

{System.out.println(u[i][j][k]);

}}}

方法二: 增强型for循环(for-each) 只可在遍历数组时使用JDK5.0 和C#学内存图:

17.当给定两个数组要求比较两个数组中对应位置内容相同若都相同则结果为相同?

当给定两个字符串要求内容完全相同是给出结果编程实现

String str1 = new String("sdfas@!#$#$^$E&我喜欢java");

String str2 = new String("欢javsdfa喜a@!#$#$^$E&我s");

18..关键字final 分别修饰一个类,一个方法,一个变量,各起什么作用

解答:final修饰类是不能被继承

fianl修饰方法不能在子类中被覆盖

final修饰变量,称为常量,初始化以后不能改变值。

知识点:

final关键字:修饰的类为最终类,不能被继承,常见的有String、StringBuilder、StringBuffer、system.

修饰成员函数

修饰非静态最终变量时其值不可改变,不可重赋值,赋值的方式有三个地方可以赋值分别为:定义时直接初始化、代码块里赋值、构造函数里赋初值

静态最终变量赋值的有两个地方,分别是:定义时直接初始化、静态代码块内。

常量是用public static final修饰的变量。

19.. final, finally, finalize的区别

final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。参考上一题

finally是异常处理语句结构的一部分,表示总是执行。参考第一题

finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。

知识点:

垃圾回收机制有两种:

一种是自动垃圾回收机制—当jvm中有垃圾时(垃圾为没有引用指向的对象),JVM派垃圾回收器调用object类的finalize来回收垃圾,释放内存。

第二种是手动回收垃圾,调用system类中的gc()方法运行垃圾回收器。System.gc();

多线程有几种实现方法,都是什么?哪一种方式比较优秀?同步有几种实现方法,都是什么?

多线程有两种实现方法,分别是继承Thread类与实现Runnable接口

实现Runnable接口比较好,因为实现类可以实现多个接口,而只能继承一个类。

同步的实现方面有两种,分别是synchronized,wait与notify

知识点:

进程包含1 或多个线程,JVM支持多线程

创建线程方式:

1 继承Thread,其步骤有

1)extends Thread

2)重写Thread类中的run函数

3)创建自定义的线程类的对象,自定义类的构造函数,MyThread mt = new MyThread();

4)用创建的线程类的对象调用start函数,启动新的线程,mt.start();

2 实现Runnable接口,其步骤有:

1)implements Runnable

2)重写Runnable接口中的run函数

3)创建自定义的实现Runnable接口子类的对象,Runnable mt = new MyThread();

4)将3中的对象包装为Thread类对象,Thread t = new Thread(mt);

5)用创建的线程类的对象调用start函数,t.start(),启动新的线程.

为什么重写run函数?---因为JVM只认run函数中代码

run函数----线程启动后,线程要执行的任务---JVM默认.

取得线程名: Thread.currentThread().getName()

结论:两种方式的比较---实现Runnable接口的方式更好,因为可以多态.

最关键的不同点:实现Runnable接口的方式可以让多个线程处理同一资源.

管理同一资源的部分代码:

Sales s1 = new Sales();

//包装Sales对象为Thread类型对象

Thread t1 = new Thread(s1);

Thread t2 = new Thread(s1);

Thread t3 = new Thread(s1);

Thread t4 = new Thread(s1);

t1.start();//启动线程后,由JVM自动调用对应的线程的run函数.

t2.start();

t3.start();

t4.start();

20.java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类

字节流,字符流。字节流继承与inputStream/outputStream,字符流继承于inputStreamReader/outputSteamWriter。

知识点:

输入输出流

字节输入输出流:InputStream、FileInputStream、OutputStream、FileOutputStream

字符输入输出流略过Reader、Writer

Serializable:序列化接口,只需实现此接口即可实现序列化.

读写字符串

String str = "hello";

byte[] b1 = str.getBytes();变为byte数组

File f = new File("D:\\test.txt");

FileOutputStream out = new FileOutputStream(f);

out.write(b1);

FileInputStream in = new FileInputStream(f);

将文件中的byte数组读回来

byte[] b2 = new byte[b1.length];

in.read(b2);

String s = new String(b2);

System.out.println(s);

读写整数

int money = 97;

准备文件

File f = new File("D:\\test.txt");

架设管道Out In

先创建输出管道----保证一定会创建本地系统下的文件FileOutputStream out = new FileOutputStream(f);

再创建输入管道

out.write(money);

out.close();

FileInputStream in = new FileInputStream(f);

int x = in.read();

in.close();

System.out.println(x);

第二部分

ORCLE

1. SQL> select ______(-45) as output from dual;

OUTPUT

--

-45

下列哪个单行函数无法产生这个输出?

A.abs() B.ceil() C.floor() D.round()

知识点:

oracle数据库中的函数:单行函数和多行函数

单行函数:1.数值函数:

(1)abs():绝对值

(2)sqrt():开平方

(3)勾股定理

(4)幂power()

(5)mod():模(求余数)

(6)整数和小数部分的进位:

ceil():舍弃小数部分,整数部分加1

floor():舍弃小数部分,整数部分不变

trunc():一个参数时,保留整数,截取小数

两个参数时,第二个参数代表保留小数的位数

2. 字符函数:

(1)char():将数字转换成对应的字母

(2)ascii():将字母转换成对应的数字

(3)lower:将字母转换成小写

uppper:将字母转换成大写

initcap:将字母首字母大写

(4)concat():连接两个字符

(5)substr():下标从1位置开始

两个参数时,第二个参数代表截取位置

三个参数时,第二个参数代表截取位置,第三个参数代表截取长度

(6)length():长度

(7)rpad():右补齐

(8)replace():替换

(9)trim():去左右空白

ltrm():去左空白

rtrim():去右空白

3.日期函数:

(1)sysdate:系统时间

(2)日期-日期得到天数

(3)months_between

(4)add_months:加上月份

(5)last_day:当最近的周几前月最后一天

(6)trunc():day:截取当前周的第一天

month:截取当前月的第一天

year:截取当前年的第一天

(7)round():四舍五入

(8)next_day():离下一个当前日期

4.特殊函数:转换函to_date()将日期转换成字符串

to_char()将数值型转换成字符串

将日期转换成字符串

辅助函数:nvl辅助空值运算符

nvl2:相当于if()else{}

decode:相当于switch()case

2.

什么是事务、特点、在Oracle中具体的应用?

事务是数据库中最小的一个逻辑工作单元。

特点:ACID,分别指

事务的原子性:就是事务所包含的数据库操作要么都做,要么都不做;

事务的一致性:是事务原子性的体现,事务所对应的数据库操作要么成功要么失败没有第三种情况。事务不管是提交成功与否都不能影响数据库数据的一致性状态;

事务的隔离性:事务对数据的操作不能够受到其他事务的影响;

事务的持续性:也就是说事务对数据的影响是永久的。

在oracle中已commit或rollback作为上一个事务的结束标志及下一个新事物开始的标志。

3 Truncate与delete的区别?

delete一般用于删除少量记录的操作,而且它是要使用回滚段并且要进行显示的提交事务。而truncate则使用于大量删除数据,而且隐式提交事务,其速度要比使用delete快的

4. DDL和DML分别代表什么?

DCL:数据库控制语言,操作整个数据库

DDL:数据定义语言,操作表

DML:数据操纵语言,操作表里的属性

DQL:数据查询语言

5,创建新用户并赋值

create user 用户名identified by密码

grant connect,source to 用户名

6.简要说明数据库中表与表中的连接

左连接:表1 left join 表2 on where条件

先显示所有满足共同条件条件的值,并显示左表中剩余的数据右连接:表1 right join 表2 onwhere条件

先显示所有满足共同条件条件的值,并显示右表中剩余的数据全连接:表1 full join 表2 onwhere条件

显示表一表二的所有数据

7.常用的分组函数及其特点

sum() ,max() ,min() ,avg() ,count() ,stddev() ,variance()

特点:(1)分组函数不可作为where后的条件

(2)输出结果只有一个值,不能嵌套

(3)统计函数不能与列名同用

having与where不同:where后不能有分组函数,hanving后可以8.通常对表的操作有哪些

(1)创建表:create table 表名(列)

create table 表名as 子查询

create table 表名as 子查询where 永恒为假条件

(2)查询表中数据

嵌套查询:select (查询条件) from 表名

select 列from 表名where 列子查询

表中插入数据:

插入对应列的值: insert into 表名(列) values(值)

插入表中所有值: insert into表名values(值)

插入多行数据:insert into 表名(列)子查询

(3)删除表中数据

delete :每次删除只能按行删除

delete from 表名where 删除条件

delete from 表名删除表中全部数据

truncate:截取表的下半部分,保留表头

(4)修改:

update 表名set 列名="值" where 条件

9.视图的理解

虚拟的表,借助表中数据显示

当对视图进行操作时也会对表进行操作

第三部分

Mysql

1 mysql支持事务吗?

在缺省模式下,mysql是autocommit模式的,所有的数据库更新操作都会即时提交,

所以在缺省情况下,mysql是不支持事务的。

在非autocommit模式下,你必须使用COMMIT来提交你的更改,或者用ROLLBACK来回滚你的更改。

2.如何解决mysql数据库中文乱码问题?

在数据库安的时候指定字符集: default-character-set=gbk

建立数据库时候:指定字符集类型:

建表的时候也指定字符集

3.mysql取得当前时间的函数是?,格式化日期的函数是?

now() DATE_FROMA(date,format)

4.写出SQL语句的格式: 插入,更新,删除

(1)插入:

insert into 表名(属性名)values(值)

insert into 表名values(值);//表中属性值全部添加,并且要一一对应

insert into 表名(属性名)values(),()插入多个值

(2)更新:

update名set 属性名=属性值where条件

(3)删除:

delete from 表名

5.写出对表属性的操作:

(1)添加属性列

alter table 表名add 属性名属性类型

(2)修改属性列

alter table 表名modify 属性类型

alter table 表名change 旧属性名新属性名

(3)删除属性列

alter table表名drop 属性列名

6.相比较于oracle.mysql有什么不同?

(1)mysql是开源的

(2)mysql需要用到库:

查看库:show databases;

创建库:create database 库名

用库:use 库名

(3)mysql有rlike,limit,rand

7.将文件导入或导出数据库:

(1)导入数据库:

(1)建库

(2)用库

(3)导入路径:source 路径/文件名.sql

2)导出:

(1)找到mysql的bin路径

(2)粘贴到cmd

(3)mysql dump-uroot -pmysql 库名>文件名.sql

8.mysql中表的联合查询

自然连接:natural join

内连接:等值内连接非等值内连接innner join

外连接:左连接left join

右连接right join

笛卡尔积:cross join

9.对于表中的自增auto_increment

(1)mysql中,必须在有主键的情况下,添加自增

(2)创建表时,标明哪个是自增

(3)创建完表的情况下,添加自增

10.连接mysql数据库:

加载驱动:com.mysql,jdbc.Driver

连接数据库:Class.forName("jdbc:mysql://localhost:3306/库名","root","mysql");

史上最全Java基础知识点归纳

史上最全Java基础知识点归纳 写这篇文章的目的是想总结一下自己这么多年来使用Java的一些心得体会,主要是和一些Java基础知识点相关的,所以也希望能分享给刚刚入门的Java 程序员和打算入Java开发这个行当的准新手们,希望可以给大家一些经验,能让大家更好学习和使用Java。 这次介绍的主要内容是和J2SE相关的部分,另外,会在以后再介绍些J2EE 相关的、和Java中各个框架相关的内容。 经过这么多年的Java开发,以及结合平时面试Java开发者的一些经验,我觉得对于J2SE方面主要就是要掌握以下的一些内容。 1.JVM相关(包括了各个版本的特性) 对于刚刚接触Java的人来说,JVM相关的知识不一定需要理解很深,对此里面的概念有一些简单的了解即可。不过对于一个有着3年以上Java经验的资

深开发者来说,不会JVM几乎是不可接受的。 JVM作为Java运行的基础,很难相信对于JVM一点都不了解的人可以把Java语言吃得很透。我在面试有超过3年Java经验的开发者的时候,JVM几乎就是一个必问的问题了。当然JVM不是唯一决定技术能力好坏的面试问题,但是可以佐证Java开发能力的高低。 在JVM这个大类中,我认为需要掌握的知识有: JVM内存模型和结构 GC原理,性能调优 调优:Thread Dump,分析内存结构 class二进制字节码结构,class loader体系,class加载过程,实例创建过程 方法执行过程 Java各个大版本更新提供的新特性(需要简单了解) 2.Java的运行(基础必备) 这条可能出看很简单,Java程序的运行谁不会呢?不过很多时候,我们只是单纯通过IDE去执行Java程序,底层IDE又是如何执行Java程序呢?很多人并不了解。

java知识点总结

https://www.doczj.com/doc/bb12205885.html,ng.Object 类,是所有类的根父类! 2.Object类仅有一个空参的构造器public Object(){ } 3.关于方法: ①equals(Object obj) public boolean equals(Object obj) { return (this == obj); } // == // 1.基本数据类型:根据基本数据类型的值判断是否相等。相等返回true,反之返回false // 注:两端数据类型可以不同,在不同的情况下,也可以返回true。 // 2.引用数据类型:比较引用类型变量的地址值是否相等。 //equals(): >①只能处理引用类型变量②在Object类,发现equals()仍然比较的两个引用变量的地址值是否相等 >像String 包装类File类Date类这些重写Object类的equals()方法,比较是两个对象的 //"实体内容"是否完全相同。 >若我们自定义一个类,希望比较两个对象的属性值都相同的情况下返回true的话,就需要重写Object类的 equals(Object obj)方法 ②toString()方法

当我们输出一个对象的引用时,会调用toString()方法。 1.public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()); } 当我们没有重写Object类的toString()方法时,打印的就是对象所在的类,以及对象实体在堆空间的位置 2.一般我们需要重写Object类的toString()方法,将此对象的各个属性值返回。 3.像String类、Date、File类、包装类都重写了toString()方法。 1. String类:不可变的字符序列(如:String str = "atguigu"; str += "javaEE") 1.关注于String常用的方法! 2.String类与基本数据类型、包装类;与字符数组、字节数组; * 1.字符串与基本数据类型、包装类之间转换 * ①字符串--->基本数据类型、包装类:调用相应的包装类的parseXxx(String str); * ①基本数据类型、包装类--->字符串:调用字符串的重载的valueOf()方法 *

java基础知识点总结

Created by AIwen on 2017/5/14. java是面向对象的程序设计语言;类可被认为是一种自定义的数据类型,可以使用类来定义变量,所有使用类定义的变量都是引用变量,它们将会引用到类的对象。类用于描述客观世界里某一类对象的共同特征,而对象则是类的具体存在,java程序使用类的构造器来创建该类的对象。 java也支持面向对象的三大特征:封装、继承、和多态。java提供了private、protected、和public三个访问控制修饰符来实现良好的封装,提供了extends关键字让子类继承父类,子类继承父类就可以继承到父类的成员变量和和方法,如果访问控制允许,子类实例可以直接调用父类里定义的方法。继承是实现类复用的重要手段。使用继承关系来实现复用时,子类对象可以直接赋给父类变量,这个变量具有多态性。 面向对象的程序设计过程中有两个重要的概念:类(Class)和对象(object,也被称为实例,instance)。类可以包含三种最常见的成员:构造器、成员变量、和方法。 构造器用于构造该类的实例,java语言通过new关键字类调用构造器,从而返回该类的实例。构造器是一个类创建对象的根本途径,如果一个类没有构造器,这个类通常无法创建实例。因此java语言提供了一个功能:如果程序员没有为一个类编写构造器,则系统会为该类提供一个默认的构造器,这个构造器总是没有参数的。一旦程序员为一个类提供了构造器,系统将不再为该类提供构造器。 构造器用于对类实例进行初始化操作,构造器支持重载,如果多个重载的构造器里包含了相同的初始化代码,则可以把这些初始化代码放置在普通初始化块里完成,初始化块总在构造器执行之前被调用。静态初始化块代码用于初始化类,在类初始化阶段被执行。如果继承树里某一个类需要被初始化时,系统将会同时初始化该类的所有父类。 构造器修饰符:可以是public、protected、private其中之一,或者省略构造器名:构造器名必须和类名相同。 注意:构造器既不能定义返回值类型,也不能使用void声明构造器没有返回值。如果为构造器定义了返回值类型,或使用void声明构造器没有返回值,编译时不会出错,但java会把这个所谓的构造器当成方法来处理——它就不再是构造器。 实际上类的构造器是有返回值的,当使用new关键字来调用构造器时,构造器返回该类的实例,可以把这个类的实例当成构造器的返回值。因此构造器的返回值类型总是当前类,无须定义返回值类型。不要在构造器里显式的使用return来返回当前类的对象,因为构造器的返回值是隐式的。 java类名必须是由一个或多个有意义的单词连缀而成的,每个单词首字母大写,其他字母全部小写,单词与单词之间不要使用任何分隔符。 成员变量: 成员变量的修饰符:public、protected、private、static、final前三个只能出现一个再和后面的修饰符组合起来修饰成员变量,也可省略。 成员变量:由一个或者多个有意义的单词连缀而成,第一个单词首字母小写,后面每个单词首字母大写,其他字母全部小写,单词与单词之间不要使用任何分隔符。 类型:可以是java语言允许的任何数据类型,包括基本类型和引用类型。 成员方法: 方法修饰符:public、protected、private、static、final、abstract,前三个只能出现一个,static和final最多只能出现其中的一个,和abstract组合起来使用。也可省略。 返回值类型:可以是java语言的允许的任何数据类型,包括基本类型和引用类型。 方法名:和成员变量的方法命名规则相同,通常建议方法名以英文动词开头。 方法体里多条可执行语句之间有严格的执行顺序,排在方法体前面的语句总先执行,排在方法体后面的语句总是后执行。 static是一个特殊的关键字,它可用于修饰方法、成员变量等成员。static修饰的成员表明它属于这个类本身,而

《Java编程基础知识点汇总及习题集》--答案

目录 第一章Java入门2? 第二章 Java基础5? 第三章条件转移1?4 第四章循环语句20? 第五章方法 ............................................... 26 第六章数组33? 第七章面向对象........................................... 42第八章异常63? ? 第一章Java入门 知识点汇总 1、JAVA 三大体系 ?Java SE:(J2SE,Java2 Platform Standard Edition,标准版),三个 平台中最核心的部分,包含Java最核 心的类库。?JavaEE:(J2EE,Java 2 Platform, EnterpriseEdition,企业版), 开发、装配、部署企业级应用,包含 Servlet、JSP、JavaBean、JDB C、EJB、Web Service等。 ?Java ME:(J2ME,Java 2 Platfor mMicro Edition,微型版),用于 小型电子设备上的软件开发。

2、JDK,JRE,JVM的作用及关系 作用 ★JVM:保证Java语言跨平台 ★JRE:Java程序的运行环境 ★JDK:Java程序的开发环境 关系 ★JDK:JRE+工具 ★JRE:JVM+类库 3、JDK环境变量配置 ?path环境变量:存放可执行文件的存 放路径,路径之间用逗号隔开 ?classpath环境变量:类的运行路径,J VM在运行时通过classpath加载需 要的类 4、重点掌握两个程序 ?javac.exe:Java编译器工具,可以将 编写好的Java文件(.java)编译成 Java字节码文件(.class); ?java.exe:Java运行工具,启动Java 虚拟机进程,运行编译器生成的字节 码文件(.class) 5、一切程序运行的入口 publicstatic voidmain(String args []){ System.out.println(“Hel lo World!”); } 课堂笔记 练习题 一、填空题 1、Java的三个技术平台分别是(J2SE )、(J2EE)、(J2ME)。 2、Sun公司针对领域不同,提供了三个Java版本,其中对于个人计算机程序开发的是( J2SE ), 对于企业开发应用的是(J2EE),对于嵌入式设备应用开发的是( J2ME )。 (classpath )。 3、建立Java开发环境,安装JDK,一般需要设置环境变量(path)、 4、编写一个Java源程序,其文件名为Test.java,则编译该源程序的命令为(javac ),运行 该程序的命令为( java),生成文档注释的命令为( javadoc)。 5、Java程序的运行环境简称之为( JRE)。

《Java编程基础知识点汇总及习题集》--答案

目录 第一章 Java入门 (2) 第二章 Java基础 (5) 第三章条件转移 (16) 第四章循环语句 (22) 第五章方法 (28) 第六章数组 (35) 第七章面向对象 (44) 第八章异常 (65)

第一章Java入门 知识点汇总 1、JAVA 三大体系 ?Java SE:(J2SE,Java2 Platform Standard Edition,标准版),三个平台中最核心 的部分,包含Java最核心的类库。 ?JavaEE:(J2EE,Java 2 Platform, Enterprise Edition,企业版),开发、装 配、部署企业级应用,包含Servlet、JSP、 JavaBean、JDBC、EJB、Web Service等。 ?Java ME:(J2ME,Java 2 Platform Micro Edition,微型版),用于小型电子设备 上的软件开发。 2、JDK,JRE,JVM的作用及关系 作用 ★JVM:保证Java语言跨平台 ★JRE:Java程序的运行环境 ★JDK:Java程序的开发环境 关系 ★JDK:JRE+工具 ★JRE:JVM+类库 3、JDK环境变量配置 ?path环境变量:存放可执行文件的存 放路径,路径之间用逗号隔开 ?classpath环境变量:类的运行路径, JVM在运行时通过classpath加载需要 的类 4、重点掌握两个程序 ?javac.exe:Java编译器工具,可以将编 写好的Java文件(.java)编译成Java 字节码文件(.class); ?java.exe:Java运行工具,启动Java虚 拟机进程,运行编译器生成的字节码 文件(.class) 5、一切程序运行的入口 public static void main(String args []){ System.out.println(“Hello World!”); } 课堂笔记

java面向对象知识点总结

j a v a面向对象知识点总 结 Company Document number:WTUT-WT88Y-W8BBGB-BWYTT-19998

1 类和对象 类: 类是用来描述一类事物的共性内容的, 类是抽象的; 创建类,如何描述 属性功能 用变量来描述属性 用方法来描述功能 对象: 就是现实中具体的事物,对象是具体的; 创建对象 类名对象名 = new 类名(); 如何通过对象访问类中属性和方法呢 对象名.变量名 对象名.方法名(); 只要是new的对象,就是新创建的,就会在内存中开辟一段单独的空间匿名对象 创建的对象没有赋值给具体的变量; 所以给匿名对象的属性赋值是没有任何意义的; 匿名对象使用场景

1 调用方法 2 作为参数传递 3 添加进容器中 This 关键字 This. 类中的普通方法访问到的成员前边都有this.这个关键字This. 就代表当前对象, 普通方法, 创建对象调方法, 谁调用就代表谁 This(); 可以用来在构造函数中调用本类与之相对应的构造函数使用注意事项: 1 this() 只能是构造函数的第一条执行语句 2 this() 不能在构造函数之间相互调用 3 this() 不能调用自己 构造函数(方法) 构造函数的作用 用来给对象进行初始话的(初始化就是指给对象的各个属性赋值) 构造函数何时执行 对象一创建就会调用与之相对应的构造函数

构造函数语法 修饰符没有返回值类型类名(参数列表){ 具体执行的代码 } 构造函数自动添加 当一个类中我们没有明确指定构造函数的话,jvm会自动帮我们添加一个空参数的构造, 如果我们指定了,就不添加了 构造函数和普通函数的区别 执行时机不同 对象一创建就会调用与之相对应的构造函数 普通函数只有被调用才会执行 return 1 就是用来在方法中返回具体结果(结果类型必须和方法的返回值类型一致) 2 即便方法的返回值类型是void,方法中也可以出现 return; 3 构造函数中也可以有return关键字 成员变量和局部变量 1 作用范围不同, 成员变量是定义在类中的,在整个类中都起作用 局部变量是定义在方法中的,在所在代码块起作用

JAVA技术--Java基础知识常见考试题JAVA技术.doc

一、单选题 1.对类:(B) public class Test( //...do something } 下面那个正确地定义了类Test的构造函数。 A)public void Test() () B)publicTest()(} C ) public static Test() (} D) publicTest(); 2.下面哪个函数是public void example()(...)的重载函数。(A) A)public void example( float f)(...) B)public int example() (...) C)public void example2()(...} D)public int example_overLoad ()(...) 3.下面的代码段中,执行之后i和j的值是_C_。 int i = 1; intj; j = i++; A)1, 1 B) 1,2 C) 2, 1 D) 2,2 4.以下for循环的执行次数是_B o for(int x=0,y=0;(y !=0)&&(x<4) ;x++); A)无限次B) 一次也不执行 C)执行4次D)执行3次 5.下面程序的输出结果是—C o public class People( String name; int id; public People( String str, int n )( name = str; id = n; } public String toString(){ return id + " :” + name; } public String print()(

java各知识点详细总结(毕向东笔记整理)

Java基础知识总结 写代码: 1,明确需求。我要做什么? 2,分析思路。我要怎么做?1,2,3。 3,确定步骤。每一个思路部分用到哪些语句,方法,和对象。4,代码实现。用具体的java语言代码把思路体现出来。 学习新技术的四点: 1,该技术是什么? 2,该技术有什么特点(使用注意): 3,该技术怎么使用。demo 4,该技术什么时候用?test。 ----------------------------------------------------------------------------------------------- 一:java概述: 1991 年Sun公司的James Gosling等人开始开发名称为 Oak 的语言,希望用于控制嵌入在有线电视交换盒、PDA等的微处理器; 1994年将Oak语言更名为Java; Java的三种技术架构: JAVAEE:Java Platform Enterprise Edition,开发企业环境下的应用程序,主要针对web程序开发; JAVASE:Java Platform Standard Edition,完成桌面应用程序的开发,是其它两者的基础;

JAVAME:Java Platform Micro Edition,开发电子消费产品和嵌入式设备,如手机中的程序; 1,JDK:Java Development Kit,java的开发和运行环境,java 的开发工具和jre。 2,JRE:Java Runtime Environment,java程序的运行环境,java 运行的所需的类库+JVM(java虚拟机)。 3,配置环境变量:让java jdk\bin目录下的工具,可以在任意目录下运行,原因是,将该工具所在目录告诉了系统,当使用该工具时,由系统帮我们去找指定的目录。 环境变量的配置: 1):永久配置方式:JAVA_HOME=%安装路径%\Java\jdk path=%JAVA_HOME%\bin 2):临时配置方式:set path=%path%;C:\Program Files\Java\jdk\bin 特点:系统默认先去当前路径下找要执行的程序,如果没有,再去path中设置的路径下找。 classpath的配置: 1):永久配置方式:classpath=.;c:\;e:\ 2):临时配置方式:set classpath=.;c:\;e:\ 注意:在定义classpath环境变量时,需要注意的情况如果没有定义环境变量classpath,java启动jvm后,会在当前目录下查找要运行的类文件;

java期末考试知识点总结

java知识点总结 应同学要求,特意写了一个知识点总结,因比较匆忙,可能归纳不是很准确,重点是面向对象的部分。 java有三个版本:JAVA SE 标准版\JAVA ME移动版\JAVA EE企业版 java常用命令:java, javac, appletview java程序文件名:.java, .class java的两类程序:applet, application; 特点,区别,这两类程序如何运行 java的主方法,主类,共有类;其特征 java的数据类型,注意与C++的不同,如字符型,引用型,初值 java与C++的不同之处,期中已总结 java标记符的命名规则 1)标识符有大小写字母、下划线、数字和$符号组成。 2)开头可以是大小写字母,下划线,和$符号(不能用数字开头) 3)标识符长度没有限制 4)标识符不能使关键字和保留字 面向对象的四大特征 抽象、封装、继承、多态 封装,类、对象,类与对象的关系,创建对象,对象实例变量 构造函数,默认构造函数,派生类的构造函数,构造函数的作用,初始化的顺序,构造方法的重载 构造函数:创建对象的同时将调用这个对象的构造函数完成对象的初始化工作。把若干个赋初值语句组合成一个方法在创建对象时一次性同时执行,这个方法就是构造函数。是与类同名的方法,创建对象的语句用new算符开辟了新建对象的内存空间之后,将调用构造函数初始化这个新建对象。 构造函数是类的特殊方法: 构造函数的方法名与类名相同。 构造函数没有返回类型。 构造函数的主要作用是完成对类对象的初始化工作。 构造函数一般不能由编程人员显式地直接调用。 在创建一个类的新对象的同时,系统会自动调用该类的构造函数为新对象初始化。 类的修饰符:public类VS 默认; abstract类; final类; 1)类的访问控制符只有一个:public,即公共的。公共类表明它可以被所有其他类访问和引用。 若一个类没有访问控制符,说明它有默认访问控制特性,规定该类智能被同一个包中的类访问引用(包访问控制)。 2)abstract类:用abstract修饰符修饰的类被称为抽象类,抽象类是没有具体对象的概念类,抽象类是它所有子类的公共属性集合,用抽象类可以充分利用这些公共属性来提高开发和维护效率。 3)final类:被final修饰符修饰限定的,说明这个类不能再有子类。所以abstract与final 不能同时修饰一个类。 域和方法的定义 1)域:定义一个类时,需要定义一组称之为“域”或“属性”的变量,保存类或对象的数据。

Java基础阶段复习题2(附答案)

复习题2 如有雷同,纯属巧合! 1.下列哪一种叙述是正确的() A. abstract修饰符可修饰字段、方法和类 B.抽象方法的body部分必须用一对大括号{ }包住 C.声明抽象方法,大括号可有可无 D.声明抽象方法不可写出大括号 2.下列说法正确的有() A. class中的constructor不可省略 B. constructor必须与class同名,但方法不能与class同名 C. constructor在一个对象被new时执行 D.一个class只能定义一个constructor 3.以下哪个表达式是不合法的() A、String x=”Hello”; int y=9; x+=y; B、String x=”Hello”; int y=9; if(x= =y) { } C、String x=”Hello”; int y=9; x=x+y; D、String x=null; int y=(x!=null)&&(x.length()>0) ? x.length() : 0 4.下列关于修饰符混用的说法,错误的是() A.abstract不能与final并列修饰同一个类 B.abstract类中不可以有private的成员 C.abstract方法必须在abstract类中 D.static方法中能处理非static的属性 5.()修饰符允许对类成员的访问不依赖于该类的任何对象 A、abstract B、static C、return D、public 6.关于被私有访问控制符private修饰的成员变量,以下说法正确的是() A.可以被三种类所引用:该类自身、与它在同一个包中的其他类、在其他包中的该类的子类 B.可以被两种类访问和引用:该类本身、该类的所有子类 C.只能被该类自身所访问和修改 D.只能被同一个包中的类访问

javaweb知识点总结

javaweb知识点总结 篇一:javaweb期末复习知识点整理 1、 Web应用概述 1. URL与URI URL: 统一资源定位器 URI:统一资源定位符 2. 常见HTML标签 3. 表单的处理 4. 静态文档与动态文档的概念:静态文档是一种以文件的形式存放在服务器端的文档,客户发出对该文档的请求,服务器返回这个文档。动态文档是指文档的内容可根据需要动态生成,又可分为服务器端动态文档和客户端动态文档技术。 5. Servlet概念:服务器端小程序,是使用ServletAPI 以及相关类编写的java程序,主要用来扩展web服务器的功能。 6. 处理404错误:查看给定的路径名是否正确,查看Servlet类文件是否在classes目录下,查看文件内容是否正确,查看tomcat是否启动 2、 Servlet技术模型 1. Servlet的API:包,包 Servlet接口及方法 :

1) public void init(ServletConfig config):完成Servlet初始化并准备提供服务。容器传给该方法一个ServletConfig类型的参数。 2)public void service(ServletRequest req,ServletResponse res)throw ServletException,IOException:对每个客户请求容器调用一次该方法,它允许Servlet为请求提供响应。 3) public void destroy()该方法由容器调用,指示Servlet清除本身,释放请求的资源并准备结束服务。 4) public ServletConfig getServletConfig()返回关于Servlet的配置信息,如传递给init()方法的参数。 5) public String getServletInfo()返回关于Servlet 的信息,如作者,版本及版权信息。 ServleConfig接口作用及方法 HttpServlet类 :新的service方法,doGet,doPost HttpServletRequest接口及常用方法 HttpServletResponse接口及常用方法 2. Servlet的开发步骤 编写一个Servlet类 编译 部署 (1)在tomcat的虚拟目录下,创建Web目录

java基础刷题知识点总结

基础 1.object类的方法有哪些 clone() protect 创建并返回一个对象的副本 equals()用来比较某个对象是否与调用此方法的对象相等 finalize() protect getClass() 返回一个对象的运行时类 hashCode()返回一个对象的hash值 notify()唤醒在此对象监听器上等待的单个线程。如果有多个,则随机唤醒一个 notifyAll()唤醒在此对象监听器上等待的所有线程 registerNatives() 本地私有方法,在类初始化是会调用此方法 toString() 返回当前对象的字符串表示 wait()使当前线程处于等待直到其他线程调用这个对象的notify或notifyAll方法或者超过指定的时间量 2.接口和抽象类的区别 1.首先描述接口和抽象类的特性 抽象类:是子类通用特性的集合 接口:是抽象方法的集合l 从某种意义上说抽象类包含了接口的所有功能。但是通过实现接口可以实现多继承

什么时候用抽象类和接口 1.如果一些方法必须提供默认的实现,就必须用抽象类,比如在dao层,每个类都有增删查改这几个操作,我们可以把这些操作写在抽象类里,并让抽象类提供默认的实现。 否则的话用接口 2.假如要实现多继承,则必须要用接口,java不支持多继承但是可以通过实现多个接口来解决 3.如果基本功能在不断改变,那么就用抽象类。如果不断改变基本功能并且使用接口,子类就必须不停的更改 03.抽象类是否有构造方法 抽象类有构造方法只是抽象类不能够实例化 4.Final finally finalize()方法的区别 5.Sleep()和wait()的区别 ①这两个方法来自不同的类分别是,sleep来自Thread类,和wait来自Object类。sleep是Thread的静态类方法,谁调用的谁去睡觉,即使在a线程里调用b的sleep方法,实际上还是a去睡觉,要让b线程睡觉要在b的代码中调用sleep。 ②锁: 最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。 sleep不出让系统资源;wait是进入线程等待池等待,出让系统资源,其他线程可以占用CPU。一般wait不会加时间限制,因为如果wait线程的运行资源不够,再出来也没用,要等待其他线程调用notify/notifyAll唤醒等待池中的所有线程,才会进入就绪队列等待OS 分配系统资源。sleep(milliseconds)可以用时间指定使它自动唤醒过来,如果时间不到只能调用interrupt()强行打断。 Thread.sleep(0)的作用是“触发操作系统立刻重新进行一次CPU竞争”。 ③使用范围:wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,配合synchronized实现等待通信机制,而sleep可以在任何地方使用。 synchronized(x){ x.notify() //或者wait() }

java基础知识练习题

Java基础测试题 一、选择题(每题2分) 1、在JAVA编程中,Java编译器会将java程序转换为()。 A. 字节码; B. 可执行代码; C. 机器代码; D. 以上所有选项都不正确。 2、下列那些不是合法的标识符?() A. Tel_num B. 8ABc C. Emp_1 D. b123.6 E. NULL F. Hello World 3、以下字符常量中不合法的是( )。 A. '|' B. '\'' C."\n" D.'我' 4、下列语句编译没有错误的是:() A. float a=1.5; B.byte a=129; C.byte a=5; D.byte a=(byte)200; 5、java中int数据类型在内存中表示为() A. 2个字节 B.4个字节 C. 由程序员指定 D. 以上都不正确 6、下列程序段执行后t5的结果是( )。 int t1 = 9, t2 = 11, t3=8; int t4,t5; t4 = t1 > t2 ? t1 : t2+ t1; t5 = t4 > t3 ? t4 : t3; A. 8 B.20 C.11 D.9 7、若有定义int a = 2;则执行完语句a += a -= a * a; 后,a的值是( )。 A. 0 B. 4 C. 8 D.–4 8、设 a, b, c, d 均为 int 型的变量,并已赋值,下列表达式的结果属于非逻辑值的是( ) A. a!=b & c%d < a B.a++ = =a+b+c+d C.++a*b--+d D.a+b>=c+d 9、以下代码段执行后的输出结果为() int x=3; int y=10; System.out.println(y%x); A.0 B.1 C.2 D.3 10、下列语句序列执行后,k 的值是( )。 int i=10, j=18, k=30; switch( j - i ) { case 8 : k++; case 9 : k+=2; case 10: k+=3; default : k/=j; } A. 31 B. 32 C. 2 D.33 11、假定有变量定义: int k=7,x=12; 则能使值为3的表达式是()。 A. x%=(k%=5) B.x%=(k-k%5) C. x%=k-k%5 D. (x%=k)-(k%=5) 12、设x和y均为int型变量,则以下语句:x+=y;y=x-y;x-=y;的功能是()。 A. 把x和y按从大到小排列 B. 把x和y按从小到大排列

java基础知识详细整理(图文并茂深入浅出)

JSE第一部分 分享者:张振羽 2017.6.30

1.什么是 JDK API (1) Application Programming Interface ,应用程序编程接口 (2) 是一些预先定义的函数,开发人员可提供直接调用的功能。 2.JDK包结构 便于维护,按照功能划分,不同功能的累划分在不同功能的包中,常用的包如下表: 3.字符串的基本操作 3.1 String 及其API

3.1.1 String (1) String是不可变对象 (2) https://www.doczj.com/doc/bb12205885.html,ng.String使用了final修饰,不能被继承。 (3)字符串一旦被初始化,就不可以被改变,存放在方法区中的常量池中 (4) 任何一个字符对应2个字节的长度,1个字节 = 8位二进制。 3.1.2 String s=new String (“abc”) (1) 众所周知,答案是:创建两个对象 (2) why?举例子: 分析步骤: a) 栈中开辟一块空间存放引用str1(地址信息); b) String池中有一块空间,存放String常量"abc"; c) 引用str1指向池中String常量"abc"; d) str1所指代的地址即常量"abc"所在地址,输出为true; 结论:创建了一个引用对象str1

分析步骤: 1) 栈中开辟一块空间存放引用str3; 2) 堆中开辟一块空间存放一个新建的String对象"abc"; 3) 引用str3指向堆中的新建的String对象"abc"; 4) str3所指代的对象地址为堆中地址,而常量"abc"地址在池中,输出false; 3.2 StringBuilder常见API

Java期末知识点整理总结

Java期末知识点整理总结 计科2班苏锐师编号47 学号201330551464 第一章 Java语言概述 1. Java语言发展历史和现状及前景 2. Java语言的特点: 简单、面向对象、分布式、健壮性、结构中立、 安全性、可移植、解释的、高性能、多线程、多态性 3. Java虚拟机概念(JVM),Java程序的执行过程 4. Java应用程序分类:Application和Applet 5. Java程序的开发环境:JDK,IDE 第二章 Java数据类型及其运算 1. 标识符与保留字 1.2 标识符命名语法规则与Java推荐的标识符命名规则 1.3 Java中的关键字 2. 数据类型byte, short, int long, char, float, double, boolean 注意点:Java中所有数据类型是确定的,与平台无关,没有sizeof操作,其中特别注意char 类型是2字节Unicode编码,与C++ 不同;知道基本类型都有对应的默认值。 整型数的十进制、八进制、十六进制值的表示。 实型数的十进制、十六进制与科学计数法表示,注意实型常量默认类型为double型。 3. 运算符与表达式算术运算符: + - * / % ++ -- 关系运算符:> >= < <= == != 逻辑运算符:&& || !& | 注意短路计算与非短路计算的差别 位运算符: >> << >>> & | ^ ~ 要认识异或(^)与按位取反(~)运算符 赋值运算符: += -= *= /= %= &= |= ^= <<= >>= >>>= 要注意赋值运算符中包含了强制转换: 若: int k = 1; k += 44.232D; 则相当于: k = (int) ( k + 44.232D); 条件运算符:exp ?stat1 :stat2 要注意stat1与stat2要求类型相兼容且不能为void类型。运算符的优先级:算术运算 > 关系运算> 逻辑运算

Java基础知识整理

Java知识点总结 1环境搭建与开发 1.1 环境变量 JA V A_HOME:Java的安装目录; CLASSPATH:指定一个路径列表,用于搜索Java在编译或运行时需要用到的类(.class文件); PATH:指定一个路径列表,用于搜索可执行文件。 1.2 Java SDK应用 编译:Javac 类名.class; 运行:Java 类名; 打包:jar cf test.jar test (把当前目录下的test目录下的所有文件压缩到test.jar文件中)。 2变量与常量 Java中的常量用保留字final来实现。 变量:局部变量(local variable)、实例变量(instance variable)、类变量(class variable);任何变量在使用前都必须初始化,局部变量必须显示初始化,实例变量在类的构造方法被调用时初始化(分配默认值),类变量在类被加载时被初始化。 3标识符 3.1 命名 在Java语言中,标识符的定义规则是以字母、下划线、美元符开始,后面可以跟字母、下划线、美元符、数字。 因为Java语言使用Unicode字符集,所以对字母不仅限于英文,还可以是日文、韩文、阿拉伯文、中文等。 区分大小写,没有字数限制。

3.2 关键字 3.2.1static static方法中不能有this和super关键字(static方法不是“面向对象”的,而是“面向类”的)。 static方法中只能访问所属类的static方法和变量。 static数据成员的初始化:在第一次生成该类的对象时初始化。 3.2.2final 1)final数据 a)static final ●更加典型的定义方式是public static final; ●占用一段不能改变的存储空间; ●代表编译时常量,即在编译器就能知道其值(如果只声明为final或 者static,是在运行时才知道值)。 ●全部用大写字母命名,单词之间用下划线隔开。 b)final数据与final引用 ●final数据的值不能被改变; ●final引用是指无法将其指向一个新的对象(数组也是一种引用),对 象本身的值是可以改变的。 c)空白final(声明为final却未赋初始值) ●可以做到根据对象有所不同,又保持恒定不变的特性; ●必须保证使用前已经初始化:在定义处赋值或者在构造器中赋值。 2)final参数 ●无法在方法中更改引用所指向的对象。 3)final方法 ●禁止覆盖,防止任何继承类修改它的定义; ●private方法都是final的,因此private方法无法覆盖。 4)final类 ●不允许继承该类; ●final类中的所有方法都隐式指定为final的。

java各知识点详细总结

基础知识总结 写代码: 1,明确需求。我要做什么? 2,分析思路。我要怎么做?1,2,3。 3,确定步骤。每一个思路部分用到哪些语句,方法,和对象。 4,代码实现。用具体的语言代码把思路体现出来。 学习新技术的四点: 1,该技术是什么? 2,该技术有什么特点(使用注意): 3,该技术怎么使用。 4,该技术什么时候用?。 一:概述: 1991 年公司的等人开始开发名称为的语言,希望用于控制嵌入在有线电视交换盒、等的微处理器; 1994年将语言更名为; 的三种技术架构: :,开发企业环境下的应用程序,主要针对程序开发; :,完成桌面应用程序的开发,是其它两者的基础; :,开发电子消费产品和嵌入式设备,如手机中的程序; 1,:,的开发和运行环境,的开发工具和。 2,:,程序的运行环境,运行的所需的类库(虚拟机)。 3,配置环境变量:让\目录下的工具,可以在任意目录下运行,原因是,将该工具

所在目录告诉了系统,当使用该工具时,由系统帮我们去找指定的目录。 环境变量的配置: 1):永久配置方式:安装路径%\\ \ 2):临时配置方式::\ \\\ 特点:系统默认先去当前路径下找要执行的程序,如果没有,再去中设置的路径下找。 的配置: 1):永久配置方式::\:\ 2):临时配置方式::\:\ 注意:在定义环境变量时,需要注意的情况 如果没有定义环境变量,启动后,会在当前目录下查找要运行的类文件; 如果指定了,那么会在指定的目录下查找要运行的类文件。 还会在当前目录找吗?两种情况: 1):如果的值结尾处有分号,在具体路径中没有找到运行的类,会默认在当前目录再找一次。 2):如果的值结果出没有分号,在具体的路径中没有找到运行的类,不会再当前目录找。 一般不指定分号,如果没有在指定目录下找到要运行的类文件,就报错,这样可以调试程序。 4,命令和命令做什么事情呢? 要知道是分两部分的:一个是编译,一个是运行。 :负责的是编译的部分,当执行时,会启动的编译器程序。对指定扩展名的文件进

Java学习知识点情况总结

JAVA知识点总结 1.JAVA的特点: ○1简单易用、完全面向对象; ○2与平台无关性、可扩展性强; ○3可移植性高、支持分布式编程; ○4健壮、安全可靠并性能优异; ○5支持多线程开发技术; ○6支持动态开发。 2.JVM:Java虚拟机(JVM是Java实现跨平台的基础)。 Java的源程序(*.java)编译(命令:java+文件名.java)Java字节码(*.class编译时自动形成,与源程序名一致) 运行(命令:java+源程序的文件名)JVM(Windows、Linux) 开发工具,Javac及基础核心类 JDK 运行环境,Java及基础核心类 3.编写第一个Java程序: Java源文件扩展名为:”.java” 一个源文件中最好只有一个java类,但是可以包含多个类 public修饰的类,文件名与类名必须一致(包括大小写) 被运行的类中需要有一个方法: public static void main(String[ ] args){} 一个源文件中最多有一个public修饰的类

例如:public class Test{ public static void main(String args[]){ System.out.println(“这个编写的第一个java程序!!!”); } } 在运行程序之前先配置环境变量: path变量值为:JDK安装目录下\bin; classpath变量值为:JDK安装目录下\lib; 或 .;JDK安装目录下\lib\tools.jar 在dos命令窗口中输入以下命令进行运行: 编译命令:javac Test.java 运行命令:java Test 生成文档命令:javadoc Test.java 4.Java编程规范 A、命名规定 包:包名应该是小写的名词。 如:package shipping.objects 类:类名应该是名词,大小写混合,每个单词的首字母大写。 如:class AccountBook 接口:接口名的大小写应该与类名一样。 如:interface Account 方法:方法名应该动词,大小写混合,首字母小写。每个方法名中,以大写字母区分单词。限制使用下划线。

java常用类知识点总结

java常用类知识点总结 Java常用类 要求: 1、掌握String和StringBuffer的区别,可以熟练使用String和StringBuffer的各 种方法进行相关操作。 2、能够自己编写一个得到日期的操作类,并将日期进行格式化操作。 3、掌握比较器及其基本原理,并可以通过比较器进行对象数组的比较操作。 4、掌握对象克隆技术及其实现 5、能够灵活应用正则表达式对字符串的组成进行判断 6、掌握Math、Random、基本数据类型的包装类的使用 7、描述出Object System对垃圾收集的支持 8、使用NumberFormat、DecimalFormat、BigInteger、BigDecimal进行数字的操 作 String和StringBuffer String的内容一旦声明不可改变,如果要改变,改变的是String的引用地址,如果一个字符串要经常改变,必须使用StringBuffer。 在一个字符串内容需要频繁修改时,使用StringBuffer可以提升操作性能,因为StringBuffer内容可以改变,而String内容不可改变。StringBuffer支持的方法大部分与String类似。 StringBuffer常见用法: (1) 字符串的连接操作

String类可以通过“+“进行字符串的连接,而StringBuffer中却只能使用append方法进行字符串的连接,而且此方法返回一个StringBuffer类的实例,这样就可以采用代码链的形式一直调用append方法。 (2) 在任意位置处为StringBuffer添加内容 可以使用insert方法在指定位置上为StringBuffer添加内容 字符串的反转操作(较为常见的操作,使用reverse方法) (3) 替换指定范围的内容 replace方法可对指定范围的内容进行替换。在String中如果要替换,使用的是replaceAll (4) 字符串截取(使用subString方法从指定范围中截取内容) (5) 删除指定范围的字符串(使用delete方法删除指定范围内容) (6) 查找指定内容是否存在(indexOf查找指定内容,查找到返回内容的位置, 没查到返回-1) 问题:(1)String s = "Hello";s = s + " world!";这两行代码执行后,原始的String对象中的内容到底变了没有, 没有。因为String被设计成不可变(immutable)类,所以它的所有对象都是不可变对象。在这段代码中,s原先指向一个String对象,内容是 "Hello",然后我们对s进行了+操作,那么s所指向的那个对象是否发生了改变呢,答案是没有。这时,s不指向原来那个对象了,而指向了另一个 String对象,内容为"Hello world!",原来那个对象还存在于内存之中,只是s这个引用变量不再指向它了。通过上面的说明,我们很容易导出另一个结论,如果经常对字符串进行各种各样的修改, 或者说,不可预见的修改,那么使用String来代表字符串的话会引起很大的内存开销。因为 String对象建立之后不能再改变,所以对于每一个不同的字符

相关主题
文本预览
相关文档 最新文档