java题目笔记(1)

1.Java Application(Java 应用程序)源程序文件编译后的字节码文件的扩展名是( )。

.java是java源代码文件。
.class是将源代码文件编译成字节码的文件
.exe java是可以编写成exe文件,但不是代表windows可执行文件
.jar	可以打包成jar,需要jdk支持,通过JVM运行,这才是java真正的运行包

2.字符界面下接受用户从键盘输入,需要import的包是:( )

字符界面就是操作系统或应用软件的界面,都是字符实现没有图形。
字符流的传输需要导入java.io包,而java.util中的Scanner则是获取控制台的输入。
java.lang是java语言的核心,它能提供了java中的基础类。包括基本Object类、class类、String类、基类型的包装类、基本的数学类等基本类
java.awt是一个软件包,包含用于创建用户界面和绘制图形图像的所有分类。
java.applet 就是用java语言编写的一些小应用程序,它可以直接嵌入到网页中,并能够产生特殊的效果。

3.以下 _____ 不是 Object 类的方法。

Java Object 类是所有类的父类,也就是说 Java 的所有类都继承了 Object,子类可以使用 Object 的所有方法。
Object 类位于 java.lang 包中,编译时会自动导入,我们创建一个类时,如果没有明确继承一个父类,那么它就会自动继承 Object,成为 Object 的子类。

在这里插入图片描述
4.建立Statement对象的作用是?
java连接数据库时,需要数据库的驱动程序jdbc。会导入该jar包
1.类加载器加载驱动程序
2.驱动程序连接数据库
3.连接对象创建语句执行者
4.语句执行者执行具体语句
5.返回结果集

Class.forName("com.mysql.jdbc.Driver");  //加载jdbc驱动
con=DriverManager.getConnection(url,user,password); //建立连接
stmt=con.createStatement(); //创建语句执行者(stateMent用于执行不带参数的简单sql语句,PreparedStatement用于执行带参数的预编译sql语句能够预防sql注入,CallableStatement提供了一种标准形式的调用存储过程的方法)
stmt.execute(“sql语句”); 
rs=stmt.executeQuery("sql查询语句"); //结果集

5.以下哪个不能用来处理线程安全

synchronized 关键字声明的方法同一时间只能被一个线程访问。

序列化的对象包含被 transient 修饰的实例变量时,java 虚拟机(JVM)跳过该特定的变量。
transient 修饰符 :该修饰符包含在定义变量的语句中,用来预处理类和变量的数据类型。

volatile 修饰符:volatile 修饰的成员变量在每次被线程访问时,都强制从共享内存中重新读取该成员变量的值。而且,当成员变量发生变化时,会强制线程将变化值回写到共享内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。

6.下面有关Java的说法正确的是( )

A:java类单继承,多实现
B:抽象类被abstract修饰符修饰,抽象类中可以没有抽象方法,但抽象方法所在的类一定是抽象类。
C:子类与基类在同一包中:被声明为 protected 的变量、方法和构造器能被同一个包中的任何其他类访问;
子类与基类不在同一包中:那么在子类中,子类实例可以访问其从基类继承而来的 protected 方法,而不能访问基类实例的protected方法。
注意:
1.父类中声明为 public 的方法在子类中也必须为 public。
2.父类中声明为 protected 的方法在子类中要么声明为 protected,要么声明为 public,不能声明为 private。
3.父类中声明为 private 的方法,不能够被继承。

修饰符
为了实现一些其他的功能,Java 也提供了许多非访问修饰符。

static 修饰符,用来修饰类方法和类变量。
		static 关键字用来声明独立于对象的静态变量,无论一个类实例化多少对象,它的静态变量只有一份拷贝。 静态变量也被称为类变量。局部变量不能被声明为 static 变量。
		static 关键字用来声明独立于对象对的静态芳芳,静态方法不能使用类的非静态方法。调用静态方法可以使用类名直接调用,又称为类方法

final 修饰符,final为最终的,最后的。用来修饰类、方法和变量,final 修饰的类不能够被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,是不可修改的。

abstract 修饰符,用来创建抽象类和抽象方法。
		用来声明方法而不去实现,类似于接口。
		抽象类不能用来实例化对象,声明抽象类的唯一目的是为了将来对该类进行扩充,不能和final修饰符一起使用。
		抽象方法是一种没有任何实现的方法,该方法的的具体实现由子类提供。
		抽象方法不能被声明成 final 和 static。
		
		

