ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

JAVA 技术方向测试题-Java 基础

2021-10-03 17:33:34  阅读:115  来源: 互联网

标签:JAVA nums int s1 测试题 System ++ Java out


JAVA 技术方向测试题-Java 基础

1.JVM、JRE 和 JDK 的关系

JDK>JRE>JVM.

JVM:是Java虚拟机。能识别class类型文件中字节码指令,调用操作系统向上的API完成动作。JVM是java能够跨平台的核心。

JRE:Java运行时环境。主要包含两个部分:JVM的标准实现和Java的一些基本类库。与jvm相比多出来的是一部分的java类库。

JDK:Java开发工具包。JDK是整个Java开发的核心,它集成了JRE和一些工具。

2.什么是跨平台性?原理是什么?

跨平台性是指经过一次编译后可以在不同的操作系统上运行。

实现原理:JDK里有多个jvm针对不同的操作系统,这样只需要编译一次就能生成jvm时别的class文件,通过不同的jvm翻译就能让不同的操作系统运行。

3.&和&&的区别?

短路与:&&,如果左侧的表达式是false就不执行右侧,直接返回false。

&:无论左侧是不是false都会在执行一边右边。

4.用最有效率的方法计算 2 乘以 8

2 << 3.

一个数左移几位就是乘以2的几次方。8 = 23,所以左移3位,位运算是cpu直接支持的,效率更高,而2*8是通过加法运算操作的。

5.在没有使用临时变量的情况如何交换两个整数变量的值?

a ^= b

b ^= a

a ^= b

6.short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1; 有错吗?

short s1 = 1;
s1 = s1 +1;//是错误的. 因为1是int型,相加之后是int型不能直接赋值给short型,需要强转.
s1 += 1;//是正确的.因为 += 隐含了强转,相当于  s1 = (int) s1 + 1;

7.float f=3.4;是否正确?

不正确。在Java里,没有小数点的数据类型默认是int型,有小数点的数据类型是double类型

float f = 3.4F;//这样是正确的.

8.手动实现一下冒泡排序(快速排序)

//第一种方法
boolean flag =  false;
do {
    flag = false;
    for(int i = 0;i < nums.length;i++) {
        //如果左侧大于右侧
        if(nums[i] > nums[i+1]) {
            nums[i] ^= nums[i+1];
            nums[i+1] ^= nums[i];
            nums[i] ^= nums[i+1];
            flag = true;
        }
    }
}while(flag)
    //第二种方法
    //轮数
for(int i = 0;i < nums.length;i++) {
	 //次数
	for(int j = i;j < nums.length-i-1;j++) {
		if(nums[j] > nums[j+1]) {
			nums[j] ^= nums[j+1];
			nums[j+1] ^= nums[j];
			nums[j] ^= nums[j+1]; 
		}
	}
}

9.实现打印指定行数的空心菱形的功能

for(int i = 0;i < 4;i++) {
			for(int k = 0;k < 4-i-1;k++) {
				System.out.print("  ");
			}
			for(int j = 0;j < 2*i+1;j++) {
				if(j == 0 || j == 2*i) {
					System.out.print("* ");
				}else {
					System.out.print("  ");
				}
			}
			System.out.println();
		}
		for(int i = 0;i < 3;i++) {
			for(int j = 0;j < i+1;j++) {
				System.out.print("  ");
			}
			for(int k = 0;k < 5-2*i;k++) {
				if(k == 0 || k == 5-2*i-1) {
					System.out.print("* ");
				}else {
					System.out.print("  ");
				}
				
			}
			System.out.println();
		}

运行结果:image-20211003163332688

10.打印扫雷的地图

Scanner input = new Scanner(System.in);
		Random r = new Random();
		System.out.print("请输入地图的边长:");
		int size = input.nextInt();
		String[][] map = new String[size][size];
		//初始化地图
		for (int i = 0; i < size; i++) {
			for (int j = 0; j < size; j++) {
				map[i][j] = i+""+j;
			}
		}
		//打印地图
		for (int i = 0; i < size; i++) {
			for (int j = 0; j < size; j++) {
				System.out.print(map[i][j]+"  ");
			}
			System.out.println();
		}

运行截图:

image-20211003170909714

标签:JAVA,nums,int,s1,测试题,System,++,Java,out
来源: https://www.cnblogs.com/mxkgmn/p/15364534.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有