Java核心基础(1) 基本语法

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);
            }
        }
    }

你可能感兴趣的:(java,基本语法)