文档库 最新最全的文档下载
当前位置:文档库 › Java基础知识复习资料

Java基础知识复习资料

Java基础知识复习资料
Java基础知识复习资料

1.java语言是强类型还是弱类型语言?为什么?

Java 是强类语言,在使用变量时有如下规则:

变量必须声明,并且初始化以后才能使用。

变量必须有明确的类型(type)。

变量不能重复定义。

javascript是一种弱类型语言,即变量在声明时,不能明确声明其类型

变量的类型是在运行时确定的,并且可以随时改变

2.JAVA的数据类型有哪些?

⑴基本数据类型(八种):

整型:byte 1字节, short 2字节, int 4字节, long 8字节

浮点型:float 4字节, double 8字节

【float 类型共32位(不int相同),其中1位为符号位, 指数8 位, 尾数23 位。】【double 类型能表示64位,其中1 位符号位,11位指数,52位尾数】

【浮点数的字面量默认是double】

字符型:char 2字节【unicode编码值】

boolean型:boolean 1字节【值只有true和false】

隐式类型转换:

正方向: char→

byte→short→ int→long→float→double

负方向:

⑵引用类型(自定义类型):对象:比如String

数组:int[]

接口:interface

3.JAVA中成员变量和局部变量的区别?

⑴成员变量:是在类范围内定义的(也叫成员属性)

类属性:使用static修饰的就是类属性。

作用域:类属性的作用域与这个类的生存范围相同,它作为类的一个成员,

与类共存亡。只要类存在,程序就可以访问该类的类属性。

实例属性:不被static修饰的就是实例属性。

作用域:实例属性则从这个类的实例(对象)被创建开始存在,直到系统完

全销毁这个实例,它作为实例(对象)的一个成员,与实例(对象)

共存亡。只要实例存在,程序就可以访问该实例的实例属性。

⑵局部变量:在一个方法内定义的变量。(包括方法的形式参数)

1.形参:作用域是整个方法体

2.方法局部变量:一个代码块中

3.代码块局部变量:一个代码块中

注意:局部变量除了形式参数外,都必须显示初使化(必须显示指定初使值)。否则

不可以访问它们。

形式参数不须显示初使化,它在被调用时由系统完成。

4.前++和后++的区别?

i++, 后++, 先将i 的值作为整个表达的值, 然后将i 增加1。

先++, 先将i 增加1, 然后将i 的值作为整个表达的值。

5. 短路运算符和非短路运算符的区别?

短路运算符[条件1 && 条件2],如果条件1不成立,则条件2不执行;

非短路运算符[条件1 & 条件2],两个条件都会执行。

8.java中的4种访问制权限有哪些?分别作用范围是什么?

(4).private:最严格的访问控制权限,仅该类本身可见。

(注:访问控制修饰符可以修饰类,成员变量,方法,但是修饰类只用public和default)

9.JAVA5的新特性有哪些?

(1)循环(For-each循环)

for (type variable : array){ body}

for (type variable : arrayList){body}

而1.4必须是:

for (int i = 0; i < array.length; i++){ type variable = array[i]; body}

for (int i = 0; i < arrayList.size(); i++){type variable = (type) arrayList.get(i); body}

(2)泛型

以ArrayList为例,包括创建一个容器对象和取得容器内对象操作:

1.5 ArrayList arrayList =new ArrayList(); arrayList.get(i)

1.4 ArrayList arrayList =new ArrayList(); (Type) arrayList.get(i)

(3)自动装箱拆箱

在JDK5.0以前,在原始类型与相应的包装类之间的转化是不能自动完成的。要完成这种转化,需要手动调用包装类的构造函数,在JDK5.0环境中,可以自动转化:

1.5 Integer wrapper = n; int n = wrapper;

1.4 Integer wrapper = new Integer(n); int n = wrapper.intValue();

自动装包/拆包大大方便了基本类型数据和它们包装类地使用。

自动装包:基本类型自动转为包装类.(int >> Integer);

自动拆包:包装类自动转为基本类型.(Integer >> int);

(4)静态导入

静态导入功能对于JDK 5.0以前的版本是不支持的。

import static https://www.wendangku.net/doc/fb3656645.html,ng.Math;

import static https://www.wendangku.net/doc/fb3656645.html,ng.System;

...

1.5 out.println(sqrt(PI));

1.4 System.out.println(Math.sqrt(Math.PI));

(5) 可变参数(Varargs)

可变参数使程序员可以声明一个接受可变数目参数的方法。注意,可变参数必

须是函数声明中的最后一个参数。在JDK1.5之前,可以用重载来实现,但是这

样就需要写很多的重载函数。

line1 public void write(Object... objs) {

line2 for (Object obj: objs)

line3 System.out.println(obj);

line4 }

11.构造方法(构造器)特点?

中的构造器(构造方法)声明在类内部。

方法名与类名一致的方法叫构造方法

构造方法不能声明返回值类型。

构造方法可以包含参数,参数一般是创建对象实例必须依赖的条件(前提条件)。

子类默认调用父类的无参构造器,如果父类没有无参构造器,那么子类必需显示的去调用父类的有参构造器

如果一个类没有提供无参构造器,那么编译器将会自动提供一个无参构造器。

12.JAVA中属性和方法的静态绑定和动态绑定?

静态绑定:Java 根据引用变量类型查找属性

动态绑定:java 根据实际的对象查找方法

13. JavaBean 规范?

1) 必须有包(package)

2) Java 类,具有无参数构造器

3) 有用getXxx() 和setXxx() 声明的Bean属性

如:getName() 和setName(String n) 声明的Bean属性为:name, 不是否有实例变量name 无关

类型的get方法可以有两种形式:getMarried() 戒者isMarried()

4) 必须实现序列化接口(注:在学习IO 的时候具体学习)

14.static关键字的特点?

static 静态关键字修饰:属性、方法、内部类、代码块

static 修饰的资源属于类级别,是全体对象实例共享的资源

static 变量在类加载期间初始化

静态代码块是在类加载期间运行的代码块,由于类只加载一次,所以静态代码块只执行一次!

15.final关键字的特点?

final可以修饰类,方法,变量

final 修饰的类,不能再被继承

final修饰的方法,不能覆盖final 方法

final 修饰的变量

final的局部变量,只能初始化不能改

final的方法参数,不能改

final 的引用,引用指向不能改,但是对象的属性可以改16.常见的final类有哪些?

Java 的String 就是final类,不能被继承!

Math 是final类,不能被继承!

Integer 、Long、Character 等包装类是final类,不能被继承!

17.抽象类和接口的区别?

抽象类--不具体的类

1 抽象方法,只有行为的概念,没有具体的行为实现。

使用:abstract 关键字修饰,并且没有方法体。

2 包含抽象方法的类,就一定是抽象类。

使用:abstract 关键字修饰,包含抽象方法。

如:平面图形一定可以计算面积。

public abstract class CRMSystem{

public abstract Client addClient(

String name, String qq);

}

3 抽象方法和抽象类非常适合作为系统的分析和设计的工具。

4 抽象类不能直接创建实例。可以定义引用变量。

5 抽象类只能被继承,一个具体类继承一个抽象类,必须实

现所有抽象方法。

接口

1. 接口:全部的方法都是抽象方法,全部的属性都是常量。

接口用来表示纯抽象概念,没有任何具体的方法和属性。

2 .不能实例化,可以定义变量。

3 .接口变量可以引用具体实现类的实例。

4 .接口只能被实现,一个具体类实现接口,必须使用全部的

抽象方法。

5 .接口之间可以继承。

6 .一个具体类可以实现多个接口,实现多继承现象,表示:

一个概念即是XXX也是XXX.

7 .接口中的属性,默认是常量public static final

8 .接中的方法一定是:public abstract

9 .实现一个接口,使用关键字implements, 实现实际上是

一种继承关系。接口和实现类是父子类型的关系

18.重载和重写的区别?

重载:方法名相同,参数不同(参数类型或者长度)

重载和修饰符和返回类型无关。

一是方法的参数列表必须改变,包括参数的类型,参数的个数多少,参数顺序。

二是重载对返回类型,访问修饰符,异常声明没有任何限制,可以作任意的修改。

实质上,重载只是创建了一个方法而已,特殊的地方在于方法的名字。

重写:两同两小一大(规则)

两同:方法名相同参数类型相同

