JavaSE编程基础试题

JavaSE编程基础

第一章 初识Java

Java的三个版本是什么?

JavaSE: 定位在客户端,主要用于桌面应用软件的编程

JavaEE:定义在服务器端的企业版,主要用于分布式网络程序的开发

JavaME:主要应用于嵌入式系统开发,如手机和PDA的编程

Java是哪个公司发明的? 现在这家公司处境如何? 为什么?

Java是Sun公司发明的

Sun公司在2009被Oracle公司收购

因为Sun是一家极具创新能力的公司,但是没能利用Java构建一个强有力、可变现的生态系统,没打好Java这张牌

 

Java的跨平台是通过什么实现的?

通过在不同平台上安装相应的Java虚拟机实现的;虚拟机可以将字节码文件(class)解释成相应平台的机器语言并执行

 

Java语言释型还是编译型?还是两者都是?

先编译再解释

 

JDK、JRE、JVM的全称是?

JDK: Java Development Kit  针对Java开发员的产品

JRE: Java Runtime Environment是运行Java程序所必须的环境集合

JVM:Java Virtual Machine解释运行Java字节码文件,跨平台的核心

 

JDK包含JRE,这句话对吗?

对;JDK包含JRE;同时JRE包含JVM

 

DOS下,自动补齐命令的键是哪个?DOS下,想查找以前执行的命令用哪个键?

DOS下,自动补齐命令的键是哪个Tab键

DOS下,想查找以前执行的命令用上下箭头, ↑或↓键

 

DOS下,dir命令表示什么含义? cd 表示什么含义?

dir:查看某个目录下的子目录和文件   

cd:改变当前目录

 

为什么采用Java_HOME的方式配置环境变量较好?

便于Java_HOME路径的重用,避免由于JDK安装路径变化而修改多个环境变量;

 

public class 的类名必须跟文件名保持一致吗?

public class 的类名必须跟文件名保持一致

 

编程风格一定要:成对编程和缩进。用文字或代码说明如何实现成对编程和缩进。

public class Test{

public static void main(String args []){

System.out.println("Hello Java");

System.out.println("尚学堂");

}

}

 

system.out.println("hi");  ----这句代码能否顺利执行?

不能顺利执行;Java区分大小写,需要将system修改为System

 

编程时,为什么需要注释?注释的类型?

注释就是程序员为读者作的说明,是提高程序可读性的一种手段;注释同时也是调试代码时的一种手段,可以对某些不要执行的代码进行注释;

注释分为单行注释,多行注释和文档注释三种类型;

 

多行注释能不能嵌套使用?

多行注释不能嵌套使用

 

 

第二章  数据类型和运算符

常用的进制有哪些?

十进制、二进制、八进制、十六进制

 

位、字节、字符的概念及其计数范围?

位:计算机存储信息的基本单位,代表一个二进制数位,

计数范围:0或1

字节:8个连续的二进制位为一个字节,可以存放1个西文字符的编码

      计数范围:-128~127

字符:单引号用来表示字符常量,例如 ‘A’,‘张’

      计算范围:0-65535之间的编码

 

标识符的作用是什么?

用作给变量、类和方法命名

这个标识符合法吗?  int  aaa@bbb = 33;

不合法

 

标识符能不能使用汉字开头?为什么?

可以,字母的含义包括:英文、汉字等(不建议大家使用汉字来定义标识符)

 

Java中有没有goto语句?有没有goto关键字?

java中没有goto语句,有goto关键字

 

byte,short,int,long类型,分别占用几个字节?表数范围多大?

byte:1个字节  -128~127

short:2个字节  -215~215-1

int:4个字节  -231~231-1

long:8个字节 -263~263-1

 

整型常数默认是什么类型?

int类型

 

float,double分别占用几个字节?

float:4个字节

double:8个字节

 

如何用科学计数法表示3.14?

314E-2

 

浮点常量默认是什么类型?

double类型

 

如下写法哪些是不对的:

a.  byte b = 30;

b.  byte c = 500;

c.  long d = 2343223;

