本文目录一览:
JAVA基础测试题
1 跟java运行的机制有关,java先加载静态域,static int x=10; ,然后静态块static { x+=5;},static { x/=3;}(虽然位置在后但先运行) ,然后静态方法static void main
所以x=10,x=15,x=5.
2 A因为int [ ] x = new int[25],数组建立后,每个元素默认值为0;x[24]=0;x[25] 下标越界,x[0]=0;
3 switch(i)不接受long型,int或者枚举型可以。i=Integer.parseInt(args[0]);虽然这样每课时i还是long型的。
4 c,没什么好说的,就是这么规定的!
java基础面试题有哪些?
下面是10道java基础面试题,后附答案
1.什么是 Java 虚拟机?为什么 Java 被称作是“平台无关的编程语言”?
Java 虚拟机是一个可以执行 Java 字节码的虚拟机进程。Java 源文件被编译成能被 Java 虚拟机执行的字节码文件。
Java 被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者是重新编译。Java 虚拟机让这个变为可能,因为它知道底层硬件平台的指令长度和其他特性。
2.“static”关键字是什么意思?Java 中是否可以覆盖(override)一个 private 或者是static 的方法?
“static”关键字表明一个成员变量或者是成员方法可以在没有所属的类的实例变量的情况下被访问。
Java 中 static 方法不能被覆盖,因为方法覆盖是基于运行时动态绑定的,而 static 方法是编译时静态绑定的。static 方法跟类的任何实例都不相关,所以概念上不适用。
3.JDK 和 JRE 的区别是什么?
Java 运行时环境(JRE)是将要执行 Java 程序的 Java 虚拟机。它同时也包含了执行 applet 需要的浏览器插件。Java 开发工具包 (JDK)是完整的 Java 软件开发包,包含了 JRE,编译器和其他的工具(比如:JavaDoc,Java 调试器),可以让开发者开发、编译、执行 Java 应用程序。
4.是否可以在 static 环境中访问非 static 变量?
static 变量在 Java 中是属于类的,它在所有的实例中的值是一样的。当类被 Java 虚拟机载入的时候,会对 static 变量进行初始化。如果你的代码尝试不用实例来访问非 static 的变量,编译器会报错,因为这些变量还没有被创建出来,还没有跟任何实例关联上。
5.Java 支持的数据类型有哪些?什么是自动拆装箱?
Java 语言支持的 8 中基本数据类型是:
byte
short
int
long
float
double
boolean
char
自动装箱是 Java 编译器在基本数据类型和对应的对象包装类型之间做的一个转化。比如:把 int 转化成 Integer,double 转化成 double,等等。反之就是自动拆箱。
6.Java 支持多继承么?
不支持,Java 不支持多继承。每个类都只能继承一个类,但是可以实现多个接口。
7.Java 中,什么是构造函数?什么是构造函数重载?什么是复制构造函数?
当新对象被创建的时候,构造函数会被调用。每一个类都有构造函数。在程序员没有给类提供构造函数的情况下,Java 编译器会为这个类创建一个默认的构造函数。
Java 中构造函数重载和方法重载很相似。可以为一个类创建多个构造函数。每一个构造函数必须有它自己唯一的参数列表。
Java 不支持像 C++中那样的复制构造函数,这个不同点是因为如果你不自己写构造函数的情况下,Java 不会创建默认的复制构造函数。
8.Java 中的方法覆盖(Overriding)和方法重载(Overloading)是什么意思?
Java 中的方法重载发生在同一个类里面两个或者是多个方法的方法名相同但是参数不同的情况。与此相对,方法覆盖是说子类重新定义了父类的方法。方法覆盖必须有相同的方法名,参数列表和返回类型。覆盖者可能不会限制它所覆盖的方法的访问。
9.接口和抽象类的区别是什么?
Java 提供和支持创建抽象类和接口。它们的实现有共同点,不同点在于:
接口中所有的方法隐含的都是抽象的。而抽象类则可以同时包含抽象和非抽象的方法。
类可以实现很多个接口,但是只能继承一个抽象类
类如果要实现一个接口,它必须要实现接口声明的所有方法。但是,类可以不实现抽象类声明的所有方法,当然,在这种情况下,类也必须得声明成是抽象的。
抽象类可以在不提供接口方法实现的情况下实现接口。
Java 接口中声明的变量默认都是 final 的。抽象类可以包含非 final 的变量。
Java 接口中的成员函数默认是 public 的。抽象类的成员函数可以是 private, protected 或者是 public。
接口是绝对抽象的,不可以被实例化。抽象类也不可以被实例化,但是,如果它包含 main 方法的话是可以被调用的。
10.什么是值传递和引用传递?
对象被值传递,意味着传递了对象的一个副本。因此,就算是改变了对象副本,也不会影响源对象的值。
对象被引用传递,意味着传递的并不是实际的对象,而是对象的引用。因此,外部对引用对象所做的改变会反映到所有的对象上。
最后祝你面试顺利!
要JAVA基础的一些练习题与参考答案
一、问答题
1、Java语言的数据类型有哪些?8
答:有byte(字节型)、char(字符型)、boolean(布尔型)、short(短整型)、int(整型)、long(长整型)、
浮点型:float(单精度)、double(双精度)。
2、写出算术运算符、关系运算符、逻辑运算符各自包含的运算符,写出条件运算符的形式,并简述其执行过程。10
答:
算术运算符:++、–、+、-、*、/、%
关系运算符:!=、=、=、、、==
逻辑运算符:!(逻辑非)、(逻辑与)、||(逻辑或)
条件运算符的形式:表达式1?表达式2:表达式3;3、数组有怎样的特征?写出一维数组两种初始化的语法格式(可使用具体的实例)。10
答:数组特征:数组有若干个元素;
各元素有相同的数据类型;
按一定的顺序排列;
一维数组两种初始化的语法格式:
int a[]=new int[2];
a[0]=1;
a[1]=2;
或int a[];
a[]=new int[2];
a[0]=1;
a[1]=2;int a[]={1,2};
4、比较顺序表、栈、队列的异同点,分别写出冒泡法排序的主要特点。12
答:都运用数组的知识,都运用了方法调用;
栈的特点是:
冒泡法排序的主要特点:
经过多轮循环,每一轮循环从最后一个元素依次与前面的元素比较大小,最终找到的最小元素排在第一位,第一轮循环终止;再依次进行下一轮循环。
二、编程题
1、规定一个工人工作时间一月160小时,每小时工资5元,加班的话,每小时增加4元,请编程计算此工人一个月的工资,工作时间由键盘输入。15
import jaimport java.io.*;
pubic class Qgrgz
{
public static void main(String[] args)throws IOException
{int x,result;br InputStreamReader ir;br BufferedReader in;br ir=new InputStreamReader(System.in);br in=new BufferedReader(ir);br System.out.println(“Shurugongrengongzuoshijian:”);br String s=in.readLine();br x=Integer.parseInt(s);br if(0xx=160)br result=x*5;br elsebr result=(160*5+(x-160)*9);br System.out.println(“gongrenyuegongziwei:”+result);br }
}2、编程求解1—100中是7的倍数的数值的和。15
public class Qh
{
public static void main(String[] args)
{
int sum=0;
int i=1;
while(i100)
{
if(i%7==0)
sum +=i;
i++;
}
System.out.println(“sum=”+sum);
}
}
3、输入3名学生4门课程的成绩,分别统计每个学生4门课程的平均成绩。15
import java.io.*;
public class Pjf
{
public static void main(String[] args)throws IOException
{
InputStreamReader ir;
BufferedReader in;
ir=new InputStreamReader(System.in);
in=new BufferedReader(ir);
for(int i=1;i=3;i++)
{
double v=0,sum=0;
for(int j=1;j=4;j++)
{
System.out.print(“请输入第”+i+”个学生第”+j+”科成绩:”);
String a=in.readLine();
int x=Integer.parseInt(a);
sum=sum+x;
}
v=sum/4;
System.out.println(“总分是:”+sum);
System.out.println(“平均分是:”+v);
}
}
}
4、运用方法调用求一维数组中的最大元素及下标,在main方法中输入数组元素。15
import java.io.*;
public class Qszzdys
{ int a[]=new int[10];
public static void main(String[] args)throws IOException
{
int i;
Qszzdys b=new Qszzdys();
InputStreamReader ir;
BufferedReader in;
ir=new InputStreamReader(System.in);
in=new BufferedReader(ir);
for(i=0;i10;i++)
{
System.out.println(“请输入a[“+i+”]:”);
String s=in.readLine();
b.a[i]=Integer.parseInt(s);
}
b.d();
}
void d()
{
int max,x=0;
max=a[0];
for(int j=1;j10;j++)
if(a[j]max)
{
max=a[j];
x=j;
}
System.out.println(“最大值是:”+max+”;下标是:”+x);
}
}
5、运用选择法对23,45,34,78,99,12,50,0这组数进行升序排列。(选做题,做了加分,没做不减分)15
public class Paixu
{
int [] a;
int len;
void f(int maxSize)
{
a=new int[maxSize];
len=0;
}
void b(int value)
{
a[len]=value;
len++;
}
void display()
{
for(int i=0;ilen;i++)
{
System.out.print(a[i]+” “);
}
System.out.println();
}
void ff();
{
int out,in,min;
for(out=0;outlen-1;out++)
{
min=out;
for(in=out+1;inlen;in++)
if(a[in]a[min])
min=in;
swap(out,min);
}
}
void swap(int one,int two)
{
int temp=a[one];
a[one]=a[two];
a[two]=temp;
}
public static void main(String[] args)
{
Paixu paixu=new Paixu();
int maxSize=100;
paixu.f(maxSize);
paixu.b(23);
paixu.b(45);
paixu.b(34);
paixu.b(78);
paixu.b(99);
paixu.b(12);
paixu.b(50);
paixu.b(0);
System.out.println(“排序前:”);
paixu.display();
paixu.ff();
System.out.println(“排序后:”);
paixu.display();
}
}
JAVA 练习题
public class JavaExos {
public static void charInt(String chaine){ //1044
String[] charInt = new String[2];
int count = -1;
char maxChar = ‘A’;
int[] letterCount = new int[26];
String word = chaine.toLowerCase();
for (int i=0;iword.length();i++) {
int indexOfChar = (byte)word.charAt(i)-97;
letterCount[indexOfChar]++;
if (letterCount[indexOfChar]count || (letterCount[indexOfChar]==count word.charAt(i)maxChar)){
count = letterCount[indexOfChar];
maxChar = word.charAt(i);
}
}
charInt[0] = String.valueOf(maxChar);
charInt[1] = “”+count;
System.out.println(charInt[0]+” “+charInt[1]);
}
public static void getDate(int n){ //1047 这题如果给1,其实是指2000年1月2号.
n++;
int[] getYear = getYear(n);
int year = getYear[0];
int[] getMonth = getMonth(year,getYear[1]);
int month = getMonth[0];
String monthString ;
if(month10) monthString = “0”+String.valueOf(month);
else monthString = String.valueOf(month);
int day = getMonth[1];
System.out.println(year+”-“+monthString+”-“+day+” “+getDayOfWeek(n));
}
private static boolean isBissextile(int n){
if (n%4==0 !(n%100==0n%400!=0))
return true;
else
return false;
}
private static int[] getYear(int n){
int[] getYear = new int[2];
int year = 2000;
while(n0){
if(isBissextile(year)) n -= 366;
else n -= 365;
if (n0) year++;
}
if(isBissextile(year)) n+=366;
else n += 365;
getYear[0] = year;
getYear[1] = n;
return getYear;
}
private static int[] getMonth(int year, int n){
int[] getMonth = new int[2];
int month = 1;
while(n0){
if(month=7 month%2 != 0) n -= 31;
else if (month==2 isBissextile(year) ) n -= 29;
else if (month==2 !isBissextile(year)) n -= 28;
else if(month=7 month%2==0) n -= 30;
else if(month%2==0) n-=31;
else n -= 30;
if (n0) month++;
}
if(month=7 month%2 != 0) n += 31;
else if (isBissextile(year) month==2) n += 29;
else if (!isBissextile(year) month==2) n += 28;
else if(month=7 month%2==0) n += 30;
else if(month%2==0) n+=31;
else n += 30;
getMonth[0] = month;
getMonth[1] = n;
return getMonth;
}
private static String getDayOfWeek(int n){
int quotient = n/7;
int remainder = n -= quotient*7;
switch(remainder){
case 0 : return “Sunday”;
case 1 : return “Monday”;
case 2 : return “Tuesday”;
case 3 : return “Wednesday”;
case 4 : return “Thursday”;
case 5 : return “Friday”;
case 6 : return “Saturday”;
default : return “Never arrive”;
}
}
public static void getCode(String chaine){ //1048
chaine = chaine.toUpperCase();
System.out.println(“START”);
System.out.println(chaine);
System.out.println(“END”);
System.out.println();
for(int i=0;ichaine.length();i++){
System.out.print((changChar(chaine.charAt(i))));
}
System.out.println();
}
private static char changChar(char c){
if(c=65 c=90 c-565) return (char)(c+26-5);
else if(c=65 c=90) return (char)(c-5);
else return c;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
JavaExos.charInt(“adfadffasdfda”);
JavaExos.getDate(1751);
JavaExos.getCode(“NS BFW, JAJSYX TK NRUTWYFSHJ FWJ YMJ WJXZQY TK YWNANFQ HFZXJX”);
java基础练习题
package ;
import java.util.Scanner;
public class test {
public static void main(String[] args) {
Scanner in =new Scanner(System.in);
System.out.println(“输入重量和是否加急”);
String zl=in.next();
String [] a=zl.split(” “);
int z=Integer.parseInt(a[0]);
int moneys=0;
if(z=10 z0){
moneys+=8;
if(a[1].equals(“y”))
moneys+=5;
}else{
moneys=((z-1000)%500+1)*4;
if(a[1].equals(“y”))
moneys+=5;
}
System.out.println(moneys);
}
}
没测试
求Java基础,练习题。
选择题 (25道)
1. 下列选项中,不属于Java语言特点的一项是( C )。
A:分布式 B:安全性 C:编译执行 D:面向对象
2. Java语言的特点与 C/C+ +语言的比较中说法错误的是:( D )
A:简单性Java继承了 C/C+ +的语法 ,丢弃了其中不常用又容易引起混淆的功能。
B:Java是一种纯面向对象的语言 ,具有封装、继承 ( Inheritance)和多态( Polymorphism)的特点。
C:Java应用程序可凭借URL打开并访问网络上的对象。
D:解释型Java写成的源代码需要被编译成高阶的字节码 ,它们与机器架构有关。
3. 阅读下列代码,选出该代码段正确的文件名( C )。
class A{
void method1(){
System.out.println(“Method1 in class A”);
}
}
public class B{
void method2(){
System.out.println(“Method2 in class B”);
}
public static void main(String[] args){
System.out.println(“main() in class B”);
}
}
A: A.java B:A.class C: B.java D: B.class
4. 如果一个类的文件名为Student.java,但是类的代码为:
public class Student {
public static void main(String[] args) {
System.out.println(82);
}}
那么下列说法正确的是:( B )
A:程序运行结果为8; B:程序运行结果为2;
C:程序运行结果为0; D:程序编译错误,不能运行;
5. 符合对象和类的关系的是( D )。
A:教师和学生 B:书和房子
C:狗和猫 D:飞机和交通工具
6. 关于垃圾回收机制描述不正确的是( B )
A:垃圾回收机制不须通过程序员调用相应方法,也能自动启动。
B:java程序员用System.gc()方法一定能进行垃圾回收;
C:垃圾回收机制属于jvm自动操作,java程序员可以不进行垃圾回收操作。
D:垃圾回收机制并不是由操作系统自动执行。
7. 编译下面源程序会得到哪些文件( D )?
class A1{
}
class A2 exdends A1{
}
public class B{
public static void main(String[] args){
}
}
A: 只有B.class文件 B:只有A1.class和A2.class文件
C: 编译不成功 D:A1.class、A2.class和B.class文件
8. 下列关于基本数据类型的说法中,不正确的一项是( D )。
(A)boolean类型变量的值只能取真或假
(B)float是带符号的32位浮点数
(C)double是带符号的64位浮点数
(D)char是8位Unicode字符
9. 下列(D )是合法的标识符?
A:12class B:void C:-5 D:_blank
10. 在编写Java程序时,如果不为类的成员变量定义初始值,Java会给出它们的默认值,下列说法中不正确的一个是( D )。
A:byte的默认值是0 B:boolean的默认值是false
C: char类型的默认值是’\0’ D: long类型的默认值是0.0L
11. 下列程序执行的结果是:( B )
public class News {
public static void main(String[] args) {
System.out.println(1+2+ “aa”+3);
}}
A: “12aa3” B: “3aa3 ” C: “12aa” D: “aa3”
12. 表达式(12==0) (1/0 1)的值为( B )。
A: true B: false C: 0 D: 运行时抛出异常
13. 下列循环体执行的次数是( C )。
int y=2, x=4;
while(–x != x/y){ }
A : 1 B: 2 C : 3 D : 4
14. 已知如下代码:
switch(m){
case 0: System.out.println(“Condition 0”);
case 1: System.out.println(“Condition 1”);
case 2: System.out.println(“Condition 2”);
case 3: System.out.println(“Condition 3”);break;
default:System.out.println(“Other Condition”);
}
当m的值为( D )时,输出“Condition 3”
(A)2 (B)0、1 (C)0、1、2 (D)0、1、2、3
15. 下列语句输出的结果是:( C )
public class X3 {
public static void main(String[] args) {
for(int i=0; i10; i++){
if(i==5) break;
System.out.print(i);
}
}
}
A:编译错误; B:1234;C:01234;D:12345;
16. 下列语句输出的结果是:( D )
public class Lx1 {
public static void main(String[] args) {
for(int i=0;i5;i++){
switch(i){
case 0:System.out.print(“B”);
case 1:System.out.print(“e”);break;
case 2:System.out.print(“g”);
case 3:System.out.print(“!”);break;
case 4:System.out.print(“!”);break;
default:System.out.print(“!”);
}
}
}
}
A:Beg!!! B:Beeg! C:Beg! D:Beeg!!!
17. 下面foreach循环的程序输出结果是( D )。
public class Lx1{
public static void main(String[] args) {
String s1[]={“欢迎您”,”3″,”G”,”同”,”学”,};
Arrays.sort(s1);
for(String s0:s1)
System.out.print (s0);
}
}
A:欢迎您3G同学 B:3G欢迎您同学 C:同学欢迎您3G D:3G同学欢迎您
18. 阅读以下程序,选择正确的运行结果:( B )
public class Lx1 {
public static void main(String[] args) {
byte d[]=”YOUIHE你我他”.getBytes();
String s=new String(d,6,2);
System.out.println(s);
}
}
A:HE; B:你; C:我; D:他
19. 设有下列数组定义语句:
int a[][]= {{1, 2}, {3}};
则对此语句的叙述正确的是( D )。
A: 定义了一个名为a的一维数组 B: a数组 a[1][1]为0
C: a数组元素的下标为1~3 D: 数组中每个元素的类型都是整数
20. 下列程序输出的结果是:( B )
public class Lx1 {
public static void main(String[] args) {
String a[][] ={{“”,””,””,””},{“”},{“”,””}};
System.out.println(a[2].length);
}
}
A:1 B:2 C:3 D:4
21. 关于以下程序的说明,正确的是( C )
1. class StaticStuff
2. {
3. static int x=10;
4. static { x+=5;}
5. public static void main(String args[ ])
6. {
7. System.out.println(“x=” + x);
8. }
9. static { x/=3;}
10. }
A、4行与9行不能通过编译,因为缺少方法名和返回类型
B、9行不能通过编译,因为只能有一个静态初始化器
C、编译通过,执行结果为:x=5
D、编译通过,执行结果为:x=3
22. 给出下面代码,关于该程序以下哪个说法是正确的?( C )
public class Person{
static int arr[] = new int[5];
public static void main(String a[]) {
for(int i=0;i
System.out.print(arr[0]);
}
}
A、编译时将产生错误 B、编译时正确,运行时将产生错误 C、输出零 D、输出空
23. 下面程序中类ClassDemo中定义了一个静态变量sum,分析程序段的输出结果。( C )
class ClassDemo {
public static int sum=1;
public ClassDemo() {
sum = sum + 5;}
}
public class ClassDemoTest{
public static void main(String args[]) {
ClassDemo demo1=new ClassDemo();
ClassDemo demo2=new ClassDemo();
System.out.println(demo1.sum);}
}
A: 0 B: 6 C: 11 D: 2
24. 下面关于方法的说法,不正确的是( C )。
A: Java中的构造方法名必须和类名相同
B: 方法体是对方法的实现,包括变量声明和合法语句
C: 如果一个类定义了构造方法,也可以用该类的默认构造方法
D: 类的私有方法不能被其他类直接访问
25. 在Java中下列说法正确的是( C )
A) 一个子类可以有多个父类,一个父类也可以有多个子类
B) 一个子类可以有多个父类,但一个父类只可以有一个子类
C) 一个子类可以有一个父类,但一个父类可以有多个子类
D) 上述说法都不对
原创文章,作者:KPUD,如若转载,请注明出处:https://www.506064.com/n/143085.html