用java编写计算器程序写一个程序?

下面列出这份 Java 面试问题列表包含的主题

  • 多线程,并发及线程基础
  • 数据类型转换的基本原则
  • Java 中的数据结构和算法

现在是时候给你展示我近 5 年从各种面试中收集来的 133 个问题了。我确定你在自己的面试中见过很多这些问题,很多问题你也能正确回答。

多线程、并发及线程的基础问题

能,Java 中可以创建 volatile 类型数组,不过只是一个指向数组的引用,而不是整个数组。我的意思是,如果改变引用指向的数组,将会受到 volatile 的保护,但是如果多个线程同时改变数组的元素,volatile 标示符就不能起到之前的保护作用了。

2、volatile 能使得一个非原子操作变成原子操作吗?

一个典型的例子是在类中有一个 long 类型的成员变量。如果你知道该成员变量会被多个线程访问,如计数器、价格等,你最好是将其设置为 volatile。为什么?因为 Java 中读取 long 类型变量不是原子的,需要分成两步,如果一个线程正在修改该 long 变量的值,另一个线程可能只能看到该值的一半(前 32 位)。但是对一个 volatile 型的 long 或 double

3、volatile 修饰符的有过什么实践?

一种实践是用 volatile 修饰 long 和 double 变量,使其能按原子类型来读写。double 和 long 都是64位宽,因此对这两种类型的读是分为两部分的,第一次读取第一个 32 位,然后再读剩下的 32 位,这个过程不是原子的,但 Java 中 volatile 型的 long 或 double 变量的读写是原子的。volatile 修复符的另一个作用是提供内存屏障(memory barrier),例如在分布式框架中的应用。简单的说,就是当你写一个 volatile 变量之前,Java 内存模型会插入一个写屏障(write barrier),读一个 volatile 变量之前,会插入一个读屏障(read barrier)。意思就是说,在你写一个 volatile 域时,能保证任何线程都能看到你写的值,同时,在写之前,也能保证任何数值的更新对所有线程是可见的,因为内存屏障会将其他所有写的值更新到缓存。

4、volatile 类型变量提供什么保证?

volatile 变量提供顺序和可见性保证,例如,JVM 或者 JIT为了获得更好的性能会对语句重排序,但是 volatile 类型变量即使在没有同步块的情况下赋值也不会与其他语句重排序。 volatile 提供 happens-before 的保证,确保一个线程的修改能对其他线程是可见的。某些情况下,volatile 还能提供原子性,如读 64 位数据类型,像 long 和

5、10 个线程和 2 个线程的同步代码,哪个更容易写?

从写代码的角度来说,两者的复杂度是相同的,因为同步代码与线程数量是相互独立的。但是同步策略的选择依赖于线程的数量,因为越多的线程意味着更大的竞争,所以你需要利用同步技术,如锁分离,这要求更复杂的代码和专业知识。

6、你是如何调用 wait()方法的?使用 if 块还是循环?为什么?

wait() 方法应该在循环调用,因为当线程获取到 CPU 开始执行的时候,其他条件可能还没有满足,所以在处理前,循环检测条件是否满足会更好。下面是一段标准的使用 wait 和 notify 方法的代码:

127、Java 中,受检查异常 和 不受检查异常的区别?

受检查异常编译器在编译期间检查。对于这种异常,方法强制处理或者通过 throws 子句声明。其中一种情况是 Exception 的子类但不是 RuntimeException 的子类。非受检查是 RuntimeException 的子类,在编译阶段不受编译器的检查。

而throws 的作用是作为方法声明和签名的一部分,方法被抛出相应的异常以便调用者能处理。Java 中,任何未处理的受检查异常强制在 throws 子句中声明。

Serializable 接口是一个序列化 Java 类的接口,以便于它们可以在网络上传输或者可以将它们的状态保存在磁盘上,是 JVM 内嵌的默认序列化方式,成本高、脆弱而且不安全。Externalizable 允许你控制整个序列化过程,指定特定的二进制格式,增加安全机制。

DOM 解析器将整个 XML 文档加载到内存来创建一棵 DOM 模型树,这样可以更快的查找节点和修改 XML 结构,而 SAX 解析器是一个基于事件的解析器,不会将整个 XML 文档加载到内存。由于这个原因,DOM 比 SAX 更快,也要求更多的内存,不适合于解析大 XML 文件。