d.  float f = 3.14;

b:不对,超出了byte的范围

d:不对,缺少f,应该写为3.14f或3.14F

 

浮点数能用于比较吗?下面可能打印什么结果:

 

float d1 = 423432423f;

float d2 = d1+1;

if(d1==d2 ){

System.out.println("d1==d2");

}else{

System.out.println("d1!=d2");

}

打印结果为: d1 == d2

float类型的数据在内存中的存储形式为科学计数法, 且有效位数为7位, 则d1为4.2343242E7, d2用科学计数法表示同样为4.2343242E7, 因此d1 == d2

 

字符型变量几个字节? 这种写法对不? char c = "d";

字符型变量占2个字节

写法不对,应该为char c=‘d’;

 

布尔型变量占用空间是一位还是一个字节?

布尔型变量占一位

 

这种写法好不好?   if(b==true)

不好,应写为if(b)

 

常量的声明使用哪个关键字?

常量的声明使用的关键字是final

 

常量的命名规范是?

全部由大写字母组成,单词间通过下划线来界定

 

解释一下,驼峰原则?

当变量或函数名称需要多个英文单词组成时,首字母以小写开头,每个单词首字母大写(第一个单词除外)

 

使用Scanner接收键盘输入,是否一定要加import Java.util.*; ?

需要导包

也可以写为import java.util.Scanner;

 

类名的命名规则是? 方法名、变量名的命名规则是否一致? 常量的命名规则是?

类的命名规则:每个英文单词的首字母都大写

方法名、变量名的命名规则:第一个单词首字母小写,从第二个单词后,每个单词的首字母大写

常量的命名规则:字母全部大写

算术运算符中类型提升是怎么回事? a+b返回什么类型? int a=3; long b=3;

   类型提升指的是自动类型转换

   a+b返回的是long类型

 

i++和++i的异同之处

相同:都是变量i自增1

  i++与++i作为一条单独语句使用时, 没有区别

不同:i++是先使用i的值进行其他运算,然后再自增1

      ++i是先自增1,然后再使用i的值进行其他运算

 

关系运算符中,能不能这么写:"1

不能,

应该写为a>1&&a<3

 

逻辑运算符|、&、!、^的含义及其运算规则?  

 |  或: 只要有一个为true,则直接返回true

& 与: 只要有一个为false,则直接返回false

 !  非: 如果为true,则返回false,如果为false,则返回true

 ^ 异或: 如果两个操作数相同,则返回false,如果两个操作数不同,则返回true

 

运算符||和|的异同之处

相同:

|| 与 | 都是逻辑运算符, 运算规则都为只要有一个为true,则直接返回true

不同:

|| 短路或 : 从左到右计算,如果符号左边的操作数为true,则不会继续计算,直接返回    true; 如果符号左边的操作数为false,则需要继续计算

| 逻辑或:操作数左右两边的操作数都需要计算,不会发生短路

   || 只是逻辑运算符

    | 还可以是位运算符中的按位或符号

 

5*4最快的运算方式是?

位运算5<<2

 

这两个表达式分别返回什么结果?   ((1<3)?"a":"b")+3+4,  x=-2; x > 0 ? 1 : (x == 0 ? 0 : -1)

((1<3)?"a":"b")+3+4 返回结果为a34

x=-2; x > 0 ? 1 : (x == 0 ? 0 : -1) 返回结果为-1

 

什么情况下,加号会变成字符串连接符?

+号左右一个为String类型时,则变成字符连接符

 

4&5,4|5的结果分别是多少?  4&&5这个操作可行吗?为什么?

4&5的结果为4

4|5的结果为5

4&&5这个操作不可行,因为&&左右要求为boolean类型表达式

 

int能否自动转换成byte,short,char? 是否有一定条件才能转换?

不能

需要强制类型转换

 

long能自动转换成int吗?long能自动转换成float吗?

long可以自动转成int

long可以自动转成float

 

自动类型转换中,容量小和容量大指的是什么意思?

容量大小指的是不同数据类型的存储数据的范围

 

