1.面试题
byte b1=3,b2=4,b;
b=b1+b2;
b=3+4;
哪句是编译失败的呢?为什么呢?
答:第二句,byte不能转换为int整型。
思考题
byte b = 130;有没有问题?如果我想让赋值正确,可以怎么做?结果是多少呢?
byte b3 = (byte)130;
System.out.println(b3);-126
练习:byte b = 300;
结果为44;byte 的范围-127 ~ 127
2.面试题
short s=1, s = s+1; short s=1,s+=1;
上面两个代码有没有问题,如果有,那里有问题
short s = 1;
s = s + 1;//出错,int 型不能转换为short
short s1 = 1;
s1+=1;
3.面试题
3.1请用最有效率的方式写出计算2乘以8的结果
int a = 2 << 3;
System.out.println(a); // a =16
3.2请自己实现两个整数变量的交换
int a = 3;
int b = 5;
//方式一位异或
a=a^b;
b=a^b;
a=a^b;
System.out.println("a="+a+" b="+b);
//优先级
b=(a+b)-(a=b);
System.out.println("a="+a+" b="+b);
3.3^的特点:
相同二进制位为0,不同为1
4.常见数组的操作:
4.1数组遍历(依次输出数组中的每一个元素)
public static void printArray(int [] arr) {
for(int x = 0;x<arr.length;x++){
System.out.print(arr[x]+"\t");
}
}
4.2数组获取最值(获取数组中的最大值最小值)
public static int getMax(int [] arr) {
int max = arr[0];
for(int x = 1;x<arr.length;x++) {
if(arr[x]>max){
max= arr[x];
}
}
return max;
}
4.3数组元素反转 (就是把元素对调)
public static void reverse( int [] arr) {
for(int start = 0,end = arr.length - 1;start <= end;start++,end--) {
int temp = arr[start];
arr[start]= arr[end];
arr[end]= temp;
}
}
4.4数组查表法( //查表法
String [] strArray ={"","星期一","星期二","星期三","星期四","星期五"};
int index;
System.out.println(strArray[index]);
4.5根据键盘录入索引,查找对应星期)
public static int getIndex(int[] arr,int key) {
int index = -1;
for(int x=0; x<arr.length;x++) {
if(arr[x] == key) {
index = x;
break;
}
}
return index;
}
5.面试题:
5.1 Overload和Override的区别。Overload的方法是否可以改变返回值的类型?
Overload:重载 Override:重写
重载: 同一个类中,方法名相同,参数列表不同。与返回值类型无关。
重写: 存在于子父类,或者子父接口中,方法声明相同。
Overload的方法可以改变返回值的类型,因为它与返回值类型无关。
5.2 this关键字和super关键字分别代表什么?以及他们各自的使用场景和作用。
1.成员变量和局部变量重名时,可以用this来区分。
2.this可以用在构造函数中,调用其它构造函数(只能定义在构造函数的第一行,因为初始化时必须被先执行)。super可以直接调用父类的属性、方法、构造方法。但在调用构造方法时,两者不能同时使用,因为只要是调用构造方法,就必须放在构造方法的首
1.super()从子类中调用父类的构造方法,this()在同一类内调用其它法。
2.this和super不能同时出现在一个构造函数里面。
3.super()和this()均需放在构造方法内第一行。
4.this()和super()都指的是对象,所以,均不可以在static环境中使用
6.面试题:
A:final修饰局部变量
a:基本类型 值不能发生改变
b:引用类型 地址值不能发送改变,对象的内容是可以改变的
B:final的初始化时机
a:在定义时就赋值
b:在构造方法完毕前赋值
7.面试题:
num
this.num
Outer.this.num
8.面试题(局部内部类)
局部内部类访问局部变量,必须加final修饰
9.面试题
9.1补齐程序(注意:内部类和外部类没有继承关系)
class Outer {
public int num = 10;
class Inner {
public int num = 20;
public void show() {
int num = 30;
System.out.println(?);
System.out.println(??);
System.out.println(???);
}
}
}
public class OuterDemo {
public int num = 10;
class Inner{
public int num = 20;
public void show() {
int num = 30;
System.out.println(num);
System.out.println(this.num);
System.out.println(new OuterDemo().num);
}
}
}
OuterDemo.Inner od = new OuterDemo().new Inner();
od.show();
在控制分别输出:30,20,10
9.2补齐代码,在控制台输出HelloWorld
按照要求,补齐代码
interface Inter { void show();}
class Outer { //补齐代码 }
class OuterDemo {
public static void main(String[] args) {
Outer.method().show();
}
}
要求在控制台输出”HelloWorld”
interface Inter {
public abstract void show();
}
class Outer {
//补齐代码
public static Inter method() {
return new Inter(){
public void show(){
System.out.println("helloworld");
}
};
}
}
class OuterDemo {
public static void main(String[] args) {
Outer.method().show();
}
}
10.面试题(Import)
10.1package,import,class有没有顺序关系
package,import,class 如果要给一个类定义归属包,使用package关键字 ,此关键字必须在文件的最开始位置。
11.面试题:(掌握)
==和equals()的区别?
A:==
基本类型:比较的是基本类型的值是否相同
引用类型:比较的是引用类型的地址值是否相同
B:equals()
只能比较引用类型,默认比较的是对象的地址值是否相同。
但是,可能被重写,一定要根据实际的情况来看。
12.面试题(String类的特点)
12.1 字符串是常量,它的值在创建之后不能更改
String s = “hello”; s += “world”; 问s的结果是多少?
helloworld
12.2 String s = new String(“hello”)和String s =“hello”;的区别?
字符串比较之看程序写结果
一个是对象,一个是变量,不相等。
字符串拼接之看程序写结果
String s = new String(“hello”)和String s =“hello”;的区别?
有。前者会创建2个对象,后者创建1个对象。
==:比较引用类型比较的是地址值是否相同
equals:比较引用类型默认也是比较地址值是否相同,而String类重写了equals()方法,比较的是内容是否相同。
public class StringDemo2 {
public static void main(String[]args) {
String s1 = new String(“hello”);
String s2 = “hello”;
System.out.println(s1 == s2);//false
System.out.println(s1.equals(s2));//true
未完待整理。。。