Java基础测试题分析

第一题是关于基本的算法知识,这个很有必要去掌握以下,在学校也经常听老师们说找工作比试面试会出一些这方面的知识,我拿到的第一题是关于排序的,虽然很简单,但是我还是要提醒一下基础不太好的同学去学习一下。算法是编程的核心、也是灵魂,它的重要性就不需要我去多说了,我需要提示的就是要去坚持学习算法,因为算法是属于内功(扯得有点多)。

第二题是关于斐波那契数列的,这个也很基础,主要是考察你对数据之间的分析能力,以及对递归的了解。相信中学时可定遇到过关于数列的各种z知识,对数据之间规律也有一定的洞察能力,所以我不觉得这个题会是大家的难题(数学是算法的根本啊)。

第三题是关于数据类型转化的一些基本知识,对类型转化了解的同学可以略过,但是我觉得还是有必要去提醒一下。我觉得黑马的老师出发点很好,就是要考察学生对基础知识的掌握程度。下面插入原题,希望不会涉及到泄露题目的问题。

分析:下代码哪个是正确的?为什么?

a. byte b = 1 + 1;

b. byte b = 1; b = b + 1;

c. byte b = 1; b = b += 1;

d. byte b = 1; b = ++b;

a.相信大家都没有什么问题(当然如果不了解类型转化的话是有问题的,虽然没有编译运行都没问题,但是下面的题就会出现不知所措的情况)。

b.相信大家以及发现问题了,编译是通过不过的。因为你试图将int型变量赋值给byte型变量。这样会造成精度的丢失,所以会编译失败(编译失败对程序员来说是一件很好的事)。说说原因吧,在进行b+1操作时编译器会自动检测到byte类型与int类型,这时会自动向上转型,也就是经过b+1之后的结果已经不再是byte类型了,而变量b是byte类型,你试图将int类型赋值给byte自然会编译失败,如果想通过编译,可以将int型变量强制转化为byte型,这时会丢失精度。如下:

byte b = 1;

b = (byte)(b + 1);

c.你会发现编译运行都没有问题,但是重要是的是你是否明白为什么可以通过编译与运行。首先可以将语句分解为一下语句:

byte b = 1;

b += 1;

b =b;

观察到第二条语句与b题的语句很像,但是b编译失败而c通过。原因在于在执行+=操作之前会将运算符左边的变量类型转化为右边的变量类型,而右边b+1在b题也说明了,b+1的结果是int型值,所以c中b的类型自动转化为了int型。所以编译是没有问题的。

d.根据c的分析我们可以将语句分解为:

byte b = 1;

++b;

b=b;

而第二句可以转化为b+=1.通过c的分析,你就会明白d的原理了。

总结:

1、通过上文的简单分析你应该得出如下结论

a:基本数据类型进行四则运算时,运算结果与较高级别的数据类型进行自动提升;

b:++、+=时首先会将运算符右边的数据类型强制转化为与运算符左边相同的类型,并且最后结果与运算符左边的保持一致

2、应该具有程序分析的规律(或者调试程序的规律),将问题分解,找与其等价的式子;将要调试的部分与其他部分进行隔离,也 就,是降低其他因素的干扰。

3、培养深究原理的习惯,这会促使你很快的成长。

第四题是关于Iterator的使用,这个属于集合框架部分知识,本题考查的是迭代,属于简单级别。我想老师是想提醒你去复习集合框架吧。

第五题是关于打印图形的,不过属于简单的一种,打印九九乘法表,这个没有什么好说的,对于掌握基本编码能力的你肯定不是问题。