强制类型转换中,是否可能发生数据丢失?

可能发生数据丢失

 

布尔类型能否自动转换为int? 如果不能,简述理由。

不能

因为类型不匹配

 

下面两种写法,哪个较好:

a. 70L*60*24*365*70*20

b. 70*60*24*365*70*20L

第一种写法好;

第二种表达式的前半部分70*60*24*365*70的乘积有可能会超过int的取值范围, 导致精度损失

 

第三章  控制语句

三种控制结构是什么?

顺序结构,选择结构,循环结构

 

如果if语句后面不写{},if的控制范围是否只限于第一句?

正确

 

Math.random()是什么意思?如果想获得15-20之间的随机数,怎么办?

产生一个0-1之间的随机数,包含0但不包含1

(int)(Math.random()*6)+15;

 

switch语句的功能是否完全可以使用if else if else多选择结构来代替?如果是,为什么还需要switch结构?

可以

switch一般用来做多值的判断,如果判断条件为区间,则最好使用多重if来做,如果是等值情况最好使用switch来做

 

switch中的表达式的结果需要是什么类型?

byte,char,short,int

jdk1.5 加入了枚举

jdk1.7加入了String

 

switch语句中,一个case开始执行后,什么时候结束执行这个case的语句?

遇到break结束执行这个case语句

 

switch语句中,default是否必须写?

不是必须写

 

下面代码有什么错误?

switch (c2) {

case 'y';

case 'w';

System.out.println("半元音");

break;

default:

System.out.println("辅音");

}

case后的表达式后面应该是“:”冒号

 

循环结构模拟了现实世界中的什么逻辑?

循环结构模拟了现实世界中的“重复问题“的逻辑

 

循环结构的四种内部结构是什么?

 while(布尔表达式){

      循环体;

}

do{

   循环体;

}while(布尔表达式);

for(初始表达式;布尔表达式;迭代因子){

    循环体;

}

foreach(数组或集合中元素的类型 迭代变量:数组或集合名){

    循环体;

}

while和dowhile有什么区别?

当条件不成立时,do-while至少执行一次循环体

 

什么情况下,会出现死循环?并写出一个例子来

循环条件始终成立时,则会出现死循环

while(true){

     System.out.println(helloworld);

}

for循环相比while循环有什么优势?

语法结构比while简便,

通常用于解决循环次数固定的问题

 

下面代码都有什么问题:

do{

System.out.println(a);

a++;

} while (a<0)

a没有初始化

 

下面代码有错误吗?如果有,指出错误:

for(int i=0;i<=10;i++){

System.out.println(i);  //循环体

}

System.out.println("(((((("+i);

i超出了作用域的范围

 

循环中,break的作用是?continue的作用是?

break用于强行退出循环,不执行循环中剩余的语句

continue用于跳过本次循环, 不执行continue后的语句, 继续下一次循环

 

语句块能否使用外部的变量?语句块中定义的变量,外部能否使用?

语句块能使用外部的变量, 但是语句块中定义的变量外部不能使用

 

方法的定义中,是否必须要有返回值类型?如果确实不需返回值,使用哪个关键字声明?

返回值类型不是必须的

不需要返回值使用关键字void

 

方法的定义中,return是否必须?它有什么作用?

不是必须

return语句终止方法的运行并指定要返回的数据

 

Java中,参数的传递使用值传递还是引用传递?

值传递

 

方法定义中,形式参数和实际参数有什么区别?用自己的话描述。

方法定义时的参数称为形式参数,需要数据类型

方法调用时的参数称为实际参数,不需要类型,只需要值

 

方法定义时,使用实参还是形参?

方法定义时,使用的是形参

 

定义形参时,必须要写变量类型吗?

必须要写变量类型

 

实参类型是否必须和形参类型匹配?

必须匹配

 

什么是方法的重载,有什么作用?

方法重载:

[1]在同一个类中

[2]方法的名称相同

[3]参数列表不同

[4]与访问修饰符和返回值类型无关

[5]与异常无关

作用:

传递不同的参数实现相同的效果

 