两小:返回值类型(基本数据类型要一致,引用类型可以是其子类)

抛出的异常要小(也可以抛出父类型的异常的部分异常,或者不抛出异常)一大:访问控制修饰符大

(1)重写方法必须和被重写方法具有相同的参数列表,返回类型必须和被重写方

法的返回类型相同或者是返回类型的子类型。

(2)重写方法的访问控制修饰符不能比被重写方法更严格(比如一个在父类中声

明为public的方法重写成一个protected的方法)。

(3)只有实例方法才能被重写,超类中的final方法不能被重写。

(4)重写方法不能抛出新的检查异常,或者是抛出比被重写方法声明的检查异常

更广泛的检查异常。

19.==和equals()的区别?

“==”,比较引用值和基本数据类型是否相等。

xxx.equals()方法比较对象的内容是否相等。默认的比较规则是:比较引用

20.为什么要同时覆盖hashcode()和equals()?

hashCode()方法要不equals 方法一同覆盖(Sun公司规定)

当两个对象equals 比较为true 时,应具有相同的hashCode()值

当两个对象equals 比较为false 时,应具有不相同的hashCode()值

值要稳定(一致性),一个对象创建以后就不应该再变化

默认的hashCode()值是当前堆对象地址转换的一个整数,这个整数不是内存地址!在java的中,判断两个对象是否相等的规则是:

首先,判断两个对象的hashCode是否相等

如果不相等,认为两个对象也不相等

如果相等,则判断两个对象用equals运算是否相等

如果不相等,认为两个对象也不相等

如果相等,认为两个对象相等

21.String类有哪些常用的方法?

charAt()

length()

trim()

toLowerCase()

toUpperCase()

indexOf()

lastIndexOf()

endsWith()

startsWith()

substring(int start, int end)

substring(int start)

toCharArray()

22.String,StringBuilder,StringBuffer的区别?

String = char[] + 操作(复制创建新对象) char[]不可变

StringBuilder = char[] + 对char[]操作(处理当前数组内容) char[]可变

1) StringBuilder 是变长字符序列

2) StringBuilder 方法:append,insert ... 都返回当前StringBuilder 对象本身的引用

StringBuffer 和StringBuilder API 几乎一样!

StringBuffer 是java早期提供的(JDK1.0),速度稍慢,线程安全

StringBuilder 是Java5 以后提供的(JDK5.0),速度快,非线程安全

23.谈谈集合框架的理解?

集合框架包括集合不映射(Collection and Map)

List 元素有先后次序的集合, 元素有index 位置, 元素可以重复,继承自Collection 接口,实现类: ArrayList, Vector, LinkedList

List 表示有先后次序的对象集合

ArrayList是使用变长数组算法实现的,ArrayList 实现自List

1) ArrayList 和Vector 的比较

Vector(1.0 版本提供的),线程安全的,效率稍低,也是使用变长数组算法实现的,继承自List 接口

ArrayList,线程不安全的,效率高速度快(现在较常用)

2) ArrayList 和LinkedList 的比较

是采用双向循环链表实现的List

ArrayList 是采用变长数组算法实现的的List

在ArrayList的中间插入或删除一个元素意味着这个列表中剩余的元素都

会被移动;而在LinkedList的中间插入或删除一个元素的开销是固定的。

ArrayList查询速度快,而LinkedList增删速度快

Set 元素无续, 不能重复添加, 是数学意义上的集合, 继承自Collection 接口

实现类: HashSet(是一个只有Key的HashMap),使用Set时要重写hashCode,equals方法HashMap 以键-值对(关键字:值)的形式存储对象,关键字key 是唯一的、不重复的

1) key 可以是任何对象,Value可以任何对象

2) (key:value)成对放置在集合中

3) 重复的key 算一个,重复添加是替换操作(会覆盖原来的元素)

4) HashMap 根据key 检索查找value 值

HashMap 新,非线程安全,不检查锁,快

Hashtable 旧(JDK1.2 版本以前),线程安全,检查锁,慢一点(差的很小)

23.散列表的特点?

散列表中存放的对象是不连续的,所以称为“散列表”

散列表的优点:查找迅速

在ArrayList 中查找Mac,顺序查找,需要查找5 次

在HashMap 中(底层实现原理是散列表)查找Mac,经过散列运算,仅需 1 次

24.java泛型的作用是什么?

泛型是Java5 以后提出的语法现象,作用是在编译期检查的类型约束(运行期不检查

泛型),泛型可以用来约束类中元素的类型

25.Collection和Collections的区别?

Collection是集合接口,下面有子接口,List,Set

集合的工具类为Collections,同数组的工具类Arrays 相同,其中提供了许多的方法,诸如排序、二分查找、打乱、填充等操作。

26.内部类的分类?各有什么特点?

1) 根据位置的不同,Java 中的内部类分为四种:

静态内部类

使用static 修饰,声明在类体中

静态内部类中可以访问外部类的静态成员

成员内部类

声明在类体中,不使用static,具有类的成员特征,也就是,必须有类的实例才能

创建内部类实例

内部类实例可以访问共享外部类的成员变量(很常用)

如:链表的节点就可以定义为内部类

局部内部类把类声明在方法中,就是局部内部类,作用域

类似局部变量(很少见)

匿名内部类

匿名类,非常常见,可以写在任何地方,就像一般的语句

语法更象是创建对象:Date d = new Date(){//...};

匿名类是对原类的一个继承,同时创建了实例,{} 就是继承以后的类体

类体中可使用所有类的语法

匿名类不能写构造器

匿名类可以从抽象类或者接口继承,必须提供抽象方法的实现

2) 任何内部类都编译成独立的class 文件

3) 最大的作用:封装!

27.怎么将Date和String互相转换?

28.Java中的异常理解?

异常是程序运行过程过程出现的错误,在Java中用类来描述,用对象来表示具体的异常。Java 将其区分为Error与Exception,Error是程序无力处理的错误,Exception是程序可以处理的错误。

1)Error与Exception

Error是程序无法处理的错误,比如OutOfMemoryError、ThreadDeath等。这些异常发生时,Java虚拟机(JVM)一般会选择线程终止。Error:一般指虚拟机相关问题,如虚拟机崩溃,虚拟机出错等这种错误无法恢复或不可捕获,将导致应用程序中断。对于Error一般不编写针对性代码对齐进行处理。

Exception是程序本身可以处理的异常,这种异常分两大类运行时异常和非运行时异常。程序中应当尽可能去处理这些异常。

2)运行时异常和非运行时异常

检查异常:当代码中抛出了一个检查异常,那么编译器在编译代码时会检查代码是否有处理该异常的代码片段,没有则编译不通过。

非检查异常:编译器不检查该类异常抛出是否有代码处理。

(ClassNotFoundException不是RuntimeException的子类)

运行时异常都是RuntimeException类及其子类异常,如NullPointerException、IndexOutOfBoundsException,ArrayIndexOutOfBoundsException, ClassCastException 等,这些异常是不检查异常,程序中可以选择捕获处理,也可以不处理。这些异常一般是由程序逻辑错误引起的,程序应该从逻辑角度尽可能避免这类异常的发生。

非运行时异常是RuntimeException以外的异常,类型上都属于Exception类及其子类。从程序语法角度讲是必须进行处理的异常,如果不处理,程序就不能编译通过。如IOException、SQLException等以及用户自定义的Exception异常,一般情况下不自定义检查异常。

自定义异常(自己定义异常表达错误)

MyException extends Exception 检测(check)异常

MyException extends RuntimException 运行时(runtime)异常

29.JAVA中异常处理的方式有哪些?

1)try…catch…finally

try{

//(尝试运行的)程序代码

}catch(异常类型异常的变量名){

//异常处理代码

}finally{

//

}

注:子类异常的处理块必须在父类异常处理块的前面,否则会发生编译错误。

finally块中一定会执行吗?

2)throws,throw

throw关键字是用于方法体内部,用来抛出一个Throwable类型的异常。如果抛出了检查异常,则还应该在方法头部声明方法可能抛出的异常类型。

throws关键字用于方法体外部的方法声明部分,用来声明方法可能会抛出某些异常。仅当抛出了检查异常,该方法的调用者才必须处理或者重新抛出该异常。

30.实现序列化的作用?(implements Serializable)

