「java语言then」JAVA语言不区分大小写
今天给各位分享java语言then的知识,其中也会对JAVA语言不区分大小写进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、用java语言编写:if 3+1=24,5+2=37,7+3=410,8+5=313;then,9+4=?
- 2、JAVA题求助
- 3、java加减乘除计算器界面编程?
- 4、java语言与C++相比,有哪些优点?
- 5、java 存储过程中if x0then什么意思
- 6、JAVA初学问题!
用java语言编写:if 3+1=24,5+2=37,7+3=410,8+5=313;then,9+4=?
下面的可以:
import java.util.*;
public class Test1 {
public static void calculateNum(){
System.out.println("请输入两个整数");
Scanner scan=new Scanner(System.in);
int a=scan.nextInt();
int b=scan.nextInt();
if(a9||a0||b9||b0){
System.out.println("输入有误请重新输入:");
a=scan.nextInt();
b=scan.nextInt();
}
//如果a小于b,交换
if(ab){
a=a+b;
b=a-b;
a=a-b;
}
System.out.println("结果是:"+(new StringBuffer().append(a-b).append(a+b)));
}
public static void main(String[] args){
calculateNum();
}
}
JAVA题求助
4. 以下表述错误的是(C)
C. 数组的下标的数据类型一般为float
5. 下面哪个说法正确(C)
C. 如果某源文件包含package语句,则该语句必须是第一个非空、非注释行
6. 给定下面的代码段,哪些选项是对setVar(B)方法的重载?() 1. public class MethodOver { 2. public void setVar (int a, int b, float c) { 3. } 4. }
B. protected void setVar (int a, int b, float c) { }
7. 下面关于继承的叙述正确的有 (A)
A. 在java中只允许单一继承
8. 下面的哪些程序片断可能导致错误?
D. String s = “home directory”; String t = s – “directory”;
9. Java中下列关于final关键字的说法正确的有
A. 如果修饰变量,则一旦赋了值,就等同一个常量
C. 如果修饰方法,则该方法不能在子类中被覆盖
10. 给定下面的代码段,哪些选项是对setVar()方法的重载?() 1. public class MethodOver { 2. public void setVar (int a, int b, float c) { 3. } 4. }
B. protected void setVar (int a, int b, float c) { }
判断:
对1. 整型一般都以十进制的形式表示,也可以写成八进制或十六进制
对2. 接口是由常量和抽象方法组成的特殊类
错3. Java的源代码中定义几个类,编译结果就生成几个以.class为后缀的字节码文件
错4. Java中的数据类型分为两大类:一类是基本类型;另一类是引用类型
对5. System类不能实例化,即不能创建System类的对象
对6. 程序员可以不必释放已创建的对象,因为Java有垃圾回收机制,内存回收程序可在指定的时间释放内存对象
错7. 在Java的方法中定义一个常量要用const关键字
对8. Java提供一个特别的三元运算符经常用于取代if-then-else 语句
错9. 一个程序里可以有多个父类,也可以有多个主类
错10. Java语言的源程序代码是由一个或多个编译单元组成,每个编译单元可以有一个以上的类或接口是公共的
对11. break语句可以用在switch语句、while循环、do……while循环和for循环结构中
对12. 各种类型数据混合运算中,不同类型的数据先转化为同一类型,然后进行运算
对13. Java中的String类的对象既可以是字符串常量,也可以是字符串变量
错14. 在程序中可对用final修饰的变量的值进行更改
错15. java中一个子类可以有多个父类,并可以为一个(父)类定义多个子类
对16. 整型一共包含四种类型
错17. 在Java中,异常(Exception)是指程序在编译和运行进出现的错误
对18. 每个变量都有自己的作用范围,也就是作用域,变量仅在它的作用域内有效
对19. 方法覆盖与域隐藏一样,父类的同名方法在子类中仍占有自己独立的内存空间
对20. 当运行javac命令对一个java源程序进行编译时,必须写出该源程序文件的完整文件名,包括扩展名.java
java加减乘除计算器界面编程?
来源:Code Wizards HQ
智能观 编译
孩子想学编码的话,有很多方法可以展开学习。可以让他们学着构建视频游戏、创建动画、开发移动应用程序和搭建网站。不管孩子喜欢哪种形式,都有大量的编码书供他们快速学起来!
但是,怎么才能找到一本好的儿童编码书呢?
没经验的孩子的编码书,应该涵盖基本内容。
翻翻适合初学者的书,看看里面是否有加减乘除基本数学运算,仔细看看带变量、if / then语句、循环和函数的章节。你不需要理解这些概念是怎么工作的,只要看看书的标题里有没有提这些,如果没有,这本书不适合新手。
许多好的儿童编码书只用一种语言。
好的儿童编码书只侧重一种语言,可以是Scratch、Javascript或Python。如果你不知道孩子应该学哪种语言,可以买两三种不同语言的书。
好的儿童编码书有很多照片和插图。
对于那些第一次接触代码的孩子来说,视觉吸引力很重要。好的儿童编码书每一页上都有丰富多彩的插图,充分吸引孩子的关注。
好的儿童编码书提供有用的、可转移的知识。
学一门特定的语言并不像理解基本的编码概念那么重要。写代码的人可以从任何语言开始学起,然后轻松地转入其他语言。有些语言不太适合孩子,如C和C++,很多成年人都学不好。
因此,根据以上几项挑选原则,我们推出一份教孩子编码的书籍,涵盖块编程、编程基础语言、Web开发、移动开发、游戏编程、机器人和物联网等几大类,并标出适合孩子学习的年龄段,可以说是史上最全的儿童编码书籍汇总了!如果你正在苦恼怎么给孩子选书,快收下这份开学礼物吧~
块编程类
学龄前的儿童也可以学习用块编程语言编码。块语言是高度图形化的,易于学习。Scratch是为孩子们设计的一种流行的块语言。
1. Coding with Scratch Workbook
(用Scratch编码)
作者:DK出版公司
适合年龄: 6-9岁
在短短40页的篇幅里,读者就能学会用Scratch做任何事,从解决简单的数学问题到构建、分享游戏。每章都包含指导孩子们完成简单编码项目的分步说明。
2. Learn to Program with Scratch:A Visual Introduction to Programming with Games, Art, Science, and Math
(学会用Scratch编程:游戏、艺术、科学和数学编程的可视化介绍)
作者:Majed Marji
适合年龄: 10岁及以上
这本将近300页的书涵盖了初学者需要了解的关于Scratch语言的所有内容。读完这本书后,孩子们将会牢固掌握Scratch和适用于任何语言的编程思想。
3. Scratch for Kids For Dummies
(儿童Scratch傻瓜书)
作者:Derek Breen
适合年龄: 10-14岁
读者将在构建16个项目中,学习变量、if / then语句、循环和基本编程逻辑。
4. The Official ScratchJr Book: Help Your Kids Learn to Code
(中文版:动手玩转ScratchJr编程)
作者:Marina Umaschi Bers 、Mitchel Resnick
适合年龄: 5-9岁
对于那些还太小不能学习Scratch的孩子来说,Scratchr Jr是一种更简单的块编程语言。
5. MicroWorlds EX Books for Kids
(儿童MicroWorlds EX工具书)
作者:Steve Robson
适合年龄: 5-9岁
借助MicroWorlds EX工具,孩子们通过图形和文本来学习。他们没有被一种纯图形语言和“固定”代码所束缚,也不必100 %处理文本。
链接:
6. Coding for Kids For Dummies
(儿童编码傻瓜书)
作者:Camille McCue
适合年龄: 10-14岁
书中指导孩子完成15个项目,包括绘画、动画和游戏,还带领孩子们完成了创建计算机程序的过程,从构思到构建、测试。
编程基础
尽管C++、Java和Python等语言之间存在着巨大的差异,但理解编码基础知识,孩子可以相对轻松地从一种语言迁移到另一种语言。
Python
7. Python for Kids
(适合孩子的Python学习)
作者:Jason R. Briggs
适合年龄: 10岁以上
这本书对孩子来说既全面又容易理解。内容适合小学生,但也适合许多成人学习者看。
链接:
8. Coding Projects in Python
(Python编码项目)
作者:DK出版公司
适合年龄: 9-12岁
不管孩子已经学了Scratch之类的块语言,还是没有做过任何编程,都可以在这本书里找到需要的一切来构建软件。书后面的词汇和参考部分对孩子来说很有帮助。
链接:
9. Python in Easy Steps
(学习Python的简单步骤)
作者:Mike McGrath
适合年龄:中学及以上
本书不是专门为孩子写的,但它内容组织得很好,中学生,尤其是有一些Scratch或其他语言经验的中学生,可以很容易地理解它。读完本书,学生可以用Python构建简单的网页和编写桌面应用程序。
10. Hello World! Computer Programming for Kids and Other Beginners
(中文版:父与子的编程之旅:与小卡特一起学Python)
作者:Warren Sande
适合年龄: 12岁以上
学习编码时,大家编写的第一个程序就是在屏幕上显示“Hello World”。本书沿袭了这一传统,并为新手提供构建任何类型有用软件所需的必要技能。
链接:
Java
Java是一种非常流行的语言,用于所有操作系统和Android设备。这也是高中计算机科学课程中最常见的语言。
11. Java Programming for Kids: Learn Java Step by Step and Build Your Own Interactive Calculator for Fun!
(面向儿童的Java编程:逐步学习Java,并构建自己的交互式计算器)
作者:R. Chandler Thompson
适合年龄: 13-17岁
这本书既有趣又简单。青少年读者可以通过Java编程语言,构建交互式计算器应用程序。
12. Java for Kids (and grown ups): Learn to Code and Create Your Own Projects with Java 8
(面向儿童和成年人的Java:学习用Java 8编写代码并创建自己的项目)
作者:Nadia Ameziane Garcia
适合年龄: 10-12岁
这本书只介绍学习过程中每一步所需要的东西。每一章都建立在前文介绍的基础上,孩子们可以在短时间内学会Java的基础知识。
C++
这不是最容易学的语言,但精通C++的人会更了解计算机是如何工作的。
13. C++ Progamming In Easy Steps
(C++编程的简单步骤)
作者:Mike McGrath
适合年龄:中学及以上
作者通过一系列简单的课程介绍了C++,并提供大量专家提示,以帮助读者获得最佳编程实践。这本书让孩子们短时间内学会C++基础知识,并可能沿用很多年。
14. C++ for Kids
(适合儿童的C++语言)
作者:Blaise Vanden-Heuvel、John C Vanden-Heuvel Sr.
适合年龄: 7-9岁
这本简短多彩的书向孩子们展示了C++编程是如何工作的。示例程序各色各样,这样孩子们就能理解程序的各个部分实际上是做什么的。
Web开发类
HTML和CSS
网页用HTML构建,用CSS设计风格。这些不是真正的编程语言,但它们让孩子接触文本编辑器、构思想法,对日后探索Javascript或Python之类的语言很有用。
15. Build Your Own Website, a Comic Guide to HTML, CSS and WordPress
(建立你自己的网站,HTML、CSS和WordPress的漫画指南)
作者:Nate Cooper、Kim Gee
适合年龄:中学及以上
在这本漫画风格的网站搭建指南中,孩子们学习HTML标记语言,熟悉控制网页样式的CSS语言,了解内容管理系统WordPress。
链接:
16. CoderDojo Nano: Building a Website: Create with Code
(用代码搭建网站)
作者:Clyde Hatter、CoderDojo
适合年龄: 8-12岁
这本书只有96页,引导孩子们完成建立网站的整个过程。孩子可以建立一个和书中例子完全一样的网站,也可以试着建自己喜欢的网站。
17. Creating a Website: Design and Build Your First Site
(创建网站:设计和建立你的第一个网站)
作者:Greg Rickaby
适合年龄: 7-11岁
这本书为孩子设计网页提供指南,从规划网站的结构到添加使网站与众不同的细节。同时提供了软件工程师在现实世界中使用的许多技巧和操作过程。
JavaScript
许多程序员认为JavaScript是互联网的未来,学习这种语言可以建立互动性强的、有用的网站。
18. Computer Coding with Javascript
(使用Javascript进行计算机编码)
作者:DK出版公司
适合年龄: 8-12岁
从HTML、CSS转到JavaScript可能容易晕,因为JavaScript更加复杂、强大。但这本书内容比较简单,孩子们可以顺利过渡。
19. Javascript for Kids: A Playful Introduction to Programming
(面向儿童的JavaScript:有趣的编程入门)
作者:Nick Morgan
适合年龄: 10岁以上
本书从数组、变量类型讨论到游戏编程。无论孩子想制作游戏、制作动画还是使用虚拟现实,JavaScript都能让他们把想法变成真实的程序。
链接:
20. Javascript for Kids For Dummies
(面向儿童的JavaScript傻瓜书)
作者:Chris Minnick、Eva Holland
适合年龄: 10-13岁
如果你有兴趣读编程书,帮孩子学习编码,试试这本。这本书远远超出基本内容,方便读者构建任何能想到的Web项目。
链接:
21. Get Coding! Learn HTML, CSS, Javascript Build a Website, App Game
(编码!学习HTML,CSS,Javascript ;建立一个网站,应用程序和游戏)
作者:Young Rewired State
适合年龄: 9-12岁
这本书中的课程是以任务形式呈现的,教导孩子构建网站、应用程序和游戏。他们还会了解不同类型的编程语言以及每种语言的优点。
移动开发
安卓应用
App Inventor是一个完全在线开发的Android编程环境,具有类似Scratch的块编程界面。它简化了移动开发过程,是向孩子们介绍Android编程的理想方式。
22. Building a Mobile App
(构建移动应用程序)
作者:Guthals
适合年龄: 7-11岁
读这本书的孩子不仅学习编码,还学习规划、开发自己的定制应用。本书提供了专业人员使用的应用程序开发的内容,包括原型制作和创建应用程序框架,对热爱移动开发的孩子来说特别有价值。
23. Hello App Inventor
(你好,App Inventor)
作者:Paula Beer、Carl Simmons
适合年龄: 9岁以上
使用App Inventor构建的应用可以利用许多智能手机功能,如运动传感器、GPS和相机。本书通过30个示例项目向读者展示了如何利用这些功能。
链接:
iOS应用
为了构建苹果产品应用程序,开发人员使用了一种叫Swift的语言。创建这种语言时,软件工程师想让没经验的人容易学习。对于从未编程的孩子来说,这是一个很好的选择。
24. Coding iPhone Apps for Kids
(适合孩子的iPhone应用程序编码)
作者:Gloria Winquist、Matt McCarthy
适合年龄: 10岁以上
本书介绍了Swift语言和编码基础,并让孩子们构建两个真正的应用程序:一个生日跟踪器和一个滑板游戏。
25. Hello Swift
(你好,Swift)
作者: Tanmay Bakshi、Lynn Beighley
适合年龄: 9岁以上
Tanmay Bakshi可以说是我们的老朋友了,智能观从去年开始就报道他的故事。他4岁编码,9岁就发布第一个应用程序。通过他的书,读者也会构建能在iOS应用商店上发布的应用程序。
如果还有人对他不了解,可以看看我们往期的报道。附传送门:
13岁天才少年在IBM掀起一场人工智能风暴
IBM少年工程师说:人工智能的下一个前沿是心理健康
游戏编程
Scratch游戏编程
26. Coding Games in Scratch
(用Scratch编码游戏)
作者:Jon Woodcock
适合年龄: 8-12岁
这本书让孩子在浏览器中制作自己的游戏。
27. Code Your Own Games: 20 Games to Create with Scratch
(编码自己的游戏: 用Scratch创建20个游戏)
作者: Max Wainewright
适合年龄: 6-11岁
这本书分5个层次递进,20个游戏项目让孩子们熟悉编码和游戏开发的原理。每款游戏都锻炼了孩子们的能力,比如控制玩家互动、在屏幕上设置对象动画、添加声音。
28. Star Wars Coding Projects
(星球大战编码项目)
作者:Jon Woodcock、Kiki Prottsman
适合年龄: 8-12岁
喜欢《星球大战》的孩子可以通过C3PO、R2D2和其他角色学习编码。读者不需要任何编程经验就可以看这本书。
Python游戏编程
29. Mission Python
(Python任务)
作者:Sean McManus
适合年龄: 10岁以上
虽然对于10岁的孩子来说,这本书有点简单了,但它探索了Python游戏编程的深度。书从Python Essentials插件开始,逐渐深入更高级的概念,如音频文件处理和3D图形。
30. Invent Your Own Computer Games with Python
(中文版:Python编程快速上手——让繁琐工作自动化)
作者:Al Sweigart
适合年龄: 10岁以上
这本书通过对Hangman和Tic-Tac-Toe等几款流行游戏进行详细解释来教授编程。
链接:
我的世界
31. Learn to Program with Minecraft
(用我的世界学项目)
作者:Craig Richardson
适合年龄: 10岁以上
《我的世界》是一款受欢迎的3D游戏,孩子们可以在虚拟世界中探索、建造城堡等。本书介绍了如何使用Python编程扩展《我的世界》。
链接:
32. Minecraft Modding for Kids For Dummies
(用我的世界教孩子建模的傻瓜书)
作者:Guthals、Stephen Foster、 Lindsey Handley
适合年龄: 10-13岁
通过9个JavaScript项目,孩子们从《我的世界》里的“玩家”化身为 “建模师”。读者要有玩《我的世界》的经验,但不需要以前学过编码。
机器人和物联网
Arduino
Arduino是一台微型计算机,可以用传感器、LED灯和马达等小硬件控制各种电路。学习Arduino不仅仅意味着学习编码;它包括设计和建造真实世界的项目。
33. Adventures in Arduino
(Arduino历险记)
作者:Becky Stewart
适合年龄: 11-15岁
喜欢机械和工程的孩子会喜欢本书中的项目。孩子们了解Arduino,然后上手一些简单的项目,比如让LED灯亮起来。
链接:
34. Sylvia’s Super-Awesome Project Book: Super-Simple Arduino
(Sylvia的超棒项目书:超级简单的Arduino)
作者:Sylvia "Super-Awesome" Todd
适合年龄: 8-12岁
Sylvia介绍了如何建立Arduino项目来控制灯光和制作音乐等。这些项目不是复制代码,罗列事物,而是对事物如何工作以及为什么工作进行了详细解释。
树莓派
你可以把树莓派(Raspberry Pi)当成Arduino的升级版。两台计算机的尺寸差不多,但是树莓派的操作系统更接近笔记本电脑。
35. Raspberry Pi Projects Workbook
(树莓派项目工作簿)
作者:DK出版公司
适合年龄: 7-12岁
孩子们可要通过这本书制作游戏,制作音乐,制作动画,学习Scratch、Python和Raspberry Pi。
链接:
36. Adventures in Raspberry Pi
(树莓派历险记)
作者:Carrie Anne Philbin
适合年龄: 11-15岁
本书介绍的9个项目让孩子们快速上手树莓派,涵盖的概念编程有基础、游戏编程、图形创建等。
链接:
乐高机器人
乐高生产了几个套件,包括机器人滚动、旋转甚至攀爬的所有必要部件。他们也有自己的语言,孩子们用这些语言来创作。
37. The Art of Lego Mindstorms EV3 Programming
(乐高头脑风暴EV3编程的艺术)
作者:Terry Griffin
适合年龄: 10岁以上
本书教孩子们在EV3头脑风暴编程环境中,控制自己的机器人。他们学习如何建造乐高机器人并用代码控制它。
38. Building Robots with Lego Mindstorms
(用乐高头脑风暴套件制造机器人)
作者: Mario Ferrari、Giulio Ferrari、Ralph Hempel
适合年龄: 10岁以上
在本书中,孩子们使用电子电路和传感器,以及乐高头脑风暴套件,学习制造机器人。书中有大量关于齿轮、马达、气动和其他工程概念的信息,对于严肃的机器人爱好者来说很重要。
适合学龄前儿童的编码书
为低龄儿童设计的编码书,帮助儿童建立对计算机程序的模式、颜色和其他基本要素的认知。
39. Baby Loves Coding
(宝贝喜欢编码)
作者:Ruth Spiro
适合年龄:学前及以上
因为是给很小的孩子看的,书中没有提供任何明确的编码指导。它介绍了解决问题的方法,以及优秀程序员需要有的想法。
40. Learn to code: Robot Train’s Surprise Birthday Party (Volume 1)
(学会编码:机器人火车的惊喜生日聚会I)
作者:by Jen Chiou
适合年龄:学前及以上
孩子在本书中了解编码的先决条件,如决策和逻辑。通过触摸书上像按钮的图片,孩子们帮助一辆虚构的机器人火车向生日派对运送用品,从而了解编码逻辑是如何工作的。
41. HTML for Babies
(适合婴儿的超文本标记语言)
作者:Sterling Children's
适合年龄: 3-5岁
HTML是一种简单的标记语言,不需要复杂的逻辑,3-5岁的孩子可以通过本书,学会识别与网络编程相关的符号和颜色。
42. JavaScript for Babies
(适合婴儿的JavaScript语言)
作者:Sterling Children's
适合年龄: 3-5岁
这本书让孩子们了解JavaScript的一些基本结构和数据类型。
有趣的青少年编码书
让青少年读一本编程类的书可能很困难,所以以下书籍通过游戏开发和其他有趣的项目,帮助青少年学习。
43. Computer Programming for Teens
(适合青少年的电脑编程)
作者:Mary E. Farrell
适合年龄:青少年
没有编码经验的孩子和那些不知道学什么语言的孩子,是本书的目标受众。书中有一些C++、Python和Web编程语言的例子,孩子们将会找到最适合自己的编码项目。
44. Game Programming for Teens
(适合青少年的游戏编程)
作者:Maneesh Sethi
适合年龄:青少年
本书介绍了一种名为BlitzMax的游戏专用语言,它使孩子们能在所有平台( Windows、Mac、Linux )构建游戏。
链接:
适合女孩的编码书,STEM入门
女孩可以通过编程提前接触STEM。构建应用程序、开发游戏、编程机器人——这些活动为女孩们进入STEM领域奠定了坚实的基础。
45. Women Who Launched the Computer Age
(开创计算机时代的女性)
作者:Laurie Calkhoven
适合年龄: 6-8岁
本书讲述了6位在二战期间为美国军方从事秘密项目的天才女性。
46. Grace Hopper: Queen of Computer Code
(格雷斯·霍普:计算机代码女王)
作者:Laurie Wallmark
适合年龄: 5岁以上
格雷斯·霍普是一位有创造力的计算机科学家和数学家,也是一位授勋的海军军官和总统自由勋章获得者。孩子们会在她精彩的生活和成就中找到鼓励。
47. Girls Who Code: Learn to Code and Change the World
(学会编码并改变世界)
作者:Reshma Saujani
适合年龄: 10岁以上
Reshma Saujani是女孩编码组织“Girls Who Code”的创始人,她在本书中介绍了电脑和编码,以及在科技领域工作的女性的轶事。
培养儿童编码兴趣的通用读物
编码的孩子受益于问题解决、数学和决策能力。一些优秀的儿童计算机科学通用读物侧重于培养孩子对编码的兴趣。
48. Lauren Ipsum: A Story About Computer Science and Other Improbable Things
(劳伦·益普森:关于计算机科学和其他不可思议的故事)
作者:Carlos Bueno
适合年龄: 10岁以上
一个年轻的女孩需要找到回家的路,但要做到这一点,必须解决一个个难题……读者不知不觉中,接触到了编程逻辑、解决问题的技巧和其他计算机科学思想。
49. Once Upon an Algorithm
(从前有个算法)
作者:Martin Erwig
适合年龄:中学及以上
算法是解决问题的一组指令或过程。你可能觉得孩子们不太想看这个。但作者Martin Erwig通过类比、童话和电影引用,使算法变得有趣。
原文链接:
—完—
扩展阅读:
适合孩子学习编码的7款工具套件
干货|| 如何在线学习编码?看看这 11个优秀的编程资源网站
教孩子编码就够了吗?不!学校该培养的是计算思维
每个人都应该学习编码吗?吴恩达这样回答……
如果学生编程能力胜于老师,编码课该怎么教?
亲爱的朋友:
经常有读者咨询,有没有适合孩子的编码书推荐?
我们之前推荐过一些,但苦于无中文版,很多读者找不到购买方式。
今天的推荐,内容比较全面,我们可爱的小编找遍了资源,将能找到电子版都找到,一并送给你。
其余没有资源的,网上也可以买到。
如果本文对你有帮助,别忘了转发给你身边的朋友,让它帮助更多人。
祝安!
PS:为了方便与读者探讨,特意注册了一个专用号。如果你也是我们的铁杆读者,想探讨交流,可以加微信:znglmym。
智能观 灵米
2018-9-12 于北京中关村
想知道AI加教育领域有哪些最新研究成果?
想要AI领域更多的干货?
想了解更多专家的“智能观”?
请前往:www.智能观.com。
想交流沟通,请加负责人微信:znglmym
声明:
编译文章旨在帮助读者了解行业新思想、新观点及新动态,为原作者观点,不代表智能观观点。
转载智能观原创文章,请联系
智能观小艾(微信号:zng2017618)!
关于我们
我们关注AI+教育。致力于提供高附加值的知识,以帮助每一位老师和我们的读者不断学习并提高技能。
我们努力让发表的每一篇文章都具有最佳质量,以满足读者的需求。
java语言与C++相比,有哪些优点?
JAVA和C++都是面向对象语言。也就是说,它们都能够实现面向对象思想(封装,继乘,多态)。而由于c++为了照顾大量的C语言使用者,而兼容了C,使得自身仅仅成为了带类的C语言,多多少少影响了其面向对象的彻底性!JAVA则是完全的面向对象语言,它句法更清晰,规模更小,更易学。它是在对多种程序设计语言进行了深入细致研究的基础上,摒弃了其他语言的不足之处,从根本上解决了c++的固有缺陷。
Java和c++的相似之处多于不同之处,但两种语言有几处主要的不同使得Java更容易学习,并且编程环境更为简单。
我在这里不能完全列出不同之处,仅列出比较显著的区别:
1.指针
JAVA语言让编程者无法找到指针来直接访问内存无指针,并且增添了自动的内存管理功能,从而有效地防止了c/c++语言中指针操作失误,如野指针所造成的系统崩溃。但也不是说JAVA没有指针,虚拟机内部还是使用了指针,只是外人不得使用而已。这有利于Java程序的安全。
2.多重继承
c++支持多重继承,这是c++的一个特征,它允许多父类派生一个类。尽管多重继承功能很强,但使用复杂,而且会引起许多麻烦,编译程序实现它也很不容易。Java不支持多重继承,但允许一个类继承多个接口(extends+implement),实现了c++多重继承的功能,又避免了c++中的多重继承实现方式带来的诸多不便。
3.数据类型及类
Java是完全面向对象的语言,所有函数和变量都必须是类的一部分。除了基本数据类型之外,其余的都作为类对象,包括数组。对象将数据和方法结合起来,把它们封装在类中,这样每个对象都可实现自己的特点和行为。而c++允许将函数和变量定义为全局的。此外,Java中取消了c/c++中的结构和联合,消除了不必要的麻烦。
4.自动内存管理
Java程序中所有的对象都是用new操作符建立在内存堆栈上,这个操作符类似于c++的new操作符。下面的语句由一个建立了一个类Read的对象,然后调用该对象的work方法:
Read r=new Read();
r.work();
语句Read r=new Read();在堆栈结构上建立了一个Read的实例。Java自动进行无用内存回收操作,不需要程序员进行删除。而c十十中必须由程序员释放内存资源,增加了程序设计者的负担。Java中当一个对象不被再用到时,无用内存回收器将给它加上标签以示删除。JAVA里无用内存回收程序是以线程方式在后台运行的,利用空闲时间工作。
5.操作符重载
Java不支持操作符重载。操作符重载被认为是c十十的突出特征,在Java中虽然类大体上可以实现这样的功能,但操作符重载的方便性仍然丢失了不少。Java语言不支持操作符重载是为了保持Java语言尽可能简单。
6.预处理功能
Java不支持预处理功能。c/c十十在编译过程中都有一个预编泽阶段,即众所周知的预处理器。预处理器为开发人员提供了方便,但增加了编译的复杂性。JAVA虚拟机没有预处理器,但它提供的引入语句(import)与c十十预处理器的功能类似。
7. Java不支持缺省函数参数,而c十十支持
在c中,代码组织在函数中,函数可以访问程序的全局变量。c十十增加了类,提供了类算法,该算法是与类相连的函数,c十十类方法与Java类方法十分相似,然而,由于c十十仍然支持c,所以不能阻止c十十开发人员使用函数,结果函数和方法混合使用使得程序比较混乱。
Java没有函数,作为一个比c十十更纯的面向对象的语言,Java强迫开发人员把所有例行程序包括在类中,事实上,用方法实现例行程序可激励开发人员更好地组织编码。
8 字符串
c和c十十不支持字符串变量,在c和c十十程序中使用Null终止符代表字符串的结束,在Java中字符串是用类对象(string和stringBuffer)来实现的,这些类对象是Java语言的核心,用类对象实现字符串有以下几个优点:
(1)在整个系统中建立字符串和访问字符串元素的方法是一致的;
(2)J3阳字符串类是作为Java语言的一部分定义的,而不是作为外加的延伸部分;
(3)Java字符串执行运行时检空,可帮助排除一些运行时发生的错误;
(4)可对字符串用“十”进行连接操作。
9“goto语句
“可怕”的goto语句是c和c++的“遗物”,它是该语言技术上的合法部分,引用goto语句引起了程序结构的混乱,不易理解,goto语句子要用于无条件转移子程序和多结构分支技术。鉴于以广理由,Java不提供goto语句,它虽然指定goto作为关键字,但不支持它的使用,使程序简洁易读。
l0.类型转换
在c和c十十中有时出现数据类型的隐含转换,这就涉及了自动强制类型转换问题。例如,在c十十中可将一浮点值赋予整型变量,并去掉其尾数。Java不支持c十十中的自动强制类型转换,如果需要,必须由程序显式进行强制类型转换。
11.异常
JAVA中的异常机制用于捕获例外事件,增强系统容错能力
try{//可能产生例外的代码
}catch(exceptionType name){
//处理
}
其中exceptionType表示异常类型。而C++则没有如此方便的机制。
附:
Java群体每天都在扩大,它既包括一些世界最大的ISV,也包括公司CIO、信息技术人员、系统分析人员、C/S开发人员、编程人员、多媒体设计者、市场行销人员、教育工作者、经理、影视生产者甚至业余爱好者等广泛的用户。从传统上看,这样一些人在一起有效地工作是不多见的。当我们谈到开放系统时,我们往往是就已发表的API及规格,或者源码的可得性,或者硬件、联网及操作系统而言的,没有一个人是从人的开放意义上来谈的。Java完成了开放系统的闭合链。它开发了人力资源,而反过来又开辟了共同工作的道路。
一谈到Java,人们马上会想起一种类似于C++的、适用于分布环境的面向对象编程语言,想到这种语言的简单、稳定、安全、与体系结构无关、可移植、可解释、高性能、多线程和动态性等特征。这些都是Java作为一种程序设计语言的主要特征。
Java是由Sun公司的一个技术小组研制出来的。在实现Java语言的过程中,Sun小组的技术人员很快就意识到:C++无法成为一种完全面向对象的、网络化的开发语言。C++是通过给原先的C语言增加面向对象功能而开发出来的,因此,它存在着先天不足。这主要体现在C++种类繁多,功能大量冗余,同时又没有任何一种C++编译器能够支持它的全部功能。鉴于这种情况,Sun公司的技术人员决定不扩充C++,而开发一种全新的计算机语言(Java的前身Oak)。但是,C++已经成了大多数编程人员所熟练掌握的语言,Java的设计显然不能无视这个现实。如果Java和C++之间的差别过大,那么程序员们在学会这种语言的过程中无疑要花费大量的时间和精力。因此,Java保留了尽可能多的C++风格。
Java自诞生起,为网络用户创造了无数客户端的小应用程序,由于这类应用程序效果良好、数量巨大,以至于许多用户想到Java编程语言时,会在脑海中出现一个不完全正确的印象-Java是用来编写小的客户端程序的。其实,随着技术的进步,Java语言正在逐步改变自己执行效率较低、无法担任企业关键计算任务的形象,不断向计算技术的核心地带前进。今天的Java技术正沿着网络渗入各个应用领域。
企业计算:企业计算是Java最重要的技术主题。Sun公司已经公布了企业JavaBean(EJB,Enterprise JavaBean)的规格,随后众多公司开始开发企业应用领域的Java技术。IBM公司也已经为Windows NT开发了IBM HPCJ(High Performance Compiler for Java)12.0版,同时研制了IBM JDK(JavaDevelopment Kit)for Windows NT,Novell公司也在宣布了一个新的服务器端的企业Java平台,而Sun公司也在积极地升级自己的JDK系统,这个形势表明,Java正在稳步走向企业高端计算。对于Java来说,与其它编程语言争夺企业计算主力编程工具的优势在于:其一,Java在进行面向对象的编程工作时,比其它的编程语言如C++更加简单,因此保证了编程的高效率,减少了编程投入;其二,Java虚拟机技术所提供的"一次编程,到处使用"的跨平台能力非常适合网络环境,这给Java在网络服务器端的发展提供了便利条件;其三,Java拥有强大的提供商和支持者队伍,该队伍包括IBM、Oracle、Novell、Sybase和Netscape等公司。
提速运行:许多企业的应用开发人员非常喜爱Java的语言特性,但是在开发重要系统时,语言特性和执行效率之间的抉择往往令人伤透脑筋。在关键计算中,用户可能并不在乎数据如何压缩或者运行的延迟关系如何设置,但是对程序的运行速度却非常重视,这使厂商将Java的编译策略开发放在了首位。现在的Java语言,其执行方式已经不仅仅是解释执行方式了,即时编译器(JITC、just-in-time compiler)技术和原型编译技术已经被许多厂家采用,包括Sun、IBM、Oracle以及Netscape等公司在内的技术提供商正在利用这些技术逐步提高Java的执行速度,其中IBM公司早已将Java虚拟机(JVM,JavaVirtual Machine)、操作系统和硬件的特性有机的结合在一起,非常有效地提高了Java的执行效率。
嵌入计算:嵌入式Java是一个潜力巨大的应用技术,该技术充分发挥了Java小巧灵活的特点。以HP公司为例,该公司以自己的方式制造编译工具和Java虚拟机,其目的是将Java嵌入各种设备,如打印机、医学监视器和自动提款机等。嵌入设备依靠一个实时操作系统来处理某一个实时生效的事件,Java被嵌入这些设备后,通过实时扩展(real-time extension)开始发挥作用,使设备具备了一定的智能性,增强了嵌入设备的可管理性和可用性,大大提高了设备的工作效率。各厂商对这一潜力巨大的市场都非常重视,目前该市场缺乏的是一个标准,如果存在标准的话,相信很快就会有大量使用嵌入Java技术的设备上市。
微软刚刚发行的Windows XP放弃了对Java的支持,但Java能够独立运行于很多操作平台上,其中也包括Linux,并且在某些特性上要比在Windows上发挥得更好,我们完全有理由抛弃Windows而选择使用Linux来做Java开发。现在,你可以左手拿着Linux,右手拿着Java,然后对面带微笑手里拿着Windows XP的Bill Gates说:"让你的XP去见鬼吧!"
对于软件开发者来讲,任何一种编程语言都不可能是完美的。如果希望更好地理解Java语言,最好的方法是把这种语言与其同类型的语言相比较。既然Java类似于C++,把它同C++进行一番比较也是顺理成章的事情,哪一个好,哪一个不好,每个开发人员都有各自的看法。我个人认为Java开发要比C++好一些。当然每个人的看法和喜好是不同的。后面的文章将向大家介绍Java和C++的不同和对其的改进。孰强孰弱,大家自然就会明白了。
我们知道,Java一开始采用C++的语法格式,基本上是为了让程序设计者可以很快地熟悉 Java的语法格式,缩短学习Java的时间,毕竟C和C++仍旧是最多人会的一种程序语言。但是如果我们仔细检查Java程序语言的许多细节设计,我们可以发现Java去掉了不少C++的特点,并且加入一些新的特性。这些与C++的差异包括:
1.不再有#define、#include等预处理程序(Preprocessor)的功能
C++语言很重要的一个特点就是它的预处理程序。有些其他程序语言虽然也加入了#include的功能,但是还是欠缺处理宏(Macro)的能力。#define的功能在Java中我们可以用定义常数(constant)的方式来取代,而#include在Java中是不需要的,因为在Java中程序在执行时,会把类型数据记录在对象实体之中,我们不需要靠一些标头文件(header file)来知道我们使用的对象或数值是属于什么数据类型。
如果你使用C++语言时,只使用预处理程序的#include和#define功能的话,那么你大概不会觉得Java这样的设计对你产生什么样的困扰,但是如果你是使用C++语言预处理程序中宏功能的高手,你可能会觉得很不方便,进而怀疑Java如此设计的意义何在。
使用预处理程序虽然可以很方便地达到许多功能,但是站在软件工程的角度上看,对整个软件的维护其实是很不利的。由于C++语言中预处理程序的功能太过强大,厉害的程序设计高手常会自行开发一套只有自己看的懂的宏语言,一旦整个软件要交给其他人去维护,后继者很难在短时间内了解前一个人所写下的宏功能,增加软件开发时团队工作及日后维护的困难度。
另外一点则是C++语言的编译器所看到的程序代码,其实和程序设计者看到的程序代码是不同的。程序设计者看到的是尚未经过预处理程序处理过的程序代码,而编译器看到的则是预处理程序处理过的程序代码,一旦交给预处理程序处理的宏内容有误,编译器产生的错误信息将不会是程序设计师所预料的。而这一点自然也增加了程序在排错时的困难度。
预处理程序的存在也造成了阅读程序的不便。如果你想使用别人已经完成的C++语言程序,那么通常你不但要阅读他所写下的文件,还必须一并查阅上文件,才能了解其程序的全貌。如果换成是Java程序,只要查看java的程序文件就够了。
2.不再有structure、union及typedef
事实上,早在C++中就可以去掉C语言中的structure和union等对复杂数据的自定结构类型,因为类(Class)的定义方式可以完全做到这项功能。而typedef也是不必要的,一切都用类就可以了。虽然C++这样的设计是为了和C语言兼容,但是使用多余的语言特点不但不必要,而且容易造成对程序认识的混淆。
3.不再有函数
在Java程序语言中,去掉了程序向导语言中最重要的单元--函数(Function)。如果我们以对象向导的观念来看待函数,就可以了解函数在对象向导的概念中,是不必要的。在对象向导的程序观念里,对象的数据才是真正的主体,而处理对象数据的方法则必须依附在对象内才有意义。因此,去掉函数并不表示不再有子程序等模组化程 序的概念,相反地,是利用对象中的方法来取代函数,再一次强化对向导的发展策略。
4.不再有多重继承(Multiplelnheritance)
在C++中,多重继承是一项很强的功能,但也是一般人难以掌控的部分。去掉多重继承虽然降低了Java语言的功能,但是也大幅简化撰写程序时的困难度。虽然移除了多重继承的功能,但是Java提供了interface的方式,可以达到部分多重继承的功用。所谓的interface基本上定义了一个类的对外沟通的方法原型,以及类内部的常 数,和多重继承不同之处在于interface并不会定义类方法的内容,以及类中的变量数据。
5.不再有Goto
在程序语言的发展史上,Goto一直是毁誉参半的一项功能。在很多时候使用Goto可以大幅减少不必要的程序代码,但是也由于Goto可以很自由地改变程序的流程,如果冒然地使用,更可能造成程序结构混乱的情况。一般来说,正确使用Goto的例子多出现在循环内部,想要提早结束某一层循环。在C语言中,我们可以使用break 或contine来改变某一层循环的流程, 但如果想要改变两层以上的环执行流程,不是使用Goto就是以多余的布尔(boolean)变量,配合上一串if-then-else的判断来达成。
Java一方面移除了Goto的功能, 而另一方面同时扩大了break和continue的功能,可以允许多层循环的break或continue。如此一来不但避免了滥用Goto的可能性,同时也保存下Goto的好处。
6.不再有OperatorOverloading
在C++中,Operator Overloading同样也是一项值得讨论的设计。几乎在所有C++的书中,都会引用一些例子,告诉你使用OperatorOverloading可以使你的程序看起来更为自然。如下面是一个程序设计师自定义的复数类:
//C++中自定义的复数类及0pemtor Overloading
class Complex{
public:
Complex(double real,double image){
Real_number=real;
Image_number=image;
}
Complex operator+(Complexrhs){
Return Complex(rhs.real_number+real_number,
rhs.image_number+image_,nulnbef);
}
private:
doublereal_number //实部
doublejmage_nunmber; //虚部
}
在这里,如果你使用+来作为复数的加法符号,大家都不会有疑义,但是如果你使用的是*或》这样的符号,那么别人看到你的程序之后,难保不会产生认识上的错误。这也是Operator Overloading一大问题,当大家都对运算符赋予自己的定义后,整个程序的可读性就会大受影响。Operator Overloading的存在并不是必要的,我们一样可以定义类中的方法来达到同样的目的,至于Java去掉这项功能的利弊,恐怕就要读者自己去评断了。
7.取消自动类型转换
Java是一个严格进行类型检查的程序语言,对于下面这样的程序,在C++的编译器上编译时最多只会出现警告的信息,但是在Java里则不予通过:
Int aInteger; Double aDouble=2.71828; AInteger = aDouble;
虽然这样的转型在C++里是合法的,但是也会造成数据精确度的损失。Java为了要确定写程序的人充分地了解这点,必须要程序设计强制转型(type casting),Java的编译器才会接受:
int aInteger;
doublea Double=2.71828;
aInteger=(int)aDouble;
8.不再有指针
取消指针(Pointer)这样数据类型,可能会让许多熟悉C++语言的程序设计师大吃一惊。在C++语言里,灵活地运用指针是许多程序设计师的得意之作,但是占整个除错时间最久的也是指针的问题。配合上C++对内存管理的态度,程序设计师必须要自己去追踪自己向系统要到的内存,最后确实地交还给系统,并且在使用指针时,要小心翼翼地注意不要跨过合法的记忆空间,造成Segmentation Fault或General Protection Fault之类的问题。
Java去掉了指针类型,并不表示程序设计师在开发高级数据结构,像堆栈(stack)、 队列(queue)、二元树(binarytree)时,都必须要像在传统Basic上,利用大范围的数组来自行模拟系统内存,自行建构类似指针的表示方式。
相反地,Java提供了和Lisp语言中相似的Reference类型,通过Reference去读取配置到的内存内容,可以确保不会去读取到不属于自己的内存空间,而另一方面,程序的执行系统也可以动态地去做内存垃圾回收的工作,将没有被reference参考到的内存空间回收给系统使用。
9.和C++连接
不管Java是多么强大,总是有人需要把它和C++连接起来。因为只要有一个新的程序语言或是软件开发工具一出现,大家就会问:"它是否具有和原有程序库连接的能力呢?"也因为C++语言在电脑界中占了很重要的地位。大家的问题其实就等于是直接问"它是否可以和C++连接?"。目前在Java中,的确提供了和C++语言连接的方法,它的做法基本上是先将C++语言所写的程序建构成动态链接函数库(DynamicLinking Library,DLL),再由Java程序去调用DLL里的函数。
这种连接的方式,使得DLL中的函数,从Java的眼光看就是一个"方法"。不过因为这种方法是直接由其他的程序语言所提供,而不是以Java语言所写的,所以它被称之为"原生方法"(NativeMethod)。
由于Java Applet一些安全上的限制,所以这种连接外部程序的方法只能用在Java Application内。
小结:
事实上,constant和typedef这两条语句包含了#define语句的作用。现在,结构和联合已经被Java的类所代替。删除这些特性的原因是:由于其希望维持与C语言的向后兼容性,C ++的语言规范包含了大量冗余。比如,类实际上就已经包括了结构和联合的作用,因此这两种数据结构完全可以取消。关于#define语句,Java语言规范的制订者认为:尽管该语句的出发点是为了增强程序的可读性,但实际效果却恰恰相反,它常常导致难读的代码,故应该予以取消。Java不再支持独立函数,因此任何函数都必须封装到某个类中。由于人们普遍认为, C++所用的超类是非常不稳定的,因此Java抛弃了C++中的多继承并代之以接口。Java的接口指的是,在别的类看来一个类所能实现的方法。它所显示的只是一个类的方法或常量和变量 ,而不是这个类的全部结构。
最后,Java还取消了C++中的GOTO语句、操作符重载、自动类型转换及指针数据类型。 GOTO语句引起的争议已经有很多年了,可一直阴魂不散,这跟某些程序员对该语句一直情有独钟有关。C++仍然支持数据类型的自动转换,但Java要求编程人员显式实现数据类型之间的转换。自动数据类型转换使得两个数据类型互不兼容的变量可以相互赋值,而不需要给出显式说明。这有时会导致一些问题,其中最常见的是精确度损失。比方说,如果把一个带符号的32位整数赋给一个无符号整数,则所有的结果均为正数。Java的设计者们认为这很容易引起程序错误,从而决定不支持这种转换方式。
java 存储过程中if x0then什么意思
if when 就类似于当xxx的时候 当xxx的时候 switch分支判断 三元操作符 类似
JAVA初学问题!
Java新手入门的30个基本概念
在我们学习Java的过程中,掌握其中的基本概念对我们的学习无论是J2SE,J2EE,J2ME都是很重要的,J2SE是Java的基础,所以有必要对其中的基本概念做以归纳,以便大家在以后的学习过程中更好的理解java的精髓,在此我总结了30条基本的概念。
Java概述:
目前Java主要应用于中间件的开发(middleware)---处理客户机于服务器之间的通信技术,早期的实践证明,Java不适合pc应用程序的开发,其发展逐渐变成在开发手持设备,互联网信息站,及车载计算机的开发.Java于其他语言所不同的是程序运行时提供了平台的独立性,称许可以在windows,solaris,linux其他操作系统上使用完全相同的代码.Java的语法与C++语法类似,C++/C程序员很容易掌握,而且Java是完全的彻底的面向对象的,其中提出了很好的GC(Garbage Collector)垃圾处理机制,防止内存溢出。
Java的白皮书为我们提出了Java语言的11个关键特性。
(1)Easy:Java的语法比C++的相对简单,另一个方面就是Java能使软件在很小的机器上运行,基础解释其和类库的支持的大小约为40kb,增加基本的标准库和线程支持的内存需要增加125kb。
(2)分布式:Java带有很强大的TCP/IP协议族的例程库,Java应用程序能够通过URL来穿过网络来访问远程对象,由于servlet机制的出现,使Java编程非常的高效,现在许多的大的web server都支持servlet。
(3)OO:面向对象设计是把重点放在对象及对象的接口上的一个编程技术.其面向对象和C++有很多不同,在与多重继承的处理及Java的原类模型。
(4)健壮特性:Java采取了一个安全指针模型,能减小重写内存和数据崩溃的可能型。
(5)安全:Java用来设计网路和分布系统,这带来了新的安全问题,Java可以用来构建防病毒和防攻击的System.事实证明Java在防毒这一方面做的比较好。
(6)中立体系结构:Java编译其生成体系结构中立的目标文件格式可以在很多处理器上执行,编译器产生的指令字节码(Javabytecode)实现此特性,此字节码可以在任何机器上解释执行。
(7)可移植性:Java中对基本数据结构类型的大小和算法都有严格的规定所以可移植性很好。
(8)多线程:Java处理多线程的过程很简单,Java把多线程实现交给底下操作系统或线程程序完成.所以多线程是Java作为服务器端开发语言的流行原因之一。
(9)Applet和servlet:能够在网页上执行的程序叫Applet,需要支持Java的浏览器很多,而applet支持动态的网页,这是很多其他语言所不能做到的。
基本概念:
1.OOP中唯一关系的是对象的接口是什么,就像计算机的销售商她不管电源内部结构是怎样的,他只关系能否给你提供电就行了,也就是只要知道can or not而不是how and why.所有的程序是由一定的属性和行为对象组成的,不同的对象的访问通过函数调用来完成,对象间所有的交流都是通过方法调用,通过对封装对象数据,很大限度上提高复用率。
2.OOP中最重要的思想是类,类是模板是蓝图,从类中构造一个对象,即创建了这个类的一个实例(instance)。
3.封装:就是把数据和行为结合起在一个包中)并对对象使用者隐藏数据的实现过程,一个对象中的数据叫他的实例字段(instance field)。
4.通过扩展一个类来获得一个新类叫继承(inheritance),而所有的类都是由Object根超类扩展而得,根超类下文会做介绍。
5.对象的3个主要特性
behavior---说明这个对象能做什么.
state---当对象施加方法时对象的反映.
identity---与其他相似行为对象的区分标志.
每个对象有唯一的indentity 而这3者之间相互影响.
6.类之间的关系:
use-a :依赖关系
has-a :聚合关系
is-a :继承关系--例:A类继承了B类,此时A类不仅有了B类的方法,还有其自己的方法.(个性存在于共性中)
7.构造对象使用构造器:构造器的提出,构造器是一种特殊的方法,构造对象并对其初始化。
例:Data类的构造器叫Data
new Data()---构造一个新对象,且初始化当前时间.
Data happyday=new Data()---把一个对象赋值给一个变量happyday,从而使该对象能够多次使用,此处要声明的使变量与对象变量二者是不同的.new返回的值是一个引用。
构造器特点:构造器可以有0个,一个或多个参数
构造器和类有相同的名字
一个类可以有多个构造器
构造器没有返回值
构造器总是和new运算符一起使用.
8.重载:当多个方法具有相同的名字而含有不同的参数时,便发生重载.编译器必须挑选出调用哪个方法。
9.包(package)Java允许把一个或多个类收集在一起成为一组,称作包,以便于组织任务,标准Java库分为许多包.java.lang java.util java,net等,包是分层次的所有的java包都在java和javax包层次内。
10.继承思想:允许在已经存在的类的基础上构建新的类,当你继承一个已经存在的类时,那么你就复用了这个类的方法和字段,同时你可以在新类中添加新的方法和字段。
11.扩展类:扩展类充分体现了is-a的继承关系. 形式为:class (子类) extends (基类)。
12.多态:在java中,对象变量是多态的.而java中不支持多重继承。
13.动态绑定:调用对象方法的机制。
(1)编译器检查对象声明的类型和方法名。
(2)编译器检查方法调用的参数类型。
(3)静态绑定:若方法类型为priavte static final 编译器会准确知道该调用哪个方法。
(4)当程序运行并且使用动态绑定来调用一个方法时,那么虚拟机必须调用x所指向的对象的实际类型相匹配的方法版本。
(5)动态绑定:是很重要的特性,它能使程序变得可扩展而不需要重编译已存代码。
14.final类:为防止他人从你的类上派生新类,此类是不可扩展的。
15.动态调用比静态调用花费的时间要长。
16.抽象类:规定一个或多个抽象方法的类本身必须定义为abstract。
例: public abstract string getDescripition
17.Java中的每一个类都是从Object类扩展而来的。
18.object类中的equal和toString方法。
equal用于测试一个对象是否同另一个对象相等。
toString返回一个代表该对象的字符串,几乎每一个类都会重载该方法,以便返回当前状态的正确表示.
(toString 方法是一个很重要的方法)
19.通用编程:任何类类型的所有值都可以同object类性的变量来代替。
20.数组列表:ArrayList动态数组列表,是一个类库,定义在java.uitl包中,可自动调节数组的大小。
21.class类 object类中的getclass方法返回ckass类型的一个实例,程序启动时包含在main方法的类会被加载,虚拟机要加载他需要的所有类,每一个加载的类都要加载它需要的类。
22.class类为编写可动态操纵java代码的程序提供了强大的功能反射,这项功能为JavaBeans特别有用,使用反射Java能支持VB程序员习惯使用的工具。
能够分析类能力的程序叫反射器,Java中提供此功能的包叫Java.lang.reflect反射机制十分强大.
1.在运行时分析类的能力。
2.在运行时探察类的对象。
3.实现通用数组操纵代码。
4.提供方法对象。
而此机制主要针对是工具者而不是应用及程序。
反射机制中的最重要的部分是允许你检查类的结构.用到的API有:
java.lang.reflect.Field 返回字段.
java.reflect.Method 返回方法.
java.lang.reflect.Constructor 返回参数.
方法指针:java没有方法指针,把一个方法的地址传给另一个方法,可以在后面调用它,而接口是更好的解决方案。
23.接口(Interface)说明类该做什么而不指定如何去做,一个类可以实现一个或多个interface。
24.接口不是一个类,而是对符合接口要求的类的一套规范。
若实现一个接口需要2个步骤:
1.声明类需要实现的指定接口。
2.提供接口中的所有方法的定义。
声明一个类实现一个接口需要使用implements 关键字
class actionB implements Comparable 其actionb需要提供CompareTo方法,接口不是类,不能用new实例化一个接口.
25.一个类只有一个超类,但一个类能实现多个接口。Java中的一个重要接口:Cloneable
26.接口和回调.编程一个常用的模式是回调模式,在这种模式中你可以指定当一个特定时间发 生时回调对象上的方法。
例:ActionListener 接口监听.
类似的API有:java.swing.JOptionPane
java.swing.Timer
java.awt.Tookit
27.对象clone:clone方法是object一个保护方法,这意味着你的代码不能简单的调用它。
28.内部类:一个内部类的定义是定义在另一个内部的类。
原因是:
1.一个内部类的对象能够访问创建它的对象的实现,包括私有数据。
2.对于同一个包中的其他类来说,内部类能够隐藏起来。
3.匿名内部类可以很方便的定义回调。
4.使用内部类可以非常方便的编写事件驱动程序。
29.代理类(proxy):
1.指定接口要求所有代码
2.object类定义的所有的方法(toString equals)
30.数据类型:Java是强调类型的语言,每个变量都必须先申明它都类型,java中总共有8个基本类型.4种是整型,2种是浮点型,一种是字符型,被用于Unicode编码中的字符,布尔型。
一、入门
《Java 2从入门到精通》- 推荐
《Thinking in Java》- 强烈推荐*
O’reilly的Java编程基础系列 - 参考*
二、进阶
《Java Cook Book》- 非常推荐* (包含了Java编程的Tips,适合当做手册来查阅)
《O’reilly-Java IO》- 推荐* (包含Java IO编程的各个方面)
《O’reilly-Database Programming with JDBC》- 推荐* (JDBC编程)
《O’reilly-Java Programming with Oracle JDBC》- 参考*
三、Java Web编程
《O’reilly-Java Server Pages》- 强烈推荐*
《O’reilly-Java Servlet Programming》- 非常推荐*
《O’reilly-Jakarta Struts》- 推荐* (Java Web编程的一个MVC实现框架Struts的书)
四、EJB编程
《J2EE应用与BEA Weblogic Server》- 强烈推荐
《Mastering EJB 2.0》- 非常推荐*
《Enterprise Java Bean》- 推荐*
五、Java XML编程
《O’reilly-Java and XML》- 推荐*
《O’reilly-Java and SOAP》- 参考* (Java的SOAP编程)
六、设计模式
《Core J2EE Patterns》- 强烈推荐* (J2EE设计模式,设计企业应用软件必备参考书)
《EJB Design Patterns》- 推荐*
页面功能 【加入收藏】 【推荐给朋友】 【字体:大 中 小】 【关闭】
java编程规范-
作者:佚名 来自:未知
命名规范
定义这个规范的目的是让项目中所有的文档都看起来像一个人写的,增加可读性,减少项目组中因为换人而带来的损失。(这些规范并不是一定要绝对遵守,但是一定要让程序有良好的可读性)
Package 的命名
Package 的名字应该都是由一个小写单词组成。
Class 的命名
Class 的名字必须由大写字母开头而其他字母都小写的单词组成
Class 变量的命名
变量的名字必须用一个小写字母开头。后面的单词用大写字母开头。
Static Final 变量的命名
Static Final 变量的名字应该都大写,并且指出完整含义。
参数的命名
参数的名字必须和变量的命名规范一致。
数组的命名
数组应该总是用下面的方式来命名:
byte[] buffer;
而不是:
byte buffer[];
方法的参数
使用有意义的参数命名,如果可能的话,使用和要赋值的字段一样的名字:
SetCounter(int size){
this.size = size;
}
Java 文件样式
所有的 Java(*.java) 文件都必须遵守如下的样式规则
版权信息
版权信息必须在 java 文件的开头,比如:
/**
* Copyright ? 2000 Shanghai XXX Co. Ltd.
* All right reserved.
*/
其他不需要出现在 javadoc 的信息也可以包含在这里。
Package/Imports
package 行要在 import 行之前,import 中标准的包名要在本地的包名之前,而且按照字母顺序排列。如果 import 行中包含了同一个包中的不同子目录,则应该用 * 来处理。
package hotlava.net.stats;
import java.io.*;
import java.util.Observable;
import hotlava.util.Application;
这里 java.io.* 使用来代替InputStream and OutputStream 的。
Class
接下来的是类的注释,一般是用来解释类的。
/**
* A class representing a set of packet and byte counters
* It is observable to allow it to be watched, but only
* reports changes when the current set is complete
*/
接下来是类定义,包含了在不同的行的 extends 和 implements
public class CounterSet
extends Observable
implements Cloneable
Class Fields
接下来是类的成员变量:
/**
* Packet counters
*/
protected int[] packets;
public 的成员变量必须生成文档(JavaDoc)。Proceted、private和 package 定义的成员变量如果名字含义明确的话,可以没有注释。
存取方法
接下来是类变量的存取的方法。它只是简单的用来将类的变量赋值获取值的话,可以简单的写在一行上。
/**
* Get the counters
* @return an array containing the statistical data. This array has been
* freshly allocated and can be modified by the caller.
*/
public int[] getPackets() { return copyArray(packets, offset); }
public int[] getBytes() { return copyArray(bytes, offset); }
public int[] getPackets() { return packets; }
public void setPackets(int[] packets) { this.packets = packets; }
其它的方法不要写在一行上
构造函数
接下来是构造函数,它应该用递增的方式写(比如:参数多的写在后面)。
访问类型 ('public', 'private' 等.) 和 任何 'static', 'final' 或 'synchronized' 应该在一行中,并且方法和参数另写一行,这样可以使方法和参数更易读。
public
CounterSet(int size){
this.size = size;
}
克隆方法
如果这个类是可以被克隆的,那么下一步就是 clone 方法:
public
Object clone() {
try {
CounterSet obj = (CounterSet)super.clone();
obj.packets = (int[])packets.clone();
obj.size = size;
return obj;
}catch(CloneNotSupportedException e) {
throw new InternalError('Unexpected CloneNotSUpportedException: ' + e.getMessage());
}
}
类方法
下面开始写类的方法:
/**
* Set the packet counters
* (such as when restoring from a database)
*/
protected final
void setArray(int[] r1, int[] r2, int[] r3, int[] r4)
throws IllegalArgumentException
{
//
// Ensure the arrays are of equal size
//
if (r1.length != r2.length || r1.length != r3.length || r1.length != r4.length)
throw new IllegalArgumentException('Arrays must be of the same size');
System.arraycopy(r1, 0, r3, 0, r1.length);
System.arraycopy(r2, 0, r4, 0, r1.length);
}
toString 方法
无论如何,每一个类都应该定义 toString 方法:
public
String toString() {
String retval = 'CounterSet: ';
for (int I = 0; I data.length(); i++) {
retval += data.bytes.toString();
retval += data.packets.toString();
}
return retval;
}
}
main 方法
如果main(String[]) 方法已经定义了, 那么它应该写在类的底部.
代码编写格式
代码样式
代码应该用 unix 的格式,而不是 windows 的(比如:回车变成回车+换行)
文档化
必须用 javadoc 来为类生成文档。不仅因为它是标准,这也是被各种 java 编译器都认可的方法。使用 @author 标记是不被推荐的,因为代码不应该是被个人拥有的。
缩进
缩进应该是每行2个空格. 不要在源文件中保存Tab字符. 在使用不同的源代码管理工具时Tab字符将因为用户设置的不同而扩展为不同的宽度.
如果你使用 UltrEdit 作为你的 Java 源代码编辑器的话,你可以通过如下操作来禁止保存Tab字符, 方法是通过 UltrEdit中先设定 Tab 使用的长度室2个空格,然后用 Format|Tabs to Spaces 菜单将 Tab 转换为空格。
页宽
页宽应该设置为80字符. 源代码一般不会超过这个宽度, 并导致无法完整显示, 但这一设置也可以灵活调整. 在任何情况下, 超长的语句应该在一个逗号或者一个操作符后折行. 一条语句折行后, 应该比原来的语句再缩进2个字符.
{} 对
{} 中的语句应该单独作为一行. 例如, 下面的第1行是错误的, 第2行是正确的:
if (i0) { I ++ }; // 错误, { 和 } 在同一行
if (i0) {
I ++
}; // 正确, { 单独作为一行
} 语句永远单独作为一行.
如果 } 语句应该缩进到与其相对应的 { 那一行相对齐的位置。
括号
左括号和后一个字符之间不应该出现空格, 同样, 右括号和前一个字符之间也不应该出现空格. 下面的例子说明括号和空格的错误及正确使用:
CallProc( Aparameter ); // 错误
CallProc(Aparameter); // 正确
不要在语句中使用无意义的括号. 括号只应该为达到某种目的而出现在源代码中。下面的例子说明错误和正确的用法:
if ((I) = 42) { // 错误 - 括号毫无意义
if (I == 42) or (J == 42) then // 正确 - 的确需要括号
程序编写规范
exit()
exit 除了在 main 中可以被调用外,其他的地方不应该调用。因为这样做不给任何代码代码机会来截获退出。一个类似后台服务地程序不应该因为某一个库模块决定了要退出就退出。
异常
申明的错误应该抛出一个RuntimeException或者派生的异常。
顶层的main()函数应该截获所有的异常,并且打印(或者记录在日志中)在屏幕上。
垃圾收集
JAVA使用成熟的后台垃圾收集技术来代替引用计数。但是这样会导致一个问题:你必须在使用完对象的实例以后进行清场工作。比如一个prel的程序员可能这么写:
…
{
FileOutputStream fos = new FileOutputStream(projectFile);
project.save(fos, 'IDE Project File');
}
…
除非输出流一出作用域就关闭,非引用计数的程序语言,比如JAVA,是不能自动完成变量的清场工作的。必须象下面一样写:
FileOutputStream fos = new FileOutputStream(projectFile);
project.save(fos, 'IDE Project File');
fos.close();
Clone
下面是一种有用的方法:
implements Cloneable
public
Object clone()
{
try {
ThisClass obj = (ThisClass)super.clone();
obj.field1 = (int[])field1.clone();
obj.field2 = field2;
return obj;
} catch(CloneNotSupportedException e) {
throw new InternalError('Unexpected CloneNotSUpportedException: ' + e.getMessage());
}
}
final 类
绝对不要因为性能的原因将类定义为 final 的(除非程序的框架要求)
如果一个类还没有准备好被继承,最好在类文档中注明,而不要将她定义为 final 的。这是因为没有人可以保证会不会由于什么原因需要继承她。
访问类的成员变量
大部分的类成员变量应该定义为 protected 的来防止继承类使用他们。
注意,要用'int[] packets',而不是'int packets[]',后一种永远也不要用。
public void setPackets(int[] packets) { this.packets = packets; }
CounterSet(int size)
{
this.size = size;
}
编程技巧
byte 数组转换到 characters
为了将 byte 数组转换到 characters,你可以这么做:
'Hello world!'.getBytes();
Utility 类
Utility 类(仅仅提供方法的类)应该被申明为抽象的来防止被继承或被初始化。
初始化
下面的代码是一种很好的初始化数组的方法:
objectArguments = new Object[] { arguments };
枚举类型
JAVA 对枚举的支持不好,但是下面的代码是一种很有用的模板:
class Colour {
public static final Colour BLACK = new Colour(0, 0, 0);
public static final Colour RED = new Colour(0xFF, 0, 0);
public static final Colour GREEN = new Colour(0, 0xFF, 0);
public static final Colour BLUE = new Colour(0, 0, 0xFF);
public static final Colour WHITE = new Colour(0xFF, 0xFF, 0xFF);
}
这种技术实现了RED, GREEN, BLUE 等可以象其他语言的枚举类型一样使用的常量。 他们可以用 == 操作符来比较。
但是这样使用有一个缺陷:如果一个用户用这样的方法来创建颜色 BLACK
new Colour(0,0,0)
那么这就是另外一个对象,==操作符就会产生错误。她的 equal() 方法仍然有效。由于这个原因,这个技术的缺陷最好注明在文档中,或者只在自己的包中使用。
Swing
避免使用 AWT 组件
混合使用 AWT 和 Swing 组件
如果要将 AWT 组件和 Swing 组件混合起来使用的话,请小心使用。实际上,尽量不要将他们混合起来使用。
滚动的 AWT 组件
AWT 组件绝对不要用 JscrollPane 类来实现滚动。滚动 AWT 组件的时候一定要用 AWT ScrollPane 组件来实现。
避免在 InternalFrame 组件中使用 AWT 组件
尽量不要这么做,要不然会出现不可预料的后果。
Z-Order 问题
AWT 组件总是显示在 Swing 组件之上。当使用包含 AWT 组件的 POP-UP 菜单的时候要小心,尽量不要这样使用。
调试
调试在软件开发中是一个很重要的部分,存在软件生命周期的各个部分中。调试能够用配置开、关是最基本的。
很常用的一种调试方法就是用一个 PrintStream 类成员,在没有定义调试流的时候就为 null,类要定义一个 debug 方法来设置调试用的流。
性能
在写代码的时候,从头至尾都应该考虑性能问题。这不是说时间都应该浪费在优化代码上,而是我们时刻应该提醒自己要注意代码的效率。比如:如果没有时间来实现一个高效的算法,那么我们应该在文档中记录下来,以便在以后有空的时候再来实现她。
不是所有的人都同意在写代码的时候应该优化性能这个观点的,他们认为性能优化的问题应该在项目的后期再去考虑,也就是在程序的轮廓已经实现了以后。
不必要的对象构造
不要在循环中构造和释放对象
java语言then的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于JAVA语言不区分大小写、java语言then的信息别忘了在本站进行查找喔。