两同三不同指的是?返回值不同构成重载吗?形参名称不同构成重载吗?

两同:同一个类中,方法名称相同

三不同:参数列表的参数的类型,个数,顺序不同

返回值不同构不能方法得载

形参名称不同构不成方法重载

【上机】根据随机生成的的月份,打出该月份的天数.(不考虑闰年、闰月)

public class Test{

public static void main(String [] args){

    int day=0;

    int ran=(int)(Math.random()*12)+1;

    switch(ran){

       case 2:

          day=28;

          break;

      case 1:

      case 3:

  case 5:

case 7:

case 8:

case 10:

case 12:

   day=31;

   break;

default:

   day=30;

   break;

}

System.out.println(ran+月,共+day+);

}

}

【上机】用while和for循环分别计算100以内奇数和偶数的和,并输出。

(1)求1-100以内奇数的和;

用while循环:

int i=1;

int sum=0;

while(i<=100){

sum=sum+i;

i+=2;

}

System.out.println("1-100之间所有奇数的和是"+sum);

用for循环:

int  i=1;

int  sum=0;

for(i=1;i<=100;i+=2){

sum=sum+i;

}

System.out.println("1-100之间所有奇数的和是"+sum);

(2)求1-100以内偶数的和(略)

 

【上机】用while和for循环输出1-1000之间能被5整除的数,且每行输出3个。

用while:

int i=1;

int count=0;

while(i<=1000){

     if(i%5==0) {

        System.out.print(i+"\t");

        count++;

        if(count%3==0){

System.out.println();

}

     }  

     i++;    

  }

用for循环:

int  i=1;

int  count=0;

for(i=1;i<=1000;i++){

   if(i%5==0) {

      System.out.print(i+"\t");

      count++;

      if(count%3==0){

          System.out.println();

       }

    }  

}

 

【上机】打印九九乘法表

for(int i=1;i<=9;i++){

   for(int j=1;j<=i;j++){

     System.out.print(j+* +i+=+(i*j)+””);

}

System.out.println();

}

 

 

【上机】生成0-100随机数,直到生成88为止,停止循环!

public static void main(String[] args) {

//生成1-100随机数;

int r=(int)(Math.random()*100)+1;

while(r!=88){

r=(int)(Math.random()*100)+1;

}

}

 

【上机】把100~150之间不能被3整除的数输出

 for(int i=100;i<=150;i++){

if(i%3!=0){

   System.out.println(i);

}

}

 

【上机】打印出实心10*10正方形、空心10*10正方形

for(int i=1;i<=10;i++){

for(int j=1;j<=10;i++){

   System.out.print(*);

}

System.out.println();

}

 

【上机】打印出实心10*10菱形, 空心10*10菱形

//1-6行正三角

for(int i = 0; i < 6; i++){

//*前空格

for(int j = 0; j < 5 - i; j++){

System.out.print("");

}

//*

for(int j = 0; j < 2 * i + 1; j++){

System.out.print("*");

}

//*后空格

for(int j = 0; j < 5 - i; j++){

System.out.print("");

}

System.out.println();

}

//7-11行倒三角

for(int i = 0; i < 5; i++){

//*前空格

for(int j = 0; j < i + 1; j++){

System.out.print("");

}

//*

for(int j = 0; j < 9 - 2 * i; j++){

System.out.print("*");

}

//*后空格

for(int j = 0; j < i + 1; j++){

System.out.print("");

}

System.out.println();

}

 

【上机】将如上所有上机相关算法的作业封装成方法便于重用

 

第四章 数组

数组的类型可以为任意类型吗?

可以是任意类型

 

数组中的元素的类型必须是相同的吗? 数组中的元素是有序的吗?

数组中元素的类型必须是相同的

数组中元素是有序的, 索引的顺序

 

数组的长度可变不? 数组的长度使用哪个属性?

数组一旦声明其长度不能更改

数组的长度属性是length

 

数组元素下标(或索引)的范围是?

范围是0-数组名.length-1

 

数组也是引用类型吗? 数组也是对象,这句话对吗?