序列化的作用是,将数据分解成字节流,以便存储在文件中或在网络上传输。

31.IO流的分类?以及常用流的写法?

分为:字节流和字符流或者输入流和输出流

InputStream is = new FileInputStream("gbk.txt");

Reader in = new InputStreamReader(is);

BufferedReader reader = new BufferedReader(in);

PrintWriter out = new PrintWtirer(

new OutputStreamWriter(

new FileOutputStream(filename)));

32.创建线程的两种方式?

继承Thread 类(extends Thread)或者实现Runnable 接口(implements Runnable)

1) 继承Thread 类

实现步骤:

继承Thread 类, 覆盖run()方法, 提供并发运程的过程

创建这个类的实例

使用start() 方法启动线程

2) 实现Runnable 接口

实现步骤:

实现Runnable 接口, 实现run()方法, 提供并发运程的过程

创建这个类的实例, 用这个实例作为Thread 构造器参数,创建Thread 类

使用start() 方法启动线程

33.线程的5 中状态

1) New 新建状态

当程序使用new关键字创建了一个线程后,该线程就处于新建状态,此时线程还未启动,当线程对象调用start()方法时,线程启动,进入Runnable 状态

2) Runnable 可运行(就绪)状态

当线程处于Runnable 状态时,表示线程准备就绪,等待获取CPU

3) Running 运行(正在运行)状态

假如该线程获取了CPU,则进入Running 状态,开始执行线程体,即run()方法中的内

注意:

如果系统叧有1个CPU,那么在仸意时间点则叧有1条线程处于Running 状态;

如果是双核系统,那么同一时间点会有2条线程处于Running 状态

但是,当线程数大于处理器数时,依然会是多条线程在同一个CPU 上轮换执行

当一条线程开始运行时,如果它不是一瞬间完成,那么它不可能一直处于Running 状态,线程在执行过程中会被中断,目的是让其它线程获得执行的机会,像这样线程调度的策

略取决于底层平台。对于抢占式策略的平台而言,系统系统会给每个可执行的线程一小

段时间来处理仸务,当该时间段(时间片)用完,系统会剥夺该线程所占资源(CPU),

让其他线程获得运行机会。

调用yield()方法,可以使线程由Running 状态进入Runnable 状态

4) Block 阻塞(挂起)状态

当如下情冴下,线程会进入阻塞状态:

线程调用了sleep()方法主动放弃所占CPU 资源

线程调用了一个阻塞式IO 方法(比如控制台输入方法),在该方法返回前,该线

程被阻塞

当正在执行的线程被阻塞时,其它线程就获得执行机会了。需要注意的是,当阻塞结束

时,该线程将进入Runnable 状态,而非直接进入Running 状态

5) Dead 死亡状态

当线程的run()方法执行结束,线程进入Dead 状态

需要注意的是,不要试图对一个已经死亡的线程调用start()方法,线程死亡后将不能再次作为线程执行,系统会抛出IllegalThreadStateException 异常

注:

1) new运算创建线程后,线程进入New状态(初始状态)

2) 调用start()方法后,线程从New状态进入Runnable 状态(就绪状态)

方法是在main()方法(Running 状态)中调用的

3) 线程结束后,进入Dead 状态(死亡状态),被对象垃圾回收

4) main()方法结束后,其它线程,比如上例中p1和p2 开始抢着进入Running 状态

由谁抢到是底层操作系统决定(操作系统分配时间片)

单核处理器:在一个时间点上叧有一个线程在Running 状态;双核处理器:2 个

如果p1 进入Running 状态,当操作系统分配给它的时间片到期时,p1进入Runnable 状态,p2进入Running 状态

在期间有可能其它的进程的线程获得时间片,那么p1和p2同时进入Runnable 状态,等待操作系统分配时间片

5) 线程进入Dead 状态后,叧能被垃圾回收,不能再开始

6) 如果线程在运行过程中,自己调用了yield()方法,则主动由Running 状态进入Runnable 状态

34. 异步与同步的区别?

1) 异步

并发, 各干自己的。如: 一群人上卡车

2) 同步

步调一致的处理。如: 一群人上公交车

35.数据库中,char和varchar类型的区别?

char(n) 表示定长字符串( 方便查询) 最长放入n个字符, 放入的数据如果不够n个字符则补空格, 无论如何都占n个字符长度。

varchar(n) 表示变长字符串( 节省空间) 最长放入n个字符, 放入的数据是几个长度就占多大空间。

select decode(a2,'A','AAAA','BBBB') FROM table ;

select decode(a1,'A ','AAAA','BBBB') FROM TT ; --此处是两个空格

36.在数据库中怎么做表的复制?(一条语句完成)?

create table emp_xxx as select * from emp_yyy ;

(注:如何将一个表中的数据复制到另外一个表中?

insert into table(select * from table2);两个表结构一样

insert into table(name,age) (select name,age from table2);复制指定的字段

37.分别简述一下DDL,DML,DQL,TCL,DCL?

1)数据定义语言DDL( Data Definition Language ) , 是SQL语言集中负责数据结构定义不数据库对象定义的语言, 主要有create、alter、drop 和truncate 四种常用语句。

DDL对数据结构起作用。

数据库对象的创建

修改数据库对象

删除数据库对象

清空表数据

2) 数据操纵语言DML( Data Manipulation Language ) , 用户通过它可以实现对数据表的

基本操作, 即对表中数据的增、删、改。

DML对数据起作用。

插入操作

更新操作

删除操作

3) 数据查询语言DQL( Data Query Language ) , 用户主要通过它实现对数据的查询操作。

select 查询操作

4) TCL事务控制语句是用来对DML操作进行确认的。

commit 提交数据

rollback 数据回滚

savepoint 保存点

5) 数据控制语言(Data Control Language,DCL)用于对用户授权或撤销其权限,也可使用角色实现对用户的批量授权或撤销权限,在应用开发层面较少用到。

grant(授予权限)/revoke(回收权限)

38.Oracle常用的单行函数有哪些?

round( 数字, 小数点后的位数)用于数字的四舍五入

trunc( 数字, 小数点后的位数)用于截取,如果没有第二个参数, 默认是0

to_date()和to_char()是时间处理的函数

to_date 将字符串数据按指定格式转换为日期数据

to_char 将日期数据按指定格式转换为字符串数据

coalesce( 参数列表)函数的作用:返回参数列表中第一个非空参数, 参数列表中最

后一个值通常为常量

decode()函数是Oracle 中等价于case when语句的函数, 作用同case 语句相同。

decode 函数语法如下:

decode(判断条件, 匹配1 , 值1 , 匹配2 , 值2 , …, 默认值) nvl(bonus,0) 空值转换函数

39.常用的组函数有哪些?

AVG 求平均数

COUNT 求数量

MAX 求最大值

MIN 求最小值

SUM 求和

注意:

avg/sum操作数字

max/min可以操作各种数据类型

组函数默认忽略空值

40.判断语句是否正确?

select ename,count(*) from emp where ename='KING' group by ename;

select count(*),sum(sal) from emp group by ename;

在SELECT列表中所有未包含在组函数中的列都应该包含在GROUP BY 子句中。

包含在GROUP BY 子句中的列不必包含在SELECT列表中。

41. 研发部有哪些职位?

select distinct job from emp_xxx

where deptno = ( select deptno

from dept_xxx

where dname = 'developer' ) ;

42.ALL,Any,In的用法?

ALL --大于最大值

Any--大于最小值

子查询的条件是单列还是多列没关系, 关键是要分清返回的是单行还是多行。

如果是单行, 用单行比较运算符, = , >, < 这些

如果是多行, 用in, >all, >any,

43. 哪个部门的平均薪水比部门20的平均薪水高?

select deptno , avg( nvl(salary , 0) ) avg_s

from emp_xxx

group by deptno

having avg(nvl(salary,0)) > ( select avg(nvl(salary,0))

from emp_xxx

where deptno = 20 ) ;

44.什么叫关联子查询?

子查询中不再是独立的Sql语句, 需要依赖主查询传来的参数, 这种方式叫关联子

查询

哪些员工的薪水比本部门的平均薪水低?不再和整个部门的平均薪水比较。

select ename, salary, deptno

from emp_xxx a

where salary < ( select avg(nvl(salary,0))

from emp_xxx

where deptno = a.deptno ) ;