变量和文本。菱形操作符(<>)用于类型推断,不再需要在变量声明的右边申明泛型,因此可以写出可读写更强、更简洁的代码。另一个值得一提的特性是改善异常处理,如允许在同一个 catch 块中捕获多个异常。

Java 8 在 Java 历史上是一个开创新的版本,下面 JDK 8 中 5 个主要的特性: Lambda 表达式,允许像对象一样传递匿名函数 Stream API,充分利用现代多核 CPU,可以写出很简洁的代码 Date 与 Time API,最终,有一个稳定、简单的日期和时间库可供你使用 扩展方法,现在,接口中可以有静态、默认方法。 重复注解,现在你可以将相同的注解在同一类型上使用多次。

虽然两者都是构建工具,都用于创建 Java 应用,但是 Maven 做的事情更多,在基于“约定优于配置”的概念下,提供标准的Java 项目结构,同时能为应用自动管理依赖(应用中所依赖的 JAR 文件),Maven 与 ANT 工具更多的不同之处请参见答案。

这就是所有的面试题,如此之多,是不是?我可以保证,如果你能回答列表中的所有问题,你就可以很轻松的应付任何核心 Java 或者高级 Java 面试。虽然,这里没有涵盖 Servlet、JSP、JSF、JPA,JMS,EJB 及其它 Java EE 技术,也没有包含主流的框架如 Spring MVC,Struts 2.0,Hibernate,也没有包含 SOAP 和 RESTful web service,但是这份列表对做 Java 开发的、准备应聘 Java web 开发职位的人还是同样有用的,因为所有的 Java 面试,开始的问题都是 Java 基础和 JDK API 相关的。如果你认为我这里有任何应该在这份列表中而被我遗漏了的 Java 流行的问题,你可以自由的给我建议。我的目的是从最近的面试中创建一份最新的、最优的 Java 面试问题列表。

更多的java课程学习路线,笔记,面试等架构资料,需要的同学可以私信我(面试)即可免费获取!

}

现在java语言已经成为一大编程语言,java开发工程师越来越有需求,当下很多学生或者是已从业人员选择软件开发这个职业,实现自己的IT梦,下面小编给大家说说怎么使用java语言编程,希望能对你有些帮助。


一般初学者建议使用txt文本来编写第一个Java程序,然后打开dos界面去用命令编译和运行你写的txt程序。这样做能够让初学者更了解java的编译与运行。

如果要开发项目的话,单单用txt文本肯定是不够的。一般学习java都是采用开源的Eclipse工具,这是我们可以官网下载Eclipse工具然后学习者写一些比较复杂一点的程序了。

前面都是一些非常基础的工作。学习java我建议大家找一套学习视频,网上java视频也非常多,没必要每个都去看。找一套好一点的(如黑马程序员网站上的视频),学习一下基本的语法,以及IO流,集合,UI,多线程,正则表达式,数据库操作等。注意:一定要边看视频自己编操作,以加深印象。

以上只是学习完成之后,做一个基本的CS系统应该足够了。接下来你就要考虑自己的选择方向了。也就是说以后是考虑从事Java编程的那一块,可以是基于CS的一些应用;还可以选择B/S方向这就要学习一些J2EE的框架了;还可以选择现在热门的Android方向;还有大数据Hadoop也是基于Java的。当然还有很多,我这里只是列举了几个主流的方向。

学习java基础的时候,就像我们小学学习认字,一点一点积累。等选择好你感谢趣的方向之后,Java就只是成为了一种基本的语言了。你可以用Java来实现你的各种想法。

有一点不可否认的,学习程序语言是非常难的,要出去开发要做研发工程师不是谁都能做的,所以天赋也是占一定比例,至少学习上可以轻松很多;

天才不多,一般人还是占大多数,所以勤奋好学是基本, 要有一颗好学的心,学习程序是要有刻苦精神,才能学习好;

努力未必有用,好的学习方法也是非常重要的,程序员要多看书多练习,首先对于理论要懂,然后学习逻辑思维能力,有基础深入;

程序员不能只是看书学习,更多的还是要上机操作,除了基础还要学习深入的项目,最好能写几个案例作品,也方便以后找工作,以前我们的老师是公司的人员,所以给学生做是给他们最好的锻炼;

java要配套学习比如mvc模式,js脚本,数据结构,ssh等框架,才能真正学好java语言;

能做到独立项目的开发,程序的优化,就是一个资深的程序员了。