数组是引用数据类型

数组也是对象这句话正确

 

数组中的元素就像对象中的成员变量一样,初始化方式也一样。这句话对吗?

正确

 

【上机】数组的三种初始化方式是什么? 并测试练习相关代码

静态初始化

 int [] a={1,2,3};

 

动态初始化

int [] a=new int[2];

a[0]=1;

a[1]=2;

 

默认初始化

int [] a=new int[2];//0,0

 

数组的静态初始化代码,下面代码有没有不合理的地方:

Dog[] dogs2 = {

new Dog("大黄",1),

new Dog("小强",2),

 };

有,new Dog(小强,2)后的逗号应去掉

 

完成如下代码:

char[] s;

s = new char[26];

for ( int i=0; i<26; i++ ) {

 s[i] = (char) (’A’ + i);

 System.out.println(s[i]);   

// System.out.println(“s[” + i + “]=” + s[i]);

}

 

下面的数组定义哪些是正确的?

A: int a[][] = new int[3,3];

B: int a[3][3] = new int[][];

C: int a[][] = new int[3][3];

D: int []a[] = new int[3][3];

E: int[][]a = new int[3][3];

CDE是正确的

 

请在下面语句中找出一个正确的。

A. int arr1[2][3];

B. int[][] a2 = new int[2][];

C. int[][] arr2=new int [][4];

D. int arr3[][4]= new int [3][4];

B正确

 

【上机】定义一个长度为10 的一维字符串数组,在每一个元素存放一个单词;然
后运行时从命令行输入一个单词,程序判断数组是否包含有这个单词,包含这个
        单词就打印出“Yes”,不包含就打印出“No” 。

public class Test{

public static boolean isFind(String [] arr,String word){

        boolean isFlag=false;

        for(int i=0;i

             if(word.equals(arr[i])){

                  isFlag=true;

                  break;

             }

}

          return isFlag;

   }

  public static void main(String [] args){

String[] arr={hello,world,java,html,oracle,

apple,orange,banana,red,green};

System.out.println(isFind(arr,args[0])?Yes:No);

}

}

 

冒泡排序的基本思路

1.整个数列分成两部分:前面是无序数列,后面是有序数列

2.初始状态下,整个数列都是无序的,有序数列是空

    3.如果一个数列有n个元素,则至多需要n-1趟循环才能保证数列有序

4.每一趟循环可以让无序数列中最大数排到最后,(也就是说有序数列的元素个数增加1)

5.每一趟循环都从数列的第一个元素开始进行比较,依次比较相邻的两个元素,比较到无序数列的末尾即可(而不是数列的末尾)

6.如果前一个大于后一个,交换

7.根据是否发生交换判断数组是否已经有序

 

使用冒泡排序完成数组元素的排序

int [] array={34,23,4,55,34,53};

for(int i=0;i

boolean flag = true;

    for(int j=0;j

     if(array[j]>array[j+1]){

            int temp=array[j];

            array[j]=array[j+1];

            array[j+1]=temp;

Flag = false;

        }

}

if(flag){

break;

}

}

 

可变参数的作用及其用法

作用:适用于参数个数不确定、类型确定的情况,java把可变参数当做数组处理

用法:

只能出现在参数列表的最后

…位于变量类型和变量名之间,前后有无空格都可以

调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数

 

如何给main方法传递实参

通过命令行参数给main方法传递实参

 

【上机】用二重循环求出二维数组b所有元素的和:

int[][] b={{11},{21,22},{31,32,33}}

int sum=0;

for(int i=0;i

  for(int j=0;j

   sum+=b[i][j];

}

}

System.out.println(“和为:”+sum);

 

eclipse可以开发Java,可以开发c++吗?

可以

 

eclilpse中的debug模式有什么好处?

修正语法错误和逻辑错误的过程,保证程序的正确性

 

eclipse中运行一个Java程序,如何操作?

单击右键选择run As ,再选择java Application

 

eclipse需要安装吗? 使用eclispe需要安装JDK吗?

不需要

你可能感兴趣的:(题库)