--子查询不再是独立的Sql 语句, 需要依赖主查询传来的参数a.deptno

45. 哪些人不是别人的经理?

select ename from emp_xxx a

where not exists (select 1 from emp_xxx

where mgr = a.empno) ;

46. union 和union all的区别?

union去掉重复记录, union all不去重

排序, union all不排序

(当列的个数、列的顺序、列的数据类型一致时,我们称这两个结果集结构相同

只有结构相同的结果集才能做集合操作)

47.Oracle中表连接的方式有哪些?

内连接(自然连接)

等值连接、自然连接和不等值连接

{内连接是join 关键字连接两个表,语法为table1 join table2 on 条件。

根据使用的比较方式不同,内连接又分为等值连接、自然连接和不等值连接。

等值连接:所谓等值连接,是指在连接条件中使用等于(=)运算符比较被连接的值,也就是通过相等的列值连接起来的查询。

例子:Select empno,ename,sal,emp.deptno,dname from emp,dept where emp.deptno=dept.deptno;

非等值连接:所谓不等连接,就是在连接条件中使用除等号(=)外的其他比较运算符,构成非等值连接查询。可以使用的比较运算符包括:>(大于)、<(小于)、>=(大于等于)、<=(小于等于)、<>(不等于)、!=(不等于)、LIKE、IN和BETWEEN等。

例子:select e.ename,e.sal,s.grade from emp e join salgrade s on e.sal between s.losal and s.hisal; 查询所有员工的薪水等级

自然连接:自然连接是在两张表中寻找那些数据类型和列名都相同的字段,然后自动地将他们连接起来,并返回所有符合条件的结果。

例子:select * from emp natural join dept;

外连接

外连接的结果集= 内连接的结果集+ 驱动表在匹配表中找不到匹配记录的数据和空值

使用一张表中的所有记录去和另一张表中的记录按条件匹配(空值也会匹配),这个表中的所有记录都会显示。

左外连接,右外连接,全外连接

LEFT/RIGHT/FULL OUTER JOIN

(1)左外连接 (左边的表不加限制)

【例】t1 left outer join t2 --其中t1是驱动表,t2是匹配表

等价于:t2 right outer join t1

【例】查询每个员工的经理的名字?

select worker.ename,manager.ename from emp worker left outer join emp manager on worker.mgr=manager.empno;

(2)右外连接(右边的表不加限制)

t1 right outer join t2 --t2是驱动表,t1是匹配表等价于: t2 left outer join t1

【例】-哪些员工没有下属(不是别人的领导)? 外连接+匹配表PK is null 表示否定问题,不是,不包括,等等。

select manager.ename from emp worker

right outer join emp manager on worker.mgr = manager.empno

(首先找到所有经理下面的员工是哪些)

where worker.empno is null;

(然后将员工为空的过滤出来)

(3)全外连接(左右两表都不加限制)full outer join

{

左表和右表都不做限制,所有的记录都显示,两表不足的地方用null 填充。

【例】

select e.ename, d.loc from emp e full outer join dept d on

(e.deptno = d.deptno);

}

自连接(同一张表内的连接)自连接是等值连接的一种。表中的列外键关联自己表的

主键列。

自连接(self join)是SQL语句中经常要用的连接方式,使用自连接可以将自身表的一个镜像当作另一个表来对待,从而能够得到一些特殊的数据。

【例】查询每个员工的经理的名字?

select worker.ename,manager.ename from emp worker join emp manager on worker.mgr=manager.empno;

48.什么是事务(Transaction)?什么是事务控制?

事务(Transaction)是指组成单个逻辑工作单元的一系列操作

事务控制(Transaction Control)则是指通过将一组相关操作组合为一个要么全部成功、要么全部失败的逻辑工作单元(即事务),以简化错误恢复、提高应用程序的可靠性。

49. 约束条件(constraint)有哪些?

主键( Primary key, 简称PK )

1) 主键约束( primary key ) = 不能重复+ 不能为null

2) 主键约束可以用两种方式定义:列级约束和表级约束

非空约束( not null , 简称NN )

注意:非空约束只能定义在列级

唯一约束( Unique , 简称UK )

可以定义在表级和列级

检查约束( Check , 简称CK )

可以定义在表级和列级

因为约束条件建立在列级时可读性不好, 而丐不方便定义约束条件名字, 一般建议定义在表级。

外键( Foreign key, 简称FK )

之前讲的几个约束条件都是用来约束单个表中的列, 而外键约束定义在两个表的两个字段上( 或者一个表的两个字段上) , 用亍保证相关两个字段的关系

constraint fk_customerid__cardinfo2 foreign key(customerID) references userInfo(customerID) 注意:一张表中,只能有一个PK,但是可以有多个FK

50. 视图(View), 索引(Index), 序列(Sequence)?

视图(View):

视图的使用和表相同

视图的好处:简化查询;屏蔽数据库表结构、限制对数据的访问

视图不包含任何数据。是基表数据的投影。

视图本身并不在物理上保存数据,在视图上进行的查询或更新操作实际上都是针对其基表来完成的。

当基表变化时,视图也随着变化。

索引(Index):

index :索引(Index)一种用于提升查询效率的数据库对象,使用索引可以快速定位数据、减少磁盘I/O操作次数。,注意:对于数据变更频繁(DML操作频繁)的表, 索引会影响查询性能。

如果数据表有PK/Unique 两种约束, 索引自动创建, 除此以外, 索引必须手动创建

自定义索引语法:create index 索引名on 表名(列名) ;

为什么索引查询快?

(Oracle server 通过rowid快速定位要找的行

通过rowid定位数据能有效的降低读取数据块的数量

索引的使用和维护是自动的,一般情况下不需要用户干预)

序列(Sequence):

序列的特性:产生连续的不同的数字值用来作为数据表的主键。序列这种对象在Oracle、db2 等数据库中有, 在mysql、sql server 中没有。(在mysql通过auto_increment自动增长列来实现同样的功能)

51. TRUNCATE 与前述DELETE 操作的区别?

DELETE 为DML 操作,可以回滚,而TRUNCATE 为DDL 操作,一经执行不可撤销,故其效率要高一些;DELETE 操作可以选择删除表中全部或部分数据,而TRUNCATE 操作只能删除表中全部数据。

如果不再用到表中数据、但又需要保留表的结构,则可该使用TRUNCATE TABLE操作;如果连表的结构也需要了,则可使用DROP TABLE 操作将表彻底删除。

52. 第n条到第n条记录的获取方式?

Oracle获取方式:

select ename,sal,rn from (select ename,sal,rownum rn from emp) where rn>=5 and rn<=10;

select ename,sal,rn from (select ename,sal,rownum rn from emp) where rn between 5 and 10;

select id,name,jop,rn from(select id,name,jop,rownum rn from dept10 where rownum<10) where rn>5;

select t2.* from (select t1.*,rownum rn from emp t1 where rownum<=5) t2 where rn>3;

MySql获取方式:

SELECT * FROM table LIMIT 5,10; // 检索记录行6-15

53.JDBC编程步骤?

1)注册Driver

Oracle: Class.forName(“oracle.jdbc.driver.OracleDriver”);

Mysql: Class.forName(“com.mysql.jdbc.Driver”);

2)建立连接

Mysql: String url = “jdbc:mysql://localho st:3306/tarena”;

Oracle: String url = “jdbc:oracle:thin:@localhost:1521:tarena”;

String name=”root”;

String pwd =”root”;

Connection conn = DriverManager.getConnection(url,name,pwd);

3)获得一个Statement对象(两种方式)

Statement sta = conn.createStatement();

PreparedStatement pstm = conn.prepareStatement();

4) 通过Statement执行Sql 语句

ResultSet rs = sta.executeQuery(String sql);返回一个查询结果集。用于select语句

int I = sta.executeUpdate(String sql);返回值为int 型,表示影响记录的条数。用于

insert,update,delete语句。

5)处理结果集

while(rs.next()){

System.out.println(rs.getString(“name”));

//------------------

}

6) 关闭数据库连接(释放资源)调用.close()

rs.close(); sta.close(); con.close();

ResultSet Statement Connection 是依次依赖的。

54. Statement和PreparedStatement区别?

1)PreparedStatement代码的可读性和可维护性

2) PreparedStatement尽最大可能提高性能.

