x和y是double,则表达式x=2,y=x+3/2的输出是(3.00000)
y=2+1=3,因为是double有小数
算式3<<2|3的结果是(15)
3的二进制是11,<<是左移2位,1100,
3的二进制是0011,进行或运算 得到是1111
结果是15
已知int a=0x122,则a/2为(145)
0x122 的十进制是 116幂2+216+2=256+34=290,则a/2=145;
###8位有符号二进制数11100101代表的十进制数为(-27)
首位是代表符号,1代表负数,其它位1100101的运算公式 1*2幂(-6)+2幂5+2幂2+1=-64+32+4+1=-27
关于时间复杂度的说法
冒泡排序法的平均时间复杂度为O(n^2)
二分法的平均时间复杂度度是O(logn),好于顺序表查找的O(n).
快速排序法的最坏的情况下时间复杂度等于冒泡排序法,都为O(n^2)
将数组(7-6-3-5-4-1-2)按照堆排序进行升序,第一轮结束是(6-5-3-2-4-1-7)
对于二分查找法,下面描述正确的是
二分查找首先要求数据是有序的,同时要求能随机访问数据元素, 有序数组可以, 链表不行,
二分查找因为每次都是从中间点开始查找,所以最坏情况是目标元素存在于最边缘的情况。最坏为O(LogN)
元素3,1,2依次放入一个栈,顺序取出的结果是(2,1,3)
设计一个判别表达式中左右括号是否配对,采用(栈)结构最佳
在掩码为255.255.224.0条件下,下面那些IP地址属于同一个网段()
224 二进制 11100000
235 11101011
246 11110110
三为111一致所以同网段
UML动态视图:面向对象动态建模,用于建立行为的实体间行为交互的四种图:状态图(Stage Diagram),序列图(Sequence Diagram),协作图(Communication Diagram),活动图(Activity Diagram) 。
对于方法覆盖说法正确的是
方法的覆盖发生在子类型中
方法名一定要一样
参数一定要一样
java疯狂讲义中说重写返回值类型要比父类小,在eclipse中验证,重写返回值类型必须一致,那么Java重写返回值类型必须一样吗?
java 5或者以前,必须一样,java 7 java 8可以不同,但是必须是父类返回值的派生类。
Java重写要求子类跟父类的修饰符一样吗?
子类重写父类的方法的访问修饰符,不能低于父类的方法访问权限;
MARK一下,方法覆盖(区别于方法重载,在一个类中的是重载)
1.“两小” :子类方法的返回值类型、抛出的异常 均应小于等于父类方法的
2.“两同”:子类方法的方法名、参数列表均应该与父类方法相同
3.“一大”:子类方法的访问权限应该大于等于父类方法的访问权限
首先要强调,静态方法是不能被覆盖的。
原因:
在子类中,可以定义与父类同名的静态方法,不过并不存在“多态”,严格的说,方法间没有多态就不能称作“覆盖”。所以说,子类的静态方法,并没有覆盖父类的方法。
package com.ren.staticTest;
public class StaticExtends {
public static void main(String[] args) {
Father son = new Son(); //声明为Father类,son1静态方法和Father类绑定
son.method();
son.staticMethod();
Son son2 = new Son();
son2.method();
son2.staticMethod();
}
}
class Father{
void method(){
System.out.println("父类方法");
}
static void staticMethod(){
System.out.println("父类静态方法");
}
}
class Son extends Father{
void method(){
System.out.println("子类方法");
}
static void staticMethod(){
System.out.println("子类静态方法");
}
}
关于程序编译说法正确的是
java编译出来的目标文件与具体操作系统无关
jvm可以有不同实现.低版本不一定能执行高版本的
java语言是混合型语言,会把java程序编译成字节码指令运行
编译型语言的首先将源代码编译生成机器语言,再由机器运行机器码(二进制)。像C/C++等都是编译型语言。程序执行效率高,依赖编译器,跨平台性差些。如C、C++、Delphi等
解释性语言在运行程序的时候才翻译,比如解释性basic语言,专门有一个解释器能够直接执行basic程序,每个语句都是执行的时候才翻译。这样解释性语言每执行一次就要翻译一次,效率比较低。如JavaScript、VBScript、Perl、Python、Ruby、MATLAB 等等
Java不同于一般的编译语言和直译语言。它首先将源代码编译成字节码,然后依赖各种不同平台上的虚拟机来解释执行字节码,从而实现了“一次编写,到处运行”的跨平台特性, 所以说java是一种解释型的语言
对于构造方法( constructor )描述正确的有
构造方法没有返回类型
如果我们没有显示定义构造方法,系统会提供一个缺省的
以下为java保留的不能作为类名和方法名使用的是
default implement throws
下面写法能在 java8 中编译执行
dir.listFiles((File f)->f.getName().endsWith(“.Java”));
dir.listFiles( f->f.getName().endsWith(“.Java”));
Lanbda表达式的主要作用就是代替匿名内部类的繁琐语法, 它由三部分组成:
(1) 形参列表。形参列表允许省略形参类型。如果形参列表中只有一个参数,甚至连形参列表的圆括号也可以省略。
(2) 箭头(→)。必须通过英文中画线和大于符号组成。
(3)代码块。如果代码块只包含一条语句,Lambda表达式允许省略代码块的花括号,那么那条语句就不要用花括号表示语句结束。Lambda代码块只有一条return语句,甚至可以省略return关键字。Lambda表达式需要返回值,而它的代码块中仅有一套省略了return的语句。Lambda表达式会自动返回这条语句的值。