synchronized 和 volatile 修饰符,主要用于线程的编程。
		synchronized 关键字声明的方法同一时间只能被一个线程访问。
		volatile 修饰的成员变量在每次被线程访问时,都强制从共享内存中重新读取该成员变量的值。而且,当成员变量发生变化时,会强制线程将变化值回写到共享内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。

String 创建的字符串存储在公共池中,而 new 创建的字符串对象在堆上

7.关于JSP生命周期的叙述,下列哪些为真?

	Jsp只会在客户端第一次发请求的时候被编译为Servlet类文件,之后的请求不会再编译,同时tomcat能自动检测jsp变更与否,变更则再进行编译。
	
	第一次编译并初始化时调用: init() ;销毁调用: destroy()  。在整个jsp生命周期中均只调用一次。  
	service()方法是接收请求,返回响应的方法。每次请求都执行一次,该方法被HttpServlet封装为doGet和doPost方法

8…

	Java一个源程序只能有一个public类存在,且类名与文件名相同。Java程序是从main
	方法开始执行的,public为类加载器提供入口,然后找到public类中的main方法开始
	执行。如果存在多个public类,程序将不知道该从哪里执行。
	注意,内部类可以是public的,因为内部类是作为外部类的成员存在的。

9.下面代码的输出结果是什么?

public class ZeroTest {
public static void main(String[] args) {
try{
int i = 100 / 0;
System.out.print(i);
}catch(Exception e){
System.out.print(1);
throw new RuntimeException();
}finally{
System.out.print(2);
}
System.out.print(3);
}
}

	Try...catch...finally与直接throw的区别:try catch是直接处理,处理完成之后程序继续往下执行,
	throw则是将异常抛给它的上一级处理,程序便不往下执行了。本题的catch语句块里面,打印完1之
	后,又抛出了一个RuntimeException,程序并没有处理它,而是直接抛出,因此执行完finally语句块
	之后,程序终止了

10.关于java编译和运行命令叙述不正确的是? ( )

	此处是关于命令行的编译和运行的一些用法:
	首先是,先编译:javac test.java
	然后,产生字节码文件:test.class
	最后,运行字节码文件  test.class。java test;此时不需要加后缀.class

11.下列流当中,属于处理流的是:()

按照流是否与特定的地方(如磁盘、内存、设备等)相连,分为节点流和处理流两类。
·节点流:可以从或向一个特定的地方(节点)读写数据。如FileReader
·处理流:是对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读写。如BufferedReader。处理流的构造方法总是带一个其他的流对象做参数。一个流对象经过其他流的多次包装,成为流的链接。

JAVA常用的节点流:

·文件 :FileInputStream FileOutStream FileReader FileWriter 文件进行处理的节点流
·字符串 :StringReader StringWriter 对字符串进行处理的节点流
·数组: ByteArrayInputStream ByteArrayOutputStream   CharArrayReader CharArrayWriter 对数组进行处理的节点流(对应的不是文件,而是内存中的一个数组)
·管 道 PipedInputStream PipedOutputStream PipedReaderPipedWriter对管道进行处理的节点流。

常用处理流

·缓冲流:BufferedInputStream BufferedOutputStream BufferedReader BufferedWriter 增加缓冲功能,避免频繁读写硬盘。
·转换流:InputStreamReader  OutputStreamReaser  实现字节流和字符流 之间的转换。
·数据流:DataInputStream DataOutputStream 提供将基础数据类型写入文件中,或者的读取出来

12.String s = new String(“xyz”);创建了几个StringObject?

在java中,字符串属于对象,String是一个类,创建和操作字符串。

在这里插入图片描述
String对象的创建方式有两种

1.String str1 = "aaa",是在编译时,在常量公共池中创建一个字符串对象。
2.String str2 = new String("aaa");如果在公共池中没有"aaa"字符串对象,那么就会在公共池中创建一个字符串对象,再在堆中创建一个字符串对象。如果公共池中没有该对象,则会创建两个对象,一个在公共池,一个在堆中。

13.类之间存在以下几种常见的关系:

USES-A:依赖关系,A类会用到B类,这种关系具有临时性、偶然性。但是B类的变化会影响A类。

		例如:类A中的方法参数用的是B类,也就是说类A中参数,传入的是类B的对象。
		
关联关系:A类会用到B类,只是一种强依赖关系,是长期的并非偶然。在代码中的体现是:A类的成员变量中含有B类。