数据库会对PreparedStatement语句进行预编译,下次执行相同的sql语句时,数据库端不会再进行预编译了,而直接用数据库的缓冲区,提高数据访问的效率。

3)最重要的一点是极大地提高了安全性.

如果是Statement构建的语句:select * from tb_name = '随意' and passwd = '' or '1' = '1';很容易造成Sql注入。而如果你使用预编译语句.你传入的任何内容就不会和原来的语句发生任何匹配的关系。

55.xml和html的区别?

XML 被设计用来传输和存储数据。

HTML 被设计用来XML 不是HTML 的替代。

XML 和HTML 为不同的目的而设计:

XML 被设计为传输和存储数据,其焦点是数据的内容。

HTML 被设计用来显示数据,其焦点是数据的外观。

HTML 旨在显示信息,而XML 旨在传输信息。显示数据。

1) 超文本标记语言HTML(Hyper Text Markup Language

写法格式:link

关注数据的展示不用户体验

标记是固定的,不可扩展(如表示超链接)

2) 可扩展的标记语言XML(eXtensible Markup Language

写法格式:同html样式link

仅关注数据本身

标记可扩展,可自定义

56.XML的解析方式?

1)DOM(Document Object Model 文档对象模型)

关键字:树(Document)

优点:把xml文件在内存中构造树形结构,可以遍历和修改节点

缺点:如果文件比较大,内存有压力,解析的时间会比较长

2)SAX(Simple API for Xml 基于XML的简单API)

关键字:流(Stream)

把xml文件作为输入流,触发标记开始,内容开始,标记结束等动作

优点:解析可以立即开始,速度快,没有内存压力

缺点:不能对节点做修改

57. servlet 是如何运行的?

当用户向浏览器地址栏输入http://ip:port/helloweb/sayHello?name=zs

Java基础测试题(答案)

1. 有以下程序片段,下列哪个选项不能插入到行1。( D ) 1. 2.public class Interesting{ 3.//do sth 4. } (只能有一个public修饰的class) A、import java.awt.*; B、package mypackage; C、class OtherClass{ } D、public class MyClass{ } 2. 以下哪项是接口的正确定义?( B D ) A、interface B { void print(){};} (接口里的方法都是抽象的,不能有方法体) B、abstract interface B { void print() ;} C、abstract interface B extends A1,A2 //A1、A2为已定义的接口 { abstract void print(){ };} (同上) D、interface B { void print();} 1.接口可以声明为public(公共)或默认的访问权限。接口隐含表明是抽象的(abstract)的。 2.接口的方法默认即为public(公共)且是abstract(抽象)的. 3.接口中的变量默认即为public(公共), static(静态) and final(最终的)。 接口声明编译器如何解释呢 public interface Searchable {}public abstract interface Searchable {} abstract interface Searchable {}abstract interface Searchable {} interface Searchable {}abstract interface Searchable {}

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后,会在当前目录下查找要运

入门大数据,需要学习哪些基础知识

大数据的发展历程总体上可以划分为三个重要阶段,萌芽期、成熟期和大规模应用期,20世纪90年至21世纪初,为萌芽期,随着,一批商业智能工具和知识管理技术的开始和应用,度过了数据萌芽。21世纪前十年则为成熟期,主要标志为,大数据解决方案逐渐走向成熟,形成了并行计算与分布式系统两大核心技,谷歌的GFS和MapReduce等大数据技术受到追捧,Hadoop平台开始大行期道,2010年以后,为大规模应用期,标志为,数据应用渗透各行各业,数据驱动决策,信息社会智能化程度快速提高。 数据时代的到来,也推动了数据行业的发展,包括企业使用数据获取价值,促使了大量人员从事于数据的学习,学习大数据需要掌握基础知识,接下从我的角度,为大家做个简要的阐述。 学习大数据需要掌握的知识,初期了解概念,后期就要学习数据技术,主要包括: 1.大数据概念 2.大数据的影响

3.大数据的影响 4.大数据的应用 5.大数据的产业 6.大数据处理架构Hadoop 7.大数据关键技术 8.大数据的计算模式 后三个牵涉的数据技技术,就复杂一点了,可以细说一下: 1.大数据处理架构Hadoop:Hadoop的特性、Hadoop生态系统、Hadoop 的安装与使用; 2.大数据关键技术技术:数据采集、数据存储与管理、数据处理与分析、数据隐私与安全; 3.大数据处理计算模式:批处理计算、流计算、图计算、查询分析计算

数据的核心技术就是获取数据价值,获取数据前提是,先要有数据,这就牵涉数据挖掘了。 本文内容由北大青鸟佳音校区老师于网络整理,学计算机技术就选北大青鸟佳音校区!了解校区详情可进入https://www.wendangku.net/doc/fb3656645.html,网站,学校地址位于北京市西城区北礼士路100号!

java基础笔试测试题与答案

Java 一章至五章考试 一. 填空题(8 分) 1. 面向对象的三大原则是( 封装),( 继承) 和( 多态).2 分 2. 如果想在对象实例化的同时就初始化成员属性,则使用( 构造函数).2 分 3. ( 实体) 方法和( 构造) 方法不能修饰为abstract ?2分 二.选择题(60 分) 1) 在Java 语言中,下列(a,d )是不满足命名规范的变量名。(选择二项) a) 姓名 b) $Name c) _instanceof d) instanceof 2) 下列Java 代码片段的输出结果是( a ) 。 char c='a'; int i=c; float f=i; byte b=(byte)c; System.out.println(c+","+i+","+f+","+b); a) 编译错误 b) a,97,97,97 c) a,97,97.0,97 d) a,97,97.0f,97 3) 下列Java 代码中,空白处的代码是(b,c )。( 选择两项) public interface Fee{ public float calLabFee(float unitPrice, float time); } public class FeeImpl implements Fee { public float calLabFee(float unitPrice, float time){ return unitPrice * time; } } public class FeeInterfaceTest { public static void main(String[] args){ ________________ Float labFee = fee.calLabFee(400.00,5); } }

史上最全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程序呢?很多人并不了解。

云计算和大数据基础知识培训课件

云计算与大数据基础知识 一、云计算是什么? 云计算就是统一部署的程序、统一存储并由相关程序统一管理着的数据! 云计算cloud computing是一种基于因特网的超级计算模式,在远程的数据中心里,成千上万台电脑和服务器连接成一片电脑云。因此,云计算甚至可以让你体验每秒超过10万亿次的运算能力,拥有这么强大的计算能力可以模拟核爆炸、预测气候变化和市场发展趋势。用户通过电脑、笔记本、手机等方式接入数据 中心,按自己的需求进行运算。 云计算是一种按使用量付费的模式,这种模式提供可用的、便捷的、按需的网络访问,进入可配置的计算资源共享池(资源包括网络,服务器,存储,应用软件,服务),这些资源能够被快速提供,只需投入很少的管理工作,或与服务供应商进行很少的交互。 通俗的理解是,云计算的“云”就是存在于互联网上的服务器集群上的资源,它包括硬件资源(服务器、存储器、CPU等)和软件资源(如应用软件、集成开发环境等),所有的处理都在云计算提供商所提供的计算机群来完成。 用户可以动态申请部分资源,支持各种应用程序的运转,无需为繁琐的细节而烦恼,能够更加专注于自己的业务,有利于提高效率、降低成本和技术创新。 云计算的核心理念是资源池。 二、云计算的基本原理 云计算的基本原理是,在大量的分布式计算机集群上,对这些硬件基础设施通过虚拟化技术构建不同的资源池。如存储资源池、网络资源池、计算机资源池、数据资源池和软件资源池,对这些资源实现自动管理,部署不同的服务供用户应用,这使得企业能够将资源切换成所需要的应用,根据需求访问计算机和存储系统。 打个比方,这就好比是从古老的单台发电机模式转向了电厂集中供电的模式。它意味着计算能力也可以作为一种商品进行流通,就像煤气、水电一样,取用方便,费用低廉。最大的不同在于,它是通过互联网进 行传输的。 三、云计算的特点 1、支持异构基础资源 云计算可以构建在不同的基础平台之上,即可以有效兼容各种不同种类的硬件和软件基础资源。硬件基础资源,主要包括网络环境下的三大类设备,即:计算(服务器)、存储(存储设备)和网络(交换机、路由器等设备);软件基础资源,则包括单机操作系统、中间件、数据库等。 2、支持资源动态扩展 支持资源动态伸缩,实现基础资源的网络冗余,意味着添加、删除、修改云计算环境的任一资源节点,或者任一资源节点异常宕机,都不会导致云环境中的各类业务的中断,也不会导致用户数据的丢失。这里的

