这里仅记录自己不会的哦,有需要的可以参考下哦

1Java接口的修饰符可以为(d)

  A.private        B.proected         C.final          D.abstarct

有这道题,我又重新理解了一下接口 

接口用于描述系统对外提供的所有服务,因此接口中的成员常量和方法都必须是公开(public)类型的,确保外部使用者能访问它们;

接口仅仅描述系统能做什么,但不指明如何去做,所以接口中的方法都是抽象(abstract)方法;

接口不涉及和任何具体实例相关的细节,因此接口没有构造方法,不能被实例化,没有实例变量,只有静态(static)变量;

接口的中的变量是所有实现类共有的,既然共有,肯定是不变的东西,因为变化的东西也不能够算共有。所以变量是不可变(final)类型,也就是常量了。

public  abstract interface A{

public static final int name="xx";

public abstract void output(){}

}

java8接口新特性,我怕是落伍了
package JianZhiOffer; public interface SiTeQI { public static void say(){ }
public static void main(String []args){ } public default void dance(){ } }
 

今天我本来想在普通的类中去写一个main函数,可是弄巧成拙居然在刚刚定义的接口里写上了,然后奇怪的是,我发现竟然没有

报错?接口居然允许有方法体?后来上网查了一下,才觉得自己落伍了!

 
Java8比起以前的版本存在很大的变化,我们知道在之前的版本中接口只能是定义抽象的方法,是不能定义实现的,但是在java8环境下,这个不可能已经变得可能。下面我们通过例子一步一步的来讲解下java8的用法。

在接口中可以定义实现的方法体是java8的一大特性,可以定义多个静态或者默认的方法,静态必须加上static,默认方法必须加上default关键字。




  此外,值得注意的是:面向对象中,java只是支持单继承,不支持多继承,一个类只能继承一个类,

  (1)如果多个接口定义了同样的静态方法,

          即使存在实现类,同时实现多个接口,仍然是不可使用实现类名调用接口的方法

  (2)如果多个接口定义了同样的默认方法

         实现类实现多个接口时,必须重写掉默认方法,否则编译失败。

  

--------------------------------------------------------------------------------------------------------------------------------------------------------------------

2.要想在你的视图上成功的执行查询需要做什么?(B)

  A.只能在基础表中有select权限             B.在视图中需要有select权限

  C. 基础表中必须有数据                    D.基础表必须在同一个 用户模式中


--------------------------------------------------------------------------------------------------------------------------------------------------------------------

以下【b】定义能正常编译通过。

  A.boolean f=1                          B.boolean f=true

  C.int k=028                             D.char c="a"

解释一下c选项吧,我们知道高级语言默认8进制以0开头,16进制以0x开头,


然而这里的028请你擦亮眼睛,他可不是8进制,谁家8进制还有8?在这种情况下编译器认为他是10进制,然而10进制是不允许被这么定义的,java编译器根本不识别,因此会出现编译错误




--------------------------------------------------------------------------------------------------------------------------------------------------------------------

3子类继承了父类,对于父类中进行封装的方法,子类仍然可以直接调用,他说的对吗

不对,只能直接调用非私有的方法。如果是private修饰的方法,子类也是不能调用的。


----------------------------------------------------------------------------------------------------------------------------------------------------------------------

4关于overload(重载)说不正确的是

  A.参数类型、个数、顺序至少有一个不相同。   B.不能重载只有返回值不同的方法名

  C.存在于父类和子类、同类中。       D.方法被定义为final不能被重载

A




=-----------------------------------------------------------------------------------------------------------------------------------------------------------------------5
.以下声明合法的是(b)

  A.default  String  s               B.public  final  static  native  int  w( )

  C. abstract  double  d            D. abstract  final  double
 hyperbolicCosine( )

abstract /default不能修饰属性,只能修饰方法,abstract&& final绝对永不到一起 去,不然子类怎么重写父类的方法?


-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

6关于overload(重载)说不正确的是(c)

  A.参数类型、个数、顺序至少有一个不相同。   B.不能重载只有返回值不同的方法名

  C.存在于父类和子类、同类中。       D.方法被定义为final不能被重载

重载不看返回值,看参数,c说的是重写


-----------------------------------------------------------------------------------------------------------------------------------------------------------------------

7下面方法中,用于调度线程使其运行的是

  A.init(),start()    B.start(),run()    C. run(),resume()   D.
resume(),sleep()


Java的线程是通过java.lang.Thread类来实现的。VM启动时会有一个由主方法所定义的线程。可以通过创建Thread的实例来创建新的线程。每个线程都是通过某个特定Thread对象所对应的方法run()来完成其操作的,方法run()称为线程体。通过调用Thread类的start()方法来启动一个线程。