在面向对象早期的应用中大量使用了类继承。随着软件工程理论的不断发展,人们开始意识到了继承的众多缺点,开始努力用聚合代替继承。软件工程解决扩展性的重要原则就是抽象描述,直接使用的工具就是接口。接口近年来逐渐成为Java编程方法的核心。另一方面,就应用而言,大部分开发是建立在规范基础之上的,不需要自己建立复杂的继承关系和庞大的类。因此读懂规范和用好规范已经成为应用程序开发人员的首要任务,Java各项规范的主要描述手段就是接口。

Java描述复杂数据结构的主要方式是集合框架。Java没有指针,而是通过强大的集合框架描述数组、对象数组等复杂的数据结构。学好这些数据结构的描述方法对于应用程序编写,特别是涉及到服务器方、3层结构编程至关重要。程序员在这个时候不能再用诸如数据库结果集之类的结构描述数据了。由于很多语言没有这么强大的集合框架体系,很多初学者不知所措,更不知道拿来做什么用,因此应该引起足够的重视。

三、掌握静态方法和属性

静态方法和属性用于描述某一类对象群体的特征,而不是单个对象的特征。Java中大量应用了静态方法和属性,这是一个通常的技巧。但是这种技巧在很多语言中不被频繁地使用。理解静态方法和属性对于理解类与对象的关系是十分有帮助的,在大量的Java规范中,静态方法和属性被频繁使用。因此学习者应该理解静态方法和属性。Java在方法和属性的调用上是一致的,区别只表现在声明的时候,这和c++是不同的。

四、多线程需要理解机理

很多Java程序员热衷于多线程程序编写,认为是对逻辑能力的挑战。其实在大量应用中根本就不需要编写多线程程序,或者说大多数编写应用程序的程序员不会去写多线程程序。这是因为多线程机制都内置到基础平台当中了。程序员应该了解的是多线程原理和多线程安全,这对于今后准确地把握程序是至关重要的。例如JSP中编写到不同的位置对于多个用户环境的安全影响完全不同,又如著名的Super Servlet是每一个访问作为一个进程,但是每一个页面是一个线程,和Servlet正好相反,对程序的性能和安全的影响有天壤之别。

第一:我们常常都说要先预习,所以这是肯定的,如果你接收能力非常强的话就可以不预习。如果只是一般最好提前预习一下,有什么不懂的做记号,在老师讲的时候就会更清楚一些。这是很关键的。可以帮你提高很多的。

第二:在自己学习或者跟着老师学习完以后。一定要理解知道是怎么回事,在自己完成一些习题,跟着老师或者自己看的例子。不懂一定要问,一定要问和与自己的伙伴交流,一起讨论这是你学习成功的一大法宝。只有通过自己的思考写出来的代码才是自己的,你死记硬背下来的代码肯定不是你的。学程序一定要讨论。不管是未来你要从事产品经理还是做项目,讨论是程序员必须具备的东西。

第三:做练习时最好是独立完成。不会的才采用第二点。动手操作的过程中将自己不会的东西记录下来。然后针对性的找人指导。如果你还是一个人在奋战与程序界,如果你想真正的学好,精通JAVA,可以跟着经验丰富的师资团队、JAVA课程研发者一起学习和交流。每天也能够一起学习更多新的java项目实战。

第四:多思考,多学习,多问,多做一些逻辑方面的题。因为学程序逻辑是最重要的,好不好和学好程序没有任何关系,所以不用太在意这个,努力去学习去做,选对方向,找对人帮助,你就能够学好。

第五:开始学习时就从最简单的程序入手,不要急,比先写一引起加减法,比较这些题。有助于你的理解。

以上是整理的怎么使用java语言编程全部内容,更多精选文章请访问专栏。

}

编写一个小学生四则运算的练习程序要求:1.可以进行难度选择。一级难度用一位数进行计算,二级难度用二位数进行计算,三级难度用三位数进行计算。2.可以选择运算类型,包括加、减、乘... 编写一个小学生四则运算的练习程序要求:
1.可以进行难度选择。一级难度用一位数进行计算,二级难度用二位数进行计算,三级难度用三位数进行计算。
2.可以选择运算类型,包括加、减、乘、除。

我就只举了加法的例子,其他运算的写法都是类似的,你照葫芦画瓢即可

下载百度知道APP,抢鲜体验

使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。

}

我要回帖

更多关于 用java编写计算器程序 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信