Java基础笔试机试测试题(带答案)

Java基础考试题 班级:__________ 姓名:___________ 日期:_____________ 一、笔试(45题,每题2分) 1) 分析下面的Java程序段,编译运行后的输出结果是()。 public class Test { public static void changeString(StringBuffer sb) { sb.append("stringbuffer2"); } public static void main(String[] args) { StringBuffer sb = new StringBuffer("stringbuffer1"); changeString(sb); System.out.println("sb = " + sb.toString()); } } A. sb = stringbuffer2stringbuffer1 B. sb = stringbuffer1 C. sb = stringbuffer2 D. sb = stringbuffer1stringbuffer2 2) 在Java中,包有多种用途,但不包含()。 A. 将类组合成较小的单元,便于使用 B. 有助于避免命名冲突 C. 有助于提高运行效率 D. 允许在更广的范围内保护类、数据和方法 3) 在Java中,如果要在字符串类型s="java"中,得到字母'v' 出现的位置,选()语句。 A)s.matches('v'); B)s.charAt('v'); C)s.indexOf('v'); D)s.substring('v'); 4)下列代码运行后,变量c的值是()。 int a=15,b=10; double c=a/b; a) 1.5 b) 1.0 c) 1 d) 0 5)main方法如下所示,该程序的运行结果是()。 public static void main(String [] args){ int i=0; System.out.print(i++); } a) 输出0 b) 输出1 c) 编译错误d) 运行时出现异常

云计算和大数据基础知识12296

精心整理 云计算与大数据基础知识 一、云计算是什么? 云计算就是统一部署的程序、统一存储并由相关程序统一管理着的数据! 云计算cloudcomputing是一种基于因特网的超级计算模式,在远程的数据中心里,成千上万台电脑和服务器连接成一片电脑云。因此,云计算甚至可以让你体验每秒超过10万亿次的运算能力,拥有这么强大的计算能力可以模拟核爆炸、预测气候变化和市场发展趋势。用户通过电脑、笔记本、手机等方式接入数据中心,按自己的需求进行运算。 二、 三、 1 );软件2 任一资源节点异常宕机,都不会导致云环境中的各类业务的中断,也不会导致用户数据的丢失。这里的资源节点可以是计算节点、存储节点和网络节点。而资源动态流转,则意味着在云计算平台下实现资源调度机制,资源可以流转到需要的地方。如在系统业务整体升高情况下,可以启动闲置资源,纳入系统中,提高整个云平台的承载能力。而在整个系统业务负载低的情况下,则可以将业务集中起来,而将其他闲置的资源转入节能模式,从而在提高部分资源利用率的情况下,达到其他资源绿色、低碳的应用效果。 3、支持异构多业务体系 在云计算平台上,可以同时运行多个不同类型的业务。异构,表示该业务不是同一的,不是已有的或事先定义好的,而应该是用户可以自己创建并定义的服务。这也是云计算与网格计算的一个重要差异。 4、支持海量信息处理 云计算,在底层,需要面对各类众多的基础软硬件资源;在上层,需要能够同时支持各类众多的异构的业务;

而具体到某一业务,往往也需要面对大量的用户。由此,云计算必然需要面对海量信息交互,需要有高效、稳定的海量数据通信/存储系统作支撑。 5、按需分配,按量计费 按需分配,是云计算平台支持资源动态流转的外部特征表现。云计算平台通过虚拟分拆技术,可以实现计算资源的同构化和可度量化,可以提供小到一台计算机,多到千台计算机的计算能力。按量计费起源于效用计算,在云计算平台实现按需分配后,按量计费也成为云计算平台向外提供服务时的有效收费形式。 四、云计算按运营模式分类 1、公有云 公有云通常指第三方提供商为用户提供的能够使用的云,公有云一般可通过Internet使用,可能是免费或成本低廉的。 烦。B 2 3 五、 六、 1、传统的IT部署架构是“烟囱式”的,或者叫做“专机专用”系统。 图2传统IT基础架构 这种部署模式主要存在的问题有以下两点: 硬件高配低用。考虑到应用系统未来3~5年的业务发展,以及业务突发的需求,为满足应用系统的性能、容量承载需求,往往在选择计算、存储和网络等硬件设备的配置时会留有一定比例的余量。但硬件资源上线后,应用系统在一定时间内的负载并不会太高,使得较高配置的硬件设备利用率不高。 整合困难。用户在实际使用中也注意到了资源利用率不高的情形,当需要上线新的应用系统时,会优先考虑部署在既有的基础架构上。但因为不同的应用系统所需的运行环境、对资源的抢占会有很大的差异,更重要的是考虑到可靠性、稳定性、运维管理问题,将新、旧应用系统整合在一套基础架构上的难度非常大,更多的用户往往选择新增与应用系统配套的计算、存储和网络等硬件设备。

Java基础试题及其答案

Java试题 1) java程序中,main方法的格式正确的是()。(选择一项) a)static void main(String[] args) b)public void main(String[] args) c)public static void main(String[]s) d)public static void main(String[] args) 2)给定java代码,如下: public byte count(byte b1,byte b2){ return______; } 要使用这段代码能够编译成功,横线处可以填入()。(选择一项)a)(byte) (b1-b2) b)(byte) b1-b2 c) b1-b2 d) (byte) b1/b2 3)在Java中,在包下定义一个类,要让包下的所有类都可以访问这个类,这个类必须定义为()。(选择一项) a)protected b)private c)public d)friendly 4)在Java中,下列()语句不能通过编译。 (选择一项) a) String s= “join”+ “was”+ “here”; b) String s= “join”+3; “”+new Person() toString() c) int a= 3+5 d) float f=5+; double float 6)给定java代码如下,运行时,会产生()类型的异常。(选择一项) String s=null; (“abc”); a)ArithmeticException b)NullPointerException c)IOException d)EOFException 已到文件尾,再读取抛出 7) 在java中,()对象可以使用键/值的形式保存数据。(选择一项) a)ArrayList List 有序可重复 b) HashSet Set 无序不可重复同一对象是重复 的 c) HashMap Map(key/value)重复定义:hashCode、 equals(业务) d) LinkedList List 8)给定如下java代码,编译运行之后,将会输出()。 public class Test{ public static void main(String args[]){ int a=5;

云计算和大数据基础知识

* 1: 100. 云计算 (一)大数据(BigData) 1. 定义:海量数据或巨量数据,其规模巨大到无法用当前主流的计算机系统在合理时间内获取、存储、管理、处理并提取以帮助使用者决策。 2. 特点:1)数据量大(Volume)----- PB 级以上 2)快速(Velocity)----- 数据增长快 3)多样(Variety)----- 数据来源及格式多样 4)价值密度低(Value )----- 从大量、多样数据中提取价值的体系结构 5)复杂度(Complexity)-----对数据处理和分析的难度大 3.大数据与云计算的关系: 从技术上看,大数据与云计算的关系就像一枚硬币的正反面一样密不可分。大数据必然无法用单台的计算机进行处理,必须采用分布式计算架构。 它的特色在于对海量数据的挖掘,但它必须依托云计算的分布式处理、分布式数据库、云存储和虚拟化技术。 (二)云计算(Cloud Computing) 1.定义:1)云计算是一种商业计算模型。它将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和信息服务。 //分布式计算 2)云计算是通过网络按需提供可动态伸缩的廉价计算服务。 2. 特点:1)超大规模 2)虚拟化 3)高可靠性 4)通用性 5)高可伸缩性 6)按需服务 7)极其廉价 3. 服务类型分类: 1)SaaS (软件即服务::Software as a Service) //针对性更强,它将某些特定应用软件功能封装成服务如:Salesforce online CRM