HAS-A:聚合关系,拥有关系,是关联关系的一种特例,是整体和部分的关系。例如:鸟类和鸟群的关系。

CONTAINS-A:组合关系,也是关联关系中的一种特例,这种关系比聚合更强,称为强聚合,
			同样体现整吐与部分之间的关系,但这种整体和部分是不能分割的。
			
IS-A:表示继承。父类和子类。

14.final、finally和finalize的区别?

1.final
如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既
被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改
变。被声明为final的变量必须在new一个对象时初始化(即只能在声明变量或构造器或代码块内初始
化),而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能覆盖(重
写)。
2.finally
在异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执
行,然后控制就会进入 finally 块(如果有的话)。

3.finalize
方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工
作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定
义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。
finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。注意:finalize不一定被jvm调用,只有
当垃圾回收器要清除垃圾时才被调用。

15.try块后必须有catch块。

try和cath不需要一定共存,try是尝试对其中代码
捕获异常,catch是捕获异常并且可以处理异常。
如果不加catch就需要加入finally。finally中的值
作为最后的返回结果,不管有没有错误都会被执
行。

16.在java中重写方法应遵循规则的包括()

	方法的重写(override)两同两小一大原则:
	方法名相同,参数类型相同
	子类返回类型小于等于父类方法返回类型,
	子类抛出异常小于等于父类方法抛出异常,
	子类访问权限大于等于父类方法访问权限。

16.往OuterClass类的代码段中插入内部类声明, 哪一个是错误的:

	静态方法不能访问非静态变量,
	抽象类中的抽象方法不能有方法提,
	一个类中有多个类声明时,只能有一个public类

17.关于多线程和多进程,下面描述正确的是()

1.子进程得到的是除了代码段是与父进程共享外
其他所有都是得到父进程的一个副本,子进程可以获得父进程的所有堆和栈的数据,但二者并不共享地
址空间,子进程资源只是父进程的一个副本.两个子进程继承了父进程之后,两个子进程就没有什么关
联了。进程的线程之间共享由进程过的的资源,但线程拥有属于自己的一小部分资源,就是栈空间。

2.线程之间共享进程获得的数据资源,所以开销小,但不利于资源的管理和保护,而进程执行开销大,
但是能够很好的进行资源管理和保护。

3.线程的通信速度很快,切换更快,因为他们共享同一进程的地址空间。

4.一个进程可以有多个线程,线程是进程的一个实体,是cpu调度的基本单位。

18.下面关于Applet的说法是正确的是

Applet 是一种 Java 程序。它一般运行在支持 Java 的 Web 浏览器内。因为它有完整的 Java API支持,
所以Applet 是一个全功能的 Java 应用程序。Java 中 Applet 类继承了 java.applet.Applet 类。

·Applet 类没有定义 main(),所以一个 Applet 程序不会调用 main() 方法。
·Applet 被设计为嵌入在一个 HTML 页面。
·当用户浏览包含 Applet 的 HTML 页面,Applet 的代码就被下载到用户的机器上。
·要查看一个 Applet 需要 JVM。 JVM 可以是 Web 浏览器的一个插件,或一个独立的运行时环境。
·用户机器上的 JVM 创建一个 Applet 类的实例,并调用 Applet 生命周期过程中的各种方法。
·Applet 有 Web 浏览器强制执行的严格的安全规则,Applet 的安全机制被称为沙箱安全。
·Applet 需要的其他类可以用 Java 归档(JAR)文件的形式下载下来。

19.下列哪些操作会使线程释放锁资源?

1.sleep()方法
在指定时间内让当前正在执行的线程暂停执行,但不会释放“锁标志”。不推荐使用。
sleep()使当前线程进入阻塞状态,在指定时间内不会执行。

2.wait()方法
在其他线程调用对象的notify或notifyAll方法前,导致当前线程等待。线程会释放掉它所占有的“锁标
志”,从而使别的线程有机会抢占该锁。

3.yield方法
暂停当前正在执行的线程对象。	
yield()只是使当前线程重新回到可执行状态,所以执行yield()的线程有可能在进入到可执行状态后马上
又被执行。	
yield()只能使同优先级或更高优先级的线程有执行的机会。 

4.join方法
join()等待该线程终止。
等待调用join方法的线程结束,再继续执行。

20.在 Java 中,属于整数类型变量的是()

在java中的四类八种基本数据类型
1.整数类型:byte short int long
2.浮点型:float 都变了
3.逻辑型:boolean
4.字符型:char
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值