在Java当中,线程通常都有五种状态,创建、就绪、运行、阻塞和死亡:
  第一是创建状态new Thread()。在生成线程对象new,并没有调用该对象的start方法,这是线程处于创建状态。
  第二是就绪状态start()
。当调用了线程对象的start方法之后,该线程就进入了就绪状态,但是此时线程调度程序还没有把该线程设置为当前线程,此时处于就绪状态。在线程运行之后,从等待或者睡眠中回来之后,也会处于就绪状态。
  第三是运行状态run()。线程调度程序将处于就绪状态的线程设置为当前线程,此时线程就进入了运行状态,开始运行run函数当中的代码。
  第四是阻塞状态sleep()suspend()wait()
线程正在运行的时候,被暂停,通常是为了等待某个事件的发生(比如说某项资源就绪)之后再继续运行。sleep,suspend,wait等方法都可以导致线程阻塞。
  第五是死亡状态stop()
。如果一个线程的run方法执行结束或者调用stop方法后,该线程就会死亡。对于已经死亡的线程,无法再使用start方法令其进入就绪。


--------------------------------------------------------------------------------------------------------------------------------------------------------------------
2.下列说法正确的有( bcd)
A. 环境变量可在编译source code时指定
B. 在编译程序时,所能指定的环境变量不包括class path(根本就不能编译source code时指定环境变量)
C. javac一次可同时编译数个Java源文件
D. javac.exe能指定编译结果要置于哪个目录(directory)

环境变量(path/classpath)是你提前设定好的,,,不然你怎么用java javac jvm怎么寻找的类文件啊


任何一门语言的环境变量都是编译前就设置好的,换句话说,你想编译运行这个语言,你的电脑必须先安装这个语言的编译运行程序,对于java这个先编译后解释才能运行的语言,你的电脑上需要有java的编译器和解释器(你可能在想,我没有装啊,实际你装了,只是你不知道自己装的是什么,还记得你学习java时安装的jdk和jre吗,这两个一个是java的编译程序所在的位置,一个是java的解释程序所在的位置),同样对于c语言这个只需要编译就可以运行的家伙,你的电脑上需要有c的编译器gcc,你是安装了的,同样对于c++语言这个只需要编译就可以运行的家伙,你的电脑上需要有c++的编译器g++,你是安装了的,不然这门语言根本无法在此电脑中运行

既然说到了原理上的东西,不如就多说点

(1)高级语言在电脑上直接是不能编译运行的,必须依靠高级语言对应的编译器解释器才能
在电脑上直接编译运行,因此我们在使用任何一门高级语言(c/c++/java)都是必须现在自己的电脑上安装编译程序解释程序,这个语言才可以运行

(2)Java的编译程序-javac(将java编译成class中间代码)

          Java的解释程序-java(将java的class中间代码翻译成目标语言)

c/c++只有编译程序,.ccp/.c编译之后直接生成目标代码

(3)实际上你自己定义一门语言也没人拦你,但是记得给自己的语言开发一个编译器哦

(4)实际上编译程序解释程序基本都是用c/c++开发的,因为编译器毕竟是个追求速度的东西,

拿java举例,你看一下他的java/javac是什么类型的文件你就知道是用什么语言编写的了





(5)你会发现有的时候那个函数什么的明明就是旧版本的这个语言支持的,某天你将自己的编译器更新了之后你会发现不支持了?


现在用编译原理的知识为大家解答下,任何一门高级语言的更新实质上是因为他的编译器更新了,他的编译器更新了又因为是他想为他的语言加一些新的特性,但是你知道的加一些新的特性必须需要编译器的支持,因此往往我们要选择合适版本的编译器,编译器支持什么样的语法,识别什么样的单词,那么你的语言就是什么样的,如果让我开发语言,我首先会开发一款编译器,你就拿之前更新的java8举例,java又出新的版本了,如果你想体验java8的这种新特性的话,首先你的电脑得支持,那么你就需要安装java8的编译器解释器,否则你的电脑是不支持的

(6)java能一次编译到处运行的原因:

java
运行环境jre里面是有一个java的虚拟机的,java为不同的操作系统安装不同的jvm解释器,jvm解释器负责将统一的class字节码(与操作系统无关)转换为操作系统可以识别的机器码

编译快,解释慢,因此java慢,c快

首先说一下java相关的环境变量有哪些吧:path/ classpath/java_home

1在编译java代码之前必须设置好path环境变量,因为jvm在编译运行的时候需要用到java java命令,

2在编译java代码之前必须设置好classpath环境变量,因为jvm在编译的时候需要依靠classpath来搜索Java代码中设计到的类的所在路径