2)PaaS (平台即服务:Platform as a Service)//对资源的抽象层次更进一步,提供用户应用程序运行环境如:Google App Engine ,Microsoft Windows Azure 3)IaaS (基础设施作为服务:Infrastructure as a Service)//将硬件设备等基础资源封装成服务供用户使用,如:Amazon EC2/S3 4. 云计算的实现机制(体系结构) 1)SOA (面向服务的体系结构):它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。使得其服务能以一种统一的、通用的方式进行交互。 SOA可以看作是B/S模型、XML/Web Service技术之后的自然延伸。 2)管理中间件:(关键部分) 3)资源池层:将大量相同类型的资源构成同构或接近同构的资源池。 4)物理资源层:计算机、存储器、网络设施、数据库和软件等 5. 云计算与网格计算 1)网格是基于SOA、使用互操作、按需集成等技术,将分散在不同地理位置的资源虚拟化为一个整体。 2)关系类似于TCP/IP 协议之于OSI 模型 6. 云计算与物联网 1)物联网有全面感知,可靠传递、智能处理三个特征。云计算提供对智能处理所需要的海量信息的分析和处理支持。 2)云计算架构与互联网之上,而物联网依赖于互联网来提供有效延伸。因而,云计算模式是物理网的后端支撑关键。 * 1.1: 1. Google 云计算原理 (一)文件系统GFS 1)系统架构 2)实现机制:

java基础知识分析

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

JDK, JRE: 1JDK:java DevelopmentKit , java的开发和运行环境,java的开发工具和jre。 2JRE:java Runtime Environment, java程序的运行环境,java运行的所需的类库+JVM(java 虚拟机)。 3配置环境变量:让java jdk\bin目录下的工具,可以在任意目录下运行,原因是,将该工具所在目录告诉了系统,当使用该工具时,由系统帮我们去找指定的目录。 1) 永久配置方式: JAVA_HOME=%安装路径%\Java\jbk Path=%JAVA_HOME%\bin 2) 配置临时方式: setpath=%path%C:\ProgramFiles\Java\jdk\bin 特点:系统默认先去当前路径下找要执行的程序,如果没有,再去path中设置路径下找。 classpath的配置: 1)永久配置方式:classpath=.;c:\;e:\ 2)临时配置方式:setclasspath=.c:\;e:\ 注意:在定义classpath环境变量时,需要注意的情况: 如果没有定义环境变量classpath,java启动jvm后,会在当前目录下查找要运行的类文件。如果指定了classpath,那么会在指定的目录下查找要运行的类文件。 还会在当前目录找吗?两种情况: 1)如果classpath的值结果有分号,在具体路径中没有找到运行的类,会默认在前目录 在找一次。 2)如果classpath的值结果处没有分号,在具体路径中没有找到运行的类,不会再当前 目录找。 一般不指定分号,如果没有在指定目录下找到想运行的类文件,就报错,这样可以调试程序4javac命令和java命令做什么事情呢? 要知道java是分两部分的: 一个人是编译,一个是运行。 Javac: 负责的是编译的部分,当执行javac时,会启动java的编译器程序。对指定扩展名的.java 文件进行编译。生成了jvm可以识别的字节码文件。也就是class文件也就是java的运行程序。 Java: 负责运行的部分.会启动jvm.加载运行时所需的类库,并对class文件进行执行. 一个文件要被执行,必须要有一个执行的起始点就是main函数(也叫方法)。

Java基础试题

考砸了,把做错的题目重新复习一下对应的知识点 一、单项选择(每题2.5分,20 * 2.5’=50’)A 1.下面哪种情况属于方法重载。 A)方法名相同,参数类型与个数不同 B)方法参数类型相同 C)方法参数个数相同 D)方法名相同,方法参数类型与个数也相同 2.你想用下面的代码查找数组最后一个元素的值,当你编译并运行它的时候,会发 生什么?C public class MyAr{ public static void main(String argv[]){ int[] i = new int[5]; System.out.println(i[5]); } } A).编译通过并输出0 B).编译通过并输出 null C).编译通过但发生运行时错误 D).编译出错 3.JFrame的默认布局管理器是什么?C 4.Frame 的默认布局是FlowLayout 5.JFrame的默认布局是BorderLayout A)FlowLayout B)GridLayout C)BorderLayout D)CardLayout 6.给定下面的类定义D class Base{ Base(int i){} } class DefCon extends Base{ DefCon(int i){ //XX } } 如果将标记//XX 的地方替换为下面的行,哪一行是独立合法的? A).super(); B).this();

C).this(99); D).s uper(99); 7.启动线程方法正确的是___D________。 A)run( )方法 B)suspend( )方法 C)stop( )方法 D)start( )方法 6、在Java中,调用Math.random() 方法可能返回的结果是(B) Math.random 返回的是一个double值此值大于0.0 且小于1.0 A)132.34 B)0.342 C)29.34E10 D) 1.0009 7、下面的哪一个声明是合法的?B A) public protected amethod(int i) B) public void amethod(int i) C) public void amethod(void) D) void public amethod(int i) 8、假设有以下Java代码:C import java.applet.*; import java.awt.*; public class My_Applet extends Applet { … } 如果要在HTML页中嵌入以上Applet,可按下面()方式完成。(选择一项) A) B) C) D) 9、在Java中,要想使只有定义该类所在的包内的类可以访问该类,应该用(A)关 键字。 A)不需要任何关键字 B)private C)final D)protected 10、下述哪些说法是正确的?A

Java基础知识总结

基础预备:低级基础 1.1 java基本类型 byte(字节) short(短整型) int(整型) long(长整型) float(浮点型) double(双精度) char(字符型) boolean(布尔型) 1.2值传递和引用传递的区别 值传递:实参初始化形参,两个存储单元不同,不影响实参的值 引用传递:实际参数与形式参数指向同一个地址,形式参数的改变将会影响实际参数1.3当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递? 是值传递。方法调用该对象引用的参数,参数被改变,但是引用不会改变 1.4 &和&&的区别。 &和&&都是逻辑「与」,&&只要第一个表达式是false就不会计算第二个表达式 &也可以作为运算符 2.1使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变 引用变量不能变,引用变量所指向的对象中的内容可以改变 2.2final类型可不可以不初始化,如果没有初始化的final类型应该在哪里初始化? final一定有初始值,没有初始化叫空白final 如果没有需要声明之后在其构造器中赋值 2.3 "=="和equals方法究竟有什么区别? 「==」是看两个对象引用是否指向同一个对象 「 equals() 」是比较两个对象的内容是否相等 3.1静态变量和实例变量的区别 静态变量的变量前加了static 的修饰,其中一个对象将它值改变,其他对象得到的就是改变后的结果; 实例变量的变量前没加static 的修饰,某一个对象将其值改变,不影响其他对象

3.2是否可以从一个static方法内部发出对非static方法的调用?为什么? 不可以。使用非static方法需要先创建对象,而使用static方法则不用 4.1 java中什么是自动装箱与拆箱呢? 自动装箱是某地方需要Integer类型,你传int类型会自动生成Integer, 反之Integer变int,就是自动拆箱 4.2 int 和 Integer 有什么区别 Int是基本数据类型,Integer是int的封装类。 原始类型封装类 Boolean Boolean Char Character Byte Byte Short Short Int Integer Long Long Float Float Double Double 5.1请说出作用域public, protected,以及不写时的区别 不写是表示friendly。 作用域当前类同一package 子孙类其他package public √√√√ protected √√√× friendly √√×× private √××× 6.1能不能自己写个类,也叫https://www.wendangku.net/doc/fb3656645.html,ng.String? 可以,但在应用的时候,需要用自己的类加载器去加载,否则,系统的类加载器永远只是去加载jre.jar包中的那个https://www.wendangku.net/doc/fb3656645.html,ng.String。 7.1 排序都有哪几种方法?请列举。用JAVA实现一个快速排序。 冒泡,选择,插入,快速 冒泡排序:

java基础测试题_含答案

