Java基本语法
面试题总结(1)
1、一个”.java”源文件中是否可以包括多个类(不是内部类)?有什么限制
可以有多个类,但只能有一个 public 的类,并且 public 的类名必须与文件名相一
致。
2、Java 中有没有 goto?
有,但是是作为保留字使用,现在没有在Java中使用。
3、八种基本数据类型和包装类以及大小。
八种基本数据类型 包装类 大小 byte Byte 8位 -2^7 ~ 2^7-1 short Short 16位 -2^15 ~ 2^15-1 int Integer 32位 -2^31 ~ 2^31-1 long Long 64位 -2^63 ~ 2^63-1 double Double 64位 -2^63 ~ 2^63-1 char Character 16位 \u0000 ~ \uFFFF boolean Boolean 1位
4、说说&和&&的区别。
&和&&都可以用作逻辑与的运算符,表示逻辑与( and),当运算符两边的表达式的结果都为 true 时,整个运算结果才为 true,否则,只要有一方为 false,则结果为 false。
&&还具有短路的功能,即如果第一个表达式为 false,则不再计算第二个表达式,例如,对于 if(str != null&& !str.equals(“”))表达式,当 str 为 null 时,后面的表达式不会执行,所以不会出现 NullPointerException (空指针异常)如果将&&改为&,则会抛出 NullPointerException 异常。
&还可以用作位运算符,当&操作符两边的表达式不是 boolean 类型时, &我们通常使用0x0f 来与一个整数进行&运算,来获取该整数的最低4个 bit 位,例如, 0x31 &
0x0f 的结果为0x01。
5、用最有效率的方法算出2乘以8等于几?
2 << 3,
因为将一个数左移n位,就相当于乘以了2的n次方,那么,一个数乘以8只要将其左移3位即可,而位运算cpu直接支持的,效率最高,所以,2乘以8等於几的最效率的方法是2 << 3。
6、能被Switch的数据类型有哪些?
在 switch( expr1)中, expr1只能是一个整数表达式或者枚举常量,
所以能被Switch的数据类型有: byte,short,int,char。
在jdk1.7之后String也可以。
7、char 型变量中能不能存贮一个中文汉字?为什么?
char型变量是用来存储Unicode编码的字符的,unicode编码字符集中包含了汉字, unicode编码占用两个字节,所以char类型的变量也是占用两个字节。一个char类型的大小为16位也就是两个字节,所以能存储一个汉字。
8、数组中的排序
选择排序:
第0个逐次和第一个,第二个,第三个••••••比较,并和比他小的交换位置,一轮过后第0个为最小值,第1个在和第二个,第三个••••••比较,并和比他小的交换位置。。依次循环,此时上一轮的第一个不用比较,最终得到一个从小到大的序列。
public static void selectSort(int[] arr)
{
// 1,定义外循环,确定参与比较的元素。
for (int x = 0; x < arr.length - 1; x++)
{
for (int y = x + 1; y < arr.length; y++)
{
// 判断前一个大于后一个,就进行位置置换。
if (arr[x] > arr[y])
{
swap(arr, x, y);
}
}
}
}
冒泡排序:
第0个和第一个比较,若第0个大则和第一个交换位置,第一个和第二个比较,大的后移,第二个和第三个比较,••••••以此类推,第一轮结束后最后一个为最大值。。。在从头开始进行第二轮比较,此时最后一个不用比较
public static void bubbleSort(int[] arr)
{
for (int x = 0; x < arr.length - 1; x++)
{
for (int y = 0; y < arr.length - 1 - x; y++)
{
if (arr[y] > arr[y + 1])
swap(arr, y, y + 1);
}
}
}
9、数组的定义和初始化
一维数组的初始化;
元素类型 [] 数组名(标识符) = new 元素类型 [元素的个数或者数组的长度]
int [] arr =new int[5];
//声明并未初始化
int [] as1;
//声明并初始化
int [] as ={1,2,3,4,5};
//声明数组并定义大小
int [] a =new int[10];
int [] aa=new int[]{1,2,3,45,5};
二维数组定义
//二维数组中有3个一维数组,每一个一维数组中有2个元素
int[][] arr = new int[3][2];
int[][] arr2 = new int[3][];
//分别对二维数组中的每一个小数组进行初始化。
arr2[0] = new int[3];
arr2[1] = new int[1];
arr2[2] = new int[2];
int[][] arr = { { 2, 31, 4, 99 }, { 78, 35, 9, 6 }, { 7, 3, 5, 32 } };
10、请说明一个 JAVA 类中主要包含哪几个元素?并说明每种元素的作用。
主要包含属性、方法、构造方法、块以及内部类。
属性用来定义对象的数据;
方法用来定义对象的行为;
构造方法可以用来创建对象;
块能够用来在类加载时执行操作或者在每次实例化前执行通用操作;
内部类作为类的一个成员存在,能够访问外部类的属性和方法
11、说明构造方法的作用和特征?
在对象创建时就被调用了。作用:对对象进行初始化。
特征:
和类名相同没有返回值
当有多个构造函数,以重载的形式呈现,并只能使用一次
注:
1.构造方法在类实例化 的时候自动执行
2.{ } 代码块优先执行于构造方法
3.构造方法不能人为调用
12、使用stastic修饰属性或方法后,属性和方法有什么特征?
1:被Static修饰的内容能实现所有对象共享
2:生命周期变长,随着类的加载而出现,随着类的消失而消失
3:多了调用方法:类名.属性名或类名.方法名调用
Static属于类,代码块和构造函数属于对象。
先有类,后有对象,代码块优先于构造函数执行