一、Java基础--01的更多相关文章

  1. java基础 01

    java基础01 1. /** * JDK: (Java Development ToolKit) java开发工具包.JDK是整个java的核心! * 包括了java运行环境 JRE(Java Ru ...

  2. java基础01

    1. /** * JDK: (Java Development ToolKit) java开发工具包.JDK是整个java的核心! * 包括了java运行环境 JRE(Java Runtime Env ...

  3. java基础-01代理类

    简单的代理类实现案例主实现类:ProxyTestimport java.lang.reflect.InvocationHandler;import java.lang.reflect.Proxy;im ...

  4. Java基础01 ------ 从HelloWorld到面向对象

    Java是完全面向对象的语言.Java通过虚拟机的运行机制,实现“跨平台”的理念.我在这里想要呈现一个适合初学者的教程,希望对大家有用. "Hello World!" 先来看一个H ...

  5. 【Java基础01】Java InputStream的read方法

    JDK关于InputStream中的read方法的描述: (1) read() :  从输入流中读取数据的下一个字节,返回0到255范围内的int字节值.如果因为已经到达流末尾而没有可用的字节,则返回 ...

  6. java基础-01基本概念

    java的特点 跨平台 所谓的平台,我们可以理解为操作系统. 大部分语言是不能跨平台的,比如c语言的程序在windows和linux上需要编写不同的代码. java程序是运行在JVM(Java Vir ...

  7. Java基础01 从HelloWorld到面向对象(转载)

    Java是完全面向对象的语言.Java通过虚拟机的运行机制,实现“跨平台”的理念. "Hello World!" public class HelloWorld{    publi ...

  8. java 基础 01 变量和注释、数据类型

    1,变量和注释 比如:姓名:xiaoming 年龄:18 1.1变量的基本概念 当需要在程序中记录单个数据内容时,则需要声明一个变量来处理,而变量的本质就是内存中申请一块存储单元用于存储数据内容,由于 ...

  9. Java基础——01

    今日学习 2020-2-27 Java多态 多态性格式 /* 代码中体现多态性 其实就是一句话:父类指向子类对象 格式: 父类名称 对象名= new 子类名称(): 或者 接口名称 对象名 = new ...

随机推荐

  1. iOS 时间戳

    时间戳用过一回,总结一下: 1.在Terminal下获得时间戳: date +%s 原来要在服务器端挂文档,方便开发商下载,用时间戳作为文件名称来区分. 2.在程序下获得时间戳: NSDate * n ...

  2. <dependency>spring-webmvc</dependency>

    Spring 4.2.0.RELEASE版本: <dependency> <groupId>org.springframework</groupId> <ar ...

  3. linux web服务器静态资源的处理 unison+inotify双向同步

    linux web服务器静态资源的处理 unison+inotify双向同步 http://monkeyzhu.blog.51cto.com/5764358/1324391 简介 unison可以使两 ...

  4. Inside Flask - app.py - 1

    Inside Flask - app.py - 1 除 werkzeug 和 jinja2 等依赖库外,app.py 是在 Flask 的 __init__.py 中导入的第一个 Flask 自身的模 ...

  5. jboss漏洞导致服务器中毒

    中毒现象 1. 网络出现拥塞,访问延迟增加. 2. 系统定时任务表中出现异常的定时任务. 3. 出现异常进程. 4. $JBOSS_HOME/bin或/root目录下出现大量的异常文件.     现象 ...

  6. Step by Step

    数据库设计Step by Step篇目整理及下载地址 系列篇目 1. 数据库设计 Step by Step (1)——扬帆启航 2. 数据库设计 Step by Step (2)——数据库生命周期 3 ...

  7. Vue.2.0.5-过渡状态

    过渡状态 Vue 的过渡系统提供了非常多简单的方法设置进入.离开和列表的动效.那么对于数据元素本身的动效呢,比如: 数字和运算 颜色的显示 SVG 节点的位置 元素的大小和其他的属性 所有的原始数字都 ...

  8. nsstring打印结构体

    // //  main.m //  09-常用结构体 // //  Created by apple on 14-3-20. //  Copyright (c) 2014年 apple. All ri ...

  9. C# WebApi传参之Get请求-AJAX

    最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷.  学无止境,精益求精    在介绍本篇博客之前,先来温故下AJax的请求, ...

  10. linux:习惯

    1>.系统里面必须最少有两个账号,一个root,一个普通账户; 2>.平时登录系统均使用普通账户登录,除非需要配置或者执行特殊命令才切换至root; 3>.linux系统下严格区分大 ...