姓名 一、选择题(每题2分,共30分) 1.请写出标识符的命名规则描述正确的是[多选]( ABCD ) A、由英文字母、数字、_和$组成,长度不限。 B、标识符的第一个字符不能是数字 C、标识符区分大小写。 D、标识符不能包含空格。 2. 下列属于正确标识符的选项有[多选](BDGH) A. int B. $_Count C. 3M D. Hello E. b-7 F. ms#d G. bool H. D9658 3、下列哪一个不属于java的基本类型( B ) A、int B、String C、float D、byte 4、下列那条语句能编译通过( A ) A、String String=”String”; B、float float=””; C、int int = 11; D、int i= ; 5、下列代码的执行结果是: ( D ) public class Test1{ public static void main(String args[]){ float t=; int q=5; }

} A、 40 B、 C、36 D、 6、int长度描述正确的是( A ) A、-2^31到2^31 - 1 B、-2^32到2^32 - 1 C、-2^7到2^7 - 1 D、-2^8到2^8 - 1 7、关于==和equals方法描述不正确的是( D ) A、==是运算符、equals是方法 B、==只比较对象,equals会先比较对象,如果不是一个对象,会对对象的值进行比较。 C、String a= "1"; String b= "1"; 输出结果为:true D、String a=new String("1");String b=new String("1"); 输出结果为:true 8、下列关于哪个不属于java的特性( D ) A、封装 B、继承 C、多态 D、重载 9、某一个子类要继承一个父类,要使用关键字( B ) A、import B、extends C、implements D、java 10、某一个子类要实现一个父接口,要使用关键字( C ) A、import B、extends C、implements D、java 11、以下关于接口和类的说法正确的是( C ) A、接口和类都可以实现多重继承 B、子类可以继承多个父类 C、子类可以实现多个接口 D、一个子类不能同时继承某一个父类和实现某一个接口 12、一个非抽象子类,如果要实现某个接口,则( A ) A、必须实现该接口中的所有抽象方法 B、可以实现部分抽象方法 C、可以不实现任何抽象方法

java基础知识速成教程

数据类型 (1) 基本数据类型 (1) 引用类型 (3) 控制语句 (3) 顺序结构 (3) 选择结构 (3) 循环结构 (4) 面向对象 (5) 面向过程和面向对象的区别 (5) 类和对象 (5) 成员变量 (5) 方法 (5) 方法的重载(overload) .................................................................... 错误!未定义书签。 构造方法 (7) 内存分析 (7) package (9) import (10) this (10) static (11) super (11) 面向对象的三大特征 (11) 封装 (11) 继承 (12) 方法的重写(override) (12) 多态 (12) 抽象类 (14) 接口 (14) 面向接口编程......................................................................................... 错误!未定义书签。 本站已经对文档保护进行限制了,取消文档保护密码为:https://www.wendangku.net/doc/fb3656645.html, 步骤:进入word 工具---》取消文档保护 数据类型 基本数据类型 a)数值型 i.整型 1.byte 1个字节(256) -128-127 2.short 2个字节(65536) 正负3万 3.int 4个字节正负21亿 4.long 8个字节

ii.浮点型 1.float 4个字节 2.double 8个字节 注: 类型的自动转换 b)字符型2个字节65536 unicode字符集 c)布尔型

Java基础试题和答案

J a v a基础试题和答案 Revised by Petrel at 2021

J a v a试题1)java程序中,main方法的格式正确的是()。(选择一项) a)staticvoidmain(String[]args) b)publicvoidmain(String[]args) c)publicstaticvoidmain(String[]s) d)publicstaticvoidmain(String[]args) 2)给定java代码,如下: publicbytecount(byteb1,byteb2){ return______; } 要使用这段代码能够编译成功,横线处可以填入()。(选择一项)a)(byte)(b1-b2) b)(byte)b1-b2 c)b1-b2 d)(byte)b1/b2 3)在Java中,在包com.db下定义一个类,要让包com.util下的所有类都可以访问这个类,这个类必须定义为()。(选择一项) a)protected b)private c)public d)friendly 4)在Java中,下列()语句不能通过编译。(选择一项) a)Strings=“join”+“was”+“here”; b)Strings=“join”+3; c)inta=3+5 d)floatf=5+5.5;

5)在Java中下列()方法可以把JFrame的布局管理器设为FlowLayout类型(选择一项) a)jFrame.setLayout(newFlowLayout()); b)jFrame.addLayout(newFlowLayout()) c)jFrame.setFlowLayout() d)jFrame.addFlowLayout() 6)给定java代码如下,运行时,会产生()类型的异常。(选择一项)Strings=null; s.concat(“abc”); a)ArithmeticException b)NullPointerException c)IOException d)EOFException 7)在java中,()对象可以使用键/值的形式保存数据。(选择一项) a)ArrayList b)HashSet c)HashMap d)LinkedList 8)给定如下java代码,编译运行之后,将会输出()。publicclassTest{ publicstaticvoidmain(Stringargs[]){ inta=5; (a+1)/2:a/2); } }(选择一项)

大数据考试题含答案知识讲解

1 多选传统大数据质量清洗的特点有: A. 确定性 B. 强类型性 C. 协调式的 D. 非确定性 2 多选以下选项中属于数据的作用的是()。 A. 沟通 B. 验证假设 C. 建立信心 D. 欣赏 3 多选数据建立信心的作用需具备的条件包括()。 A. 可靠数据源 B. 多方的数据源 C. 合适的数据分析 D. 信得过的第三方单位 4 多选数据只有在与()的交互中才能发挥作用。 A. 人 B. 物 C. 消费者 D. 企业 5 单选大数据可能带来(),但未必能够带来()。 A. 精确度;准确度 B. 准确度;精确度 C. 精确度;多样性 D. 多样性;准确度 6 多选大数据的定义是: A. 指无法在可承受的时间范围内用常规软件工具进行捕捉、管理和处理的数据集合 B. 任何超过了一台计算机处理能力的数据量 C. 技术 D. 商业 7 多选大数据五大类应用方向是: A. 查询 B. 触达 C. 统计 D. 预警 E. 预测 8 多选以下哪些指标是衡量大数据应用成功的标准? A. 成本更低 B. 质量更高 C. 速度更快 D. 风险更低 9 多选大数据有哪些价值? A. 用户身份识别

B. 描述价值 C. 实时价值 D. 预测价值 E. 生产数据的价值 10 多选大数据的预测价值体现在: A. 预测用户的偏好、流失 B. 预测热卖品及交易额 C. 预测经营趋势 D. 评价 11 单选什么是大数据使用的最可靠方法? A. 大数据源 B. 样本数据源 C. 规模大 D. 大数据与样本数据结合 12 多选大数据是描述()所发生的行为。 A. 未来 B. 现在 C. 过去 D. 实时 13 多选传统研究中数据采集的方法包括: A. 网络监测 B. 电话访谈 C. 对面访谈 D. 线上互动 14 单选大数据整合要保证各个数据源之间的()。 A. 一致性、协调性 B. 差异性、协调性 C. 一致性、差异性 D. 一致性、相容性 15 单选分类变量使用()建立预测模型。 A. 决策树 B. 分类树 C. 离散树 D. 回归树 16 多选()是大数据应用的步骤。 A. 数据输入 B. 建模分析 C. 使用决策支持工具输出结果 D. 验证假设 17 多选避免“数据孤岛”的方法包括: A. 关键匹配变量 B. 数据融合 C. 数据输入 D. 利用样本框

Java基础试题及其答案

J a v a试题 1) java程序中,main方法的格式正确的是()。(选择一项) a)static void main(String[] args) b)public void main(String[] args) c)public static void main(String[]s) d)public static void main(String[] args) 2)给定java代码,如下: public byte count(byte b1,byte b2){ return______; } 要使用这段代码能够编译成功,横线处可以填入()。(选择一项) a)(byte) (b1-b2) b)(byte) b1-b2 c) b1-b2 d) (byte) b1/b2 3)在Java中,在包下定义一个类,要让包下的所有类都可以访问这个类,这个类必须定义为()。(选择一项) a)protected b)private c)public d)friendly 4)在Java中,下列()语句不能通过编译。(选择一项) a) String s= “join”+ “was”+ “here”; b) String s= “join”+3; “”+new Person() toString() c) int a= 3+5 d) float f=5+; double float 6)给定java代码如下,运行时,会产生()类型的异常。(选择一项) String s=null; (“abc”); a)ArithmeticException b)NullPointerException c)IOException d)EOFException 已到文件尾,再读取抛出 7) 在java中,()对象可以使用键/值的形式保存数据。(选择一项) a)ArrayList List 有序可重复 b) HashSet Set 无序不可重复同一对象是重复的 c) HashMap Map(key/value)重复定义:hashCode、equals(业务) d) LinkedList List 8)给定如下java代码,编译运行之后,将会输出()。 public class Test{ public static void main(String args[]){ int a=5;

相关文档
相关文档 最新文档