问一下这个编程错误424是什么有什么错的地方 是求圆的面积 保留七位小数

【图文】第3章 简单的C程序设计_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
第3章 简单的C程序设计
大小:309.00KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
第7章模块与VBA程序设计(辛).pptx 143页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
下载提示
1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
需要金币:200 &&
你可能关注的文档:
上机实验3:创建SQL查询在“学生成绩管理系统”数据库中,使用SQL视图创建一个名为 “SQL5”的查询对象。查询两科以上(含两科)成绩不及格的学生,要求显示这些学生的学号和不及格的科目数,并按学号升序排列。SELECT 学号, COUNT(*) AS 不及格的科目数FROM 修课成绩WHERE 成绩&60GROUP BY 学号HAVING COUNT(*)&=2ORDER BY 学号;《Access2010数据库系统与应用》 第7章 模块与VBA程序设计VBA编程基础程序流程控制面向对象的程序设计概述过程与作用域VBA程序调试与错误处理模块与VBA概述目 录§7.1
模块与VBA概述 模块是Access数据库对象之一,由面向对象的VBA程序构成。模块具有很强的通用性,窗体、报表等对象都可以调用模块内部的过程。 VBA(Visual Basic for Applications)是VB(Visual Basic)语言的子集。它是微软Office套件内置的可视化编程语言,具有简单、易学的特点,用来解决Access数据库其他对象难以实现的操作(如循环控制),以建立完整的数据库应用系统。与Visual Basic不同的是,VBA不是一个独立的开发工具,一般被嵌入到像Word、Excel、Access这样的宿主软件中。§7.1.1
模块的概念在Access中,模块分为两种类型:标准模块和类模块。
标准模块标准模块中放置数据库的公共变量或公共过程,供类模块里的过程调用。这些公共变量或公共过程具有全局性,在整个应用程序中都有效。12 类模块 嵌入到窗体和报表里的代码块称为类模块。窗体模块和报表模块都属于类模块,具有局部性,仅在本窗体或报表中有效。§7.1.2
模块的组成模块由声明和过程两个部分组成(过程是模块的组成单元,分为子过程和函数过程),一个模块中有一个声明区域和一个或多个过程,在声明区域对过程中用到的变量进行声明。1
声明区域 声明区域主要包括:Option声明、变量、常量或自定义数据类型的声明。模块中可以使用的Option声明语句如下:Option Base 1:声明模块中数组下标的 默认下界为1,不声明则默认下界为0。Option Compare Database:声明模块中需要进行字符串比较时,将根据数据库的区域ID确定的排序级别进行比较;不声明则按字符ASCII码进行比较。Option Explicit:强制模块用到的变量必须先声明后使用。§7.1.2
模块的组成
子过程 子过程又称为Sub过程,用来执行一系列的操作,子过程没有返回值,它的定义格式如下:Sub 过程名 [程序代码]End Sub其中的程序代码实现要完成的一系列操作。 调用子过程时可以直接引用子过程的名称,也可以在过程名称之前加上关键字Call来显式调用一个子过程。在自定义的过程名前加上Call关键字是一个很好的程序设计习惯,可以使代码更加清晰。2§7.1.2
模块的组成
函数过程 函数过程又称为Function过程,用于执行一系列操作并返回一个结果,这个结果称为返回值。它的定义格式如下:Function 过程名 As (返回值)类型 [程序代码]End
Function 函数过程不能使用Call来调用执行,需要在赋值语句或表达式中直接引用函数过程的名称。3§7.1.3
VBA的编程环境
Access系统提供了一个编程界面——VBE(Visual Basic Editor),它是编写和调试VBA程序代码的重要环境。Access的标准模块和类模块设计都是在VBE窗口完成。ACCESS的环境:可视化交互环境VBA编程环境(VBE)ACCESS的状态:设计运行§7.1.3
VBA的编程环境1.进入类模块的 VBE 编程环境方法1:在窗体或报表“设计视图”中的指定控件对象“属性”对话框中单击“事件”选项卡,选定某个事件,在弹出的“选择生成器”对话框中选择“代码生成器” ,单击“确定”按钮,便进入VBE环境。方法2:在窗体或报表“设计视图”中右键单击指定控件对象,在弹出的快捷菜单中选择“事件生成器”/“代码生成器”项,单击“确定”按钮,便打开进入VBE环境。2.进入标准模块的 VBE 编程环境方法1:在Access 2010窗口中,单击“创建”选项卡的“宏与代码”组中的“模块”按钮,便可进入VBE环境。方法2:在Access 2010窗口中,双击“导航窗格”上的“模块”对象列表中指定模块名,便进入VBE环境,并显示该模块已有的VBA代码。工程窗口:即工程资源管理器,该窗口显示应用程序的所有模块文件,以分层列表的方式显示。单击VBE窗口菜单栏中“视图”菜单的“工程资源管理器”命令,即可打开工程窗口。属性窗口:列出了所选对象的各个属性
正在加载中,请稍后...
69页52页170页52页93页58页75页55页47页37页查看: 1444|回复: 12
//这个试一下/***@(#)Carea.java***@author*@version1./18*/importjava.util.SpublicclassCarea{/***CreatesanewinstanceofCarea.*/publicCarea(){}/***@paramargsthecommandlinearguments*/publicstaticvoidmain(String[]args){//TODOcodeapplicationlogichereScannerin=newScanner(System.in);doubler=in.nextDouble();doublearea=2*Math.PI*r;System.out.printf(&%.7f&,area);}}
我也比知道
import java.awt.event.KeyE import java.awt.event.KeyL import java.text.DecimalF import javax.swing.JF import javax.swing.JL import javax.swing.JTextF public class Test { JFrame frame = new JFra
等——待——
用DecimalFormatDecimalFormatdf=newDecimalFormat(&#.0000000&);//需要保留几位就写几个零System.out.println(&Theareais:&+df.format(area));还有就是建议你把PI写成final的
台儿庄受伤者
#include void main() { float r,s; for ( r=0.5;r
main() { float r,a=3.14,s; printf(&please input r:&); scanf(&%f&,&r); s=a*r*r; printf(&s=%-8.2f&,f); }
public class Circle {//圆的半径 public Circle(double r){ this.r = } //求圆的面积 public double getArea(){ return Math.PI*r*r; } //求圆的周长 public double getPerimeter(){ return 2*Math.PI*r; } public static
import javax.swing.JOptionP public class yuan{ public static void main(String args[]){ double p,s,l,r;S//其中s为面积,l为周长,r为半径 p=3.1415; str=JOptionPane.showInputDialog(&请输入圆的半径r&); r=Double.parseDo
引入包类我还没有学,不好意思。希望对你有助。 class Cicle//定义圆类。 { double area(double r)//定义方法计算圆的面积。 { return 3.14*r*r; } } class Test5 { public static void main(String[] args) { Cicle c=new Cicle();//new一个对
星球大战无不胜
给定圆的半径r,求圆的面积。输入格式输入包含一个要求保留小数点后7位,则你的程序必须严格的输出7位关于socket多线程c/s的程序,小弟初学java,求大神当前位置: >>
Java编程那点事
Java 编程那些事儿 1――序言 序言 从大学毕业到现在,马上就六年了,这六年中从事过开发,也从事培训工作,相比 而言,参加培训工作的时间要长一些。由于工作的特点,遇到了各种各样的学生,在学习编 程时遇到了一系列的问题,也有很多迷茫的时候,希望通过编写本书,把相关的问题进行一 下总结,把自己的经验和大家进行分享。当然由于一些知识也只是个人见解,也希望大家积 极指正,帮助编程的初
学者,以及程序开发人员深刻理解基础的概念,更好的学习编程和从 事开发工作。 编写一本书,总要有个名字吧,姑且把书名叫做《Java 编程那些事儿》吧,主要 是用通俗的语言,解释清楚以下几个内容: 1、 程序设计是什么? 2、 Java 语言相关基础语法及应用 3、 如何建立基础的程序逻辑 以及其它编程和 Java 语言的相关问题, 本书的编写打算以在线连载的形式进行, 估计编写的 周期会比较长,希望能为软件开发行业尽一点自己的微薄之力吧。陈跃峰
Java 编程那些事儿 2――程序设计是什么? 作者:陈跃峰 出自:http://blog.csdn.net/mailbomb 程序设计,俗称编程,是一个比较专业的概念。初学者,甚至一部分开发人员,都 不能很简单的解释这个概念,所以使初学者觉得程序设计是一件很有科技含量,或者是很高 深的学科,其实这些都是误解。那么程序设计到底是什么呢? 程序,其实就是把需要做的事情用程序语言描述出来。类似如作家,就是把自己头 脑中的创意用文字描述出来。所以学习程序,主要就是三个问题:做什么、怎么做和如何描 述,具体如下: 1. 做什么 做什么就是程序需要实现的功能。 2. 怎么做 怎么做就是如何实现程序的功能,在编程中,称为逻辑,其实就是实现的步骤。 3. 如何描述 就是把怎么做用程序语言的格式描述出来。 所以,对于有经验的程序设计人员来说,学习新的程序设计语言的速度会比较快, 就是因为第 1 和第 2 个问题基本解决了,只需要学习第 3 个问题即可了。 对于“做什么”的问题,可能初学者觉得会比较简单,其实在大型项目开发,例如 ERP, 企业都不能很详细的说明需要实现具体的功能, 这就需要有专门的人员去发掘具体的功 能,这个用程序的术语叫做需求分析。举个例子吧,例如某个人要找个女朋友,如果你大概 去问他,他会说,找个中等的就可以了,但是这个还不是具体的需求,你可能需要问一下, 要求女朋友的年龄是多少,身高是多少等等具体的问题。所以说,搞清楚“做什么”也不是 简单的事情,需要专门的人员从事该工作。 对于“怎么做”的问题,是初学者,甚至很有经验的开发人员都头疼的事情,这个 称作程序逻辑。因为实际的功能描述和程序设计语言之间不能直接转换,就像作家需要组织 自己的思路和语言一样,程序设计人员也需要进行转换,而且现实世界和程序世界之间存在 一定的差异,所以对于初学者来说,这是一个非常痛苦的过程,也是开始学习时最大的障碍。 由于计算机自身的特点, “怎么做”的问题其实就是数据和操作的问题,某个顶级大师曾经说 过: “程序=数据结构+算法” ,把这个问题描述的简单准确。那么“怎么做”的问题,就变成 了持有那些数据,以及如何操作这些数据的问题。先简单的介绍这么多,大家仔细体会吧。 对于 “如何描述” 的问题, 是学习程序最容易, 也是最枯燥的问题。 其实就是学 “透” 一套格式,并且深刻理解语言的特点。学程序语言,就像学汉语差不多,需要学习字怎么写, 学习语法结构等, 只是不需要像汉语这样学那么多年, 但是学好一个语言还是要耐得住寂寞。 语法的学习需要细致,只有深刻领悟了语法的格式才能够熟练使用该语言。 前面介绍的是程序的概念, 那么为什么叫程序设计, 其实这个设计和现实中的设计 一样。例如你自己盖个小棚子,只需要简单的规划即可,也就是编程中的小程序,而如果需 要建造一栋大楼,肯定需要进行设计吧,程序也是这样。所以把编程叫做程序设计了。Java 编程那些事儿 3――你适合学习程序设计吗? 作者:陈跃峰 出自:http://blog.csdn.net/mailbomb 程序设计是一个技术活, 所以不是适合所有的人。 现在很多人听说程序设计人员待 遇如何如何的好,都一窝蜂的来学习程序,其实这个现象很不正常,因为程序不一定适合你。 其实对于一个人来说,适合你的才是最好的。 就像现在很多小孩子都被家长逼着去学钢琴啊什么,有些小孩根本没有艺术细胞 的,所以学习的效果就是差强人意了。 其实程序设计最需要基础扎实了,现在的程序设计学习很偏重程序设计语言的学 习,或者直白点说,程序设计课程基本上可以说是在学习程序设计语言,在上一个内容中已 经讲解了程序设计是什么的问题,程序设计语言只是程序设计中最后的环节,也是比较简单 的环节,只学会程序语言,离实际工作的距离还很遥远,而更多的程序基础其实是在语言之 外的东西。就像会写汉字,熟悉汉语语法的人一定能够成为作家吗? 程序设计的基础不外乎以下几个方面: 1、 一定的英文阅读能力 因为程序设计接触的很多文档都是以英文的形式提供的,一个阅读英文很困难的人,可以学 会程序设计,但是不会有很深的造诣。就像一个看不懂字典的人,能学好汉语吗? 2、 较强的数学基础 计算机最核心的功能就是计算,各种程序逻辑都会被转成一定格式的运算,运算需要什么知 识呢,肯定是数学了。就像一个数学很差的人能做好会计吗?在程序设计中,需要深刻理解 数学,用数学来解决你遇到的各种实际问题,类似于做数学应用题吧。这个基础学要长期的 积累。 3、 较强的逻辑思维能力 逻辑思维可能每个程序设计人员都很需要,那么逻辑思维是什么呢?其实就是把一个事情分 解成一系列的步骤在有限的时间内做完,这个也是程序设计过程中最灵活的地方。例如你要 完成“去罗马”这件事情,那么逻辑有多少种呢?借用一句俗话“条条大道通罗马”来解释 这个问题吧,所以程序设计是典型的脑力劳动。可能有些人觉得程序设计就是体力活,这也 不错,为什么呢,还是借助一个例子来说明吧,买油翁的故事大家都知道吧,如果你反复做 一件相同的事情,可能这个事情对外人来说是脑力劳动,对于不断重复做的人来说,也就只 是“唯手熟尔”的体力活罢了。 可能很多初学者对于逻辑思维还不是很清楚,那么举一个比较老套的例子吧,例如实现“把 一个大象放到冰箱里”这个事情,逻辑是怎样呢?步骤如下: a、 打开冰箱 b、 把大象推到冰箱里 c、 关上冰箱的门 当然这只是一个很简单的逻辑。在实际的程序设计中还需要严谨的逻辑思维,保证程序可以 正常运行。 那么逻辑严谨又是什么呢?还以上面的例子为例,严谨的逻辑思维应该做如下事情: a、 冰箱打不开怎么办? b、 大象不进冰箱怎么办? c、 关不上冰箱门怎么办? 就像一个运动员来说,良好的体质是基础,同样,对于程序员来说,良好的基础可 能帮助你达到更高的高度。当然基础不可能每个人都具备,但是数学基础和逻辑思维能力是 必须的。 那你的数学基础如何呢,出个简单的数学题目测试一下你的数学基础吧。 已知一组从 1 开始的数字,第一行从左到右依次是 1 到 10,第二行从左到右依次 是 11 到 20, 按照每行 10 个的顺序依次类推, 则任意整数 n(n&0)位于该组数字的第几行第几 列呢? 所以,如何你觉得以上的内容你欠缺很多,可能你就不适合做程序设计这个职业, 趁早选择其他的职业吧, 这样对你的发展会更有利。 如果你觉得以上的内容你大部分都符合, 那么你可以尝试学习一下后续的内容――《如何学好程序设计》 。 希望大家积极讨论,不足之处请大家积极指正。Java 编程那些事儿 4――如何学好程序设计? 作者:陈跃峰 出自:http://blog.csdn.net/mailbomb 俗话说“兴趣是最好的老师” ,但是只靠兴趣是远远不够的,还需要付出艰辛的努 力。程序设计是一种技能,需要在较短的时间内学会,就不能像学习汉语一样,通过十几年 甚至更长的时间来学好,也不能像英语那样进行业余学习,以至很多大学毕业的人英语水平 也不敢恭维,也达不到实用的程度。 那么如何学好程序设计呢?或者更现实一点, 如何在短时间内成为一个程序员呢? 在接触的学生中,很多人会问:学习程序设计有捷径吗?一般我都不直接回答,而 是这样反问他们:大家都看过武侠小说吧,那么练武有没有捷径呢?可能一部分学生会说没 有,而另一些同学会说,练武有捷径的啊,比如什么“辟邪剑谱”“葵花宝典”之类的,但 、 是走这些捷径需要付出很大的代价,但是的确可以快速炼成绝世武功。可惜的是,学习程序 设计连这些付出很大代价的秘籍都没有。 但是在实际的学习中,就像练武一样,如果有位前辈对你进行指点或引导,的确可 以提高你学习的速度,但是你还是要付出艰辛的努力。 在介绍如何学好程序设计以前,首先要搞明白,学习程序设计需要学什么,其实不 外乎以下内容: l 程序设计语言 语言是程序最终表达的方式,必须熟练。 l 开发工具 开发工具相当于练武的武器,拿个趁手的武器可以发挥你的潜能 l 开发技术 开发技术就是实现好的功能,可以直接拿来用的结构,类似于武功秘籍,但是一定要熟练到 可以灵活使用啊。 l 逻辑思维 如何实现程序的要求功能。 l 设计模式 设计模式就是设计的技巧,类似于写作文时的倒序、插叙什么的。 其实学好程序的方法很简单――“勤学苦练” 。多读代码,多写代码,是学好程序 的基本方式。需要把各种东西熟练到可以灵活使用的程度,由于学习的时间一般都比较紧, 不能像汉语那样炼成习惯成自然的方式,所以在开始学习的初期伴随着大量的记忆,在记忆 的基础上进行使用,仔细记忆并体会每个细节,把合适的内容用在合适的地方。 当然,学习最好的开始是模仿,但是由于程序很灵活,所以一定要在模仿的基础上 理解,理解了以后进行创新,把东西理解了以后,这些内容就变成了自己的,即使忘记了, 也很容易的捡起来,而不要囫囵吞枣式的学习,那样无法做到灵活的解决问题。 当学会了程序设计以后, 就可以成为大师级的人物, 像武侠小说里的那些大侠一样, 做到“意由心生”“无招胜有招”了,祝福每个初学者以及从事开发的人员,能够早日进入 、 到该境界。 PS:关于英文阅读能力的锻炼,坚持读 1-2 本英文原版书籍(网上很容易下到很多 原版电子书),就可以获得比较大的提升。Java 编程那些事儿 5――程序设计介绍小结 作者:陈跃峰 出自:http://blog.csdn.net/mailbomb 前面简单的介绍了程序设计的相关知识, 程序设计也就是用程序语言表达你自己的 思维,所以重要的不是语言,而是你的思维,这个是现在程序设计教学中最大的误区,本书 中将以语言和思维并重的方式来介绍 Java 语言,并培养你的逻辑思维。 程序设计的道路不是一帆风顺的,其中布满艰辛,所以如果你打算学习程序设计, 那么要做好长期吃苦的准备,俗话说: “板凳要做十年冷” ,要有这样的耐心和恒心才能把程 序设计学会、学好。 当然如果基础不好, 那么还想学习程序设计课程的话, 将需要付出比一般人更多的 努力才可以基本赶上一般人的水平,用句不恰当的话“出来混迟早要还的“,前面欠下的基 础知识现在就是还的时候了。 关于工作,也简单的说一下,软件开发行业需要各种层次的人才,其实水平只要达 到可以独立工作,也就能找到一份工作,但是要想找到一个不错的工作,而且以后还有良好 的发展,需要的就是扎实的基础以及长期的努力。 后续讲解语言部分打算分成以下几大块来进行说明: 1、 计算机基础 计算机软件的基本概念、进制的相关知识、计算机内部的数据表达方式等。 2、 Java 语言的简介。 注:我也不能免俗。 3、 Java 开发环境的安装和配置。 介绍 JDK、Eclipse 的安装、配置以及使用。 4、 Java 相关语法和程序逻辑。 以通俗的语言来介绍语法,深刻理解语法的作用和用途。 可能还会进行一些变更,本人保留最终的解释权,呵呵。Java 编程那些事儿 6――计算机软件基本概念 作者:陈跃峰 出自:http://blog.csdn.net/mailbomb 第一章 计算机基础 本部分主要介绍计算机相关的知识,重点介绍和软件编程相关的基础知识。 其实对于编程来说,计算机的基础是越多越深就越好,但是受时间和精力的限制, 每个人了解的其实还是很有限,下面就主要编程中常用的基础知识,遗漏的地方请大家积极 指正和补充。 计算机本质的结构就是将所有的内容数据化,其实软件编程也采用的是同样的逻 辑,把各种需要保存的状态数字化。 1.1 计算机软件基本概念 l 软件的概念 大家都知道,计算机分为硬件和软件,其实看得见摸得着的算硬件,比如硬盘、主板什么的, 摸不着的就算软件了。 按照专业点的说法,软件就是一组指令序列,那么如何理解他呢?举个基本的例子,比如大 家到学校报名,学校会给你一个单子,一般上面会写,首先到哪里缴费、然后领证件,体检 什么的, 反正至少也有那么 10 多条, 如果把每条操作都看成指令的话, 这个就是软件的本质。 或者按照冯?诺伊曼的计算机体系,计算机就是接受输入,进行处理,反馈结果,其实软件 也是这样,提供界面接受用户的输入,根据逻辑进行处理,把结果反馈给用户,无论是普通 的软件还是游戏都是这样。 l 计算机为什么是二进制的? 众所周知,现在的计算机都是以二进制存储和运算数据的,那么为什么是二进制而不是常见 的十进制呢? 原因很简单,因为现在的计算机是电子计算机,内部只有两个状态,所以就依据这两个状态 创建了一种新的进制形式――二进制。这样极大的简化了电子计算机的结构,可以用电流的 有无、光线的有无以及磁性的有无等状态来实现数学上的二进制。数学上用 0 和 1 来分别代 表这两个状态罢了。 当然,随着科学的发展,以后计算机不再是电子计算机了,那么二进制也可能就消失了。 l 计算机存储单位 既然计算机是电子计算机了, 那么存储的最小单位就是一个二进制位, 英语是 bit, 简写成 b。 一位只有 2 个值,0 或者 1。 由于位的单位太小,所以就设计了另外一个概念――字节,英语是 byte,简写成 B。规定 1 个字节是 8 位,即 1B=8b。比如大家接触的 8 位机、16 位机等等,就是指 CPU 一次处理的最 小的数据单位。 再大点的单位就依次是 KB、 GB 和 TB 了, MB、 他们之间的进制都是 2 的 10 次方, 也就是 1024, 也就是 1KB=1024B,1MB=1024KB。 这里简单的说一个实际问题,大家买硬盘的时候,比如 160GB,这里厂商使用的进制是 1000, 而不是 1024,所以 160 个 GB 格式化以后就大概只有: (160 X
X1000) / 24 = 149GBJava 编程那些事儿 7――进制的概念 作者:陈跃峰 出自:http://blog.csdn.net/mailbomb 1.2 进制的概念 因为不可能为每个数值都创造一个符号,所以需要用基本数字组合出复合的数值, 这样就有了进制的概念。 其实所有进制都是人为的创造, 都是用来计数方便的。 现在最常用的进制是十进制, 当然其它的进制也在使用中。例如“半斤八两”这个成语,就反映了古代一斤等于十六两的 概念,也就是十六进制计数方式。 计算机编程中常用的进制有二进制、八进制、十进制和十六进制,十进制还是最主 要的表达形式。在编程中,大家书写的数值默认为十进制。 对于进制,有两个最基本的概念:基数和运算规则。 l 基数 基数指一种进制中组成的基本数字,也就是不能再拆分的数字。例如十进制是 0-9,二进制 是 0 和 1,八进制是 0-7,十六进制是 0-9,A-F(大小写均可)。或者可以简单的这样记忆, 假设是 n 进制的话, 基数就是[0,n-1]的数字, 基数的个数和进制值相同, 十进制有十个基数, 依次类推。 l 运算规则 运算规则就是进位或借位规则,这个类似于一般计算机书籍中位权的概念,例如对于十进制 来说,该规则是“满十进一,借一当十” ,也就是低位的数字满十了向高位进一,从高位借到 的一,相当于低位上的十。其它的进制也是这样,对于二进制来说,就是“满二进一,借一 当二” ,八进制和十六进制也是这样。 在数学上表示一个数字是几进制, 通常使用如下格式: [数值]进制数, 例如[10]2 表 示二进制数值 10。 1.2.1 二进制 二进制是计算机内部数据表示的形式, 所以学习计算机编程必须熟悉二进制。 熟悉 二进制有以下几个用途: l 更容易理解计算机的数据存储方式 计算机内部的很多转换,例如数据类型之间的强转,都可以用二进制解释最终的结果的值。 l 二进制的运算速度高 二进制的运算速度比十进制高的多。例如求 2 的 n 次方,通过移位实现的效率比数学方法高 效。 l 使用二进制数值进行数据存储 以二进制的形式存储数值,一个是比较节约资源,可以使用二进制的位来存储信息,例如常 见的硬件控制信息,都是二进制的形式进行提供的。 如前所述,二进制包含 0 和 1 两个基数,运算规则是“满二进一,借一当二” ,下 面简单的介绍一下二进制的计数方式。 例如十进制的 0-9 用二进制进行表达,则依次是: 0,1,10,11,100,101,110,111, 说明:数值之间使用逗号进行间隔。 下面是二进制的一些基本运算结果: l 加法运算 0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 10 l 减法 0 C 0 = 0 0 C 1 = -1 1 C 0 = 1 1 C 1 = 0 l 乘法 0 × 0 = 0 0 × 1 = 0 1 × 0 = 0 1 × 1 = 1 l 除法 0 / 0 无意义 0 / 1 = 0 1 / 0 无意义 1 / 1 = 1 以下是一些符合的表达式: 110 + 111 = 1101 这些基本的运算结构在实际开发中一般不会直接用到, 但是通过这些内容可以加深 对于二进制概念的理解。 1.2.2 二进制和十进制之间的转换 由于计算机内部的数据是以二进制进行表达的, 而十进制又是日常生活中最常用的 进制,所以它们之间经常需要进行转换。下面介绍一下转换的方式。 1.2.2.1 十进制转换为二进制 十进制整数转换为二进制有三种方法,分别是除二取余、计算器转换和经验法。十 进制小数的转换方法最后做简单的介绍。 1. 除二取余法 除二取余法是转换时的最基本方法,也是最通用的方法。规则为:使用十进制和 2 去除,取 每次得到的商和余数,用商继续和 2 相除,直到商为零为止,第一次得到的余数作为二进制 的低位, 最后一次得到的余数作为二进制的高位, 由余数组成的数字就是转换后二进制的值。 例如十进制的 13 转换为二进制的计算步骤如下: 商 余数 13 / 2 = 6 1 6 / 2 = 3 0 3 / 2 = 1 1 1 / 2 = 0 1 则计算的最终结果就是 1101。 2. 计算器转换 Windows 操作系统中的计算器也可以很方便的实现进制之间的转换。在程序菜单中附件子菜 单中打开计算器,从打开的计算器的查看菜单中,选择“科学型” ,输入你要转换的十进制的 数字,例如 13,然后界面上数字显示框西侧的“二进制“,则转换后的数值就直接显示在计 算器中。 3. 经验法 对于二进制熟悉以后,那么计算十进制对应的数字可以通过一些基本的数学变换来实现,在 使用经验法以前,必须熟记 2 的 0-10 次方对应的十进制的值,依次是: 1,2,4,8,16,32,64,128,256,512,1024 则转换一些特殊的数字时可以极大的提高转换速度,例如数字 65,则可以这样转换: 65 = 64 + 1 64 对应的二进制形式为
对应的二进制形式为 1 则 65 的二进制形式为 1000001 这个只适合转换一些特殊的数字,适应性没有除二取余法广泛。 十进制小数的转换采用的一般方法是乘二取整法,规则为:对于小数部分先乘二, 然后获得运算结果的整数部分, 然后将结果中的小数部分再次乘二, 直到小数部分为零为止, 则把第一次得到的整数部分作为二进制小数的高位,后续的整数部分作为地位就是转换后得 到的二进制小数。需要说明的是,有些十进制小数无法准确的用二进制进行表达,所以转换 时符合一定的精度即可,这也是为什么计算机的浮点数运算不准确的原因。 例如 0.25 转换为二进制小数的步骤如下: 整数部分 0.25 × 2 = 0.5 0 0.5 × 2 = 1.0 1 则 0.25 转换为二进制小数为 0.01 如果一个十进制数字既有整数部分,也有小数部分,则分开进行转换即可。 1.2.2.2 二进制转换为十进制 二进制转换为十进制采用的方法是: 数字乘位权相加法。 下面先以十进制为例来说 明该方法,例如十进制数字 345 的值,5 的位权是 1,4 的位权是 10,3 的位权是 100,则有 如下表达式成立: 345=5 × 1 + 4 × 10 + 3 × 100,这就是数字乘位权相加法的原理。 其实对于十进制整数的位权很有规则,从右向左第 n 位的位权是十的(n-1)方,例 如个位是 10(1-1),十位是 10(2-1),依次类推。那么二进制整数的位权规律和这个一致,也 就是从右向左第 n 位的位权是二的(n-1)方。 例如二进制整数 1011 转换为十进制的表达式为: [1011]2 = 1 × 20 + 1 × 21 + 0 × 22 + 1 × 23 = 1 + 2 + 0 + 8=11 而对于二进制的小数,也是采用一样的方法,只是二进制小数的位权规则为,小数 点后第一位小数的位权是 2 的-1 次方,第二位是 2 的-2 次方,依次类推。 例如二进制小数 0.1101 转换为十进制小数的表达式为 [0. ×2-1 + 1 ×2-2 + 0 × 2-3 + 1 × 2-4 = 0.5 + 0.25 + 0 + 0.5 同理,如果二进制包含整数和小数部分,则分开进行转换即可。 1.2.3 二进制和八进制、十六进制之间的转换 虽然二进制是计算机内部的数据表达形式, 但是由于二进制基数太少, 则导致数字 比较长,为了简化数字的书写,就创建了八进制和十六进制。八进制和十六进制就是对二进 制的简化,所以二进制到八进制和十六进制的转换非常简单。 二进制整数转换为八进制的方法是“三位一并“,也就是从右侧开始,每 3 位二进 制数字转换为八进制的一位,依次类推,因为二进制的三位数字可以表达的区间是 000-111, 刚好和 0-7 重合。例如: 二进制的 10111 转换为 8 进制为: 最后三位 111 转换为 7, 前面的数字 10 转换为 2, 则转换后得到的八进制数字为 27。 二进制整数转换为十六进制的方法是“四位一并“,例如 10111 转换为十六进制是 0111 转换为 7,1 转换为 1,则转换后得到的十六进制数字是 17。 二进制小数转换为八进制的方法也是 “三位一并 只是转换时从小数的高位开始, “, 也就是小数的左侧开始。例如 0.10111 转换为八进制是 101 转换为 5,110 转换为 6,则转换 得到的八进制小数为 0.56。需要特别注意的是,小数最后如果不足三位,一定要在后续补零 以后再进行转换。 二进制小数转换为十六进制的方法也是“四位一并” ,只是转换时从小数的高位开 始。例如二进制小数 0.10111 转换为十六进制小数为,1011 转换为 b,1000 转换为 8,则转 换后得到的十六进制是 0.b8。 如果二进制数包含整数和小数部分,则分开进行转换。Java 编程那些事儿 8――计算机内部的数据表达 作者:陈跃峰 出自:http://blog.csdn.net/mailbomb 1.3 计算机内部的数据表达 计算机内部数据表达的总原则就是:把一切内容数值化、数字化。这个也是编程时 处理数据的基本方式,对于编程理解的越深入,则将越认同该原则。 其实计算机也只能这样, 因为计算机内部只能存储 0 和 1 两个数字, 所以必须把指 令、数据、图片、文本等各种各样的内容数字化成 0 和 1 进行存储、传输和显示。 1.3.1 整数的表达 整数有正负之分,但是计算机内部只能存储 0 和 1,则计算机内部将符号数字化, 用二进制码的最高位代表符号位,规定该位为 0 代表正,1 代表负。这就是符号数字化的规 定。 前面介绍过整数在计算机内部都是以二进制的形式保存的。 但是为了计算方便, 以及简化 CPU 的结构,所以在存储和运算时都采用补码的形式。 前面介绍的那些直接计算出来的二进制形式, 都称作整数的原码。 规定正数的原码、 反码和补码都是自身。 而对于负数,仔细研究一下其组成格式。以 8 位机为例,也就是一个数字占计算机 中的 8 位,也就是一个字节,用最高位存储符号位,其它的位存储数值。例如-8 的原码是 ,最高位的 1 代表负数,后续的 7 位代表数值。 负数的反码是指符号位不变,其他的位取反,也就是 0 变 1,1 变 0,则-8 的反码 是 。 负数的补码是指在反码的数值位上加 1,运算后得到的结果,只计算数值位,不改 变符号位。则-8 的补码是 ,该次运算中,低位向高位进行了进位。 规律:补码的补码等于负数的原码。 也就是对负数的补码再求补,则得到的负数的原码。 熟悉整数的表达,对于后续理解数据的区间以及进行强制转换以后得到的数值很有帮助,也 是进行位运算的基础。 备注:小数,编程语言中称浮点数,的存储形式和整数不同。 1.3.2 字符的表达 字符指计算机内部单个的符号,如标点符号、英文字母和汉字等等。因为这些字符 种类各异,计算机无法直接表达,那么就采用了计算机编程中也常用的方式,对每个字符进 行编号,例如规定 a 字符编号为 97,b 字符编号为 98 等等。 由于需要编号的字符很多, 就专门规定了一系列字符和编号的对应规则, 那么这些 对应表就被称作字符集,常见的字符集有 ASCII、GB2312、BIG5 等。 在计算机内部存储、运算和传输时,都只需要使用该编号即可。 字符集比较完美的解决了字符的存储和传输的问题。 所以字符在程序内部可以参与运算, 其实参与运算的就是这个字符的编号, 字符集 规律是很多字符变换逻辑实现的基础。 备注:字符的显示则通过专门的字符显示码实现。 1.3.3 总结 其实计算机内部所有的东西都是以数字的形式存储的, 这里只是希望通过这两种简 单的结构,使大家了解将数据数字化的思想,这是编程时常用的思想之一。Java 编程那些事儿 9――网络编程基础 作者:陈跃峰 出自:http://blog.csdn.net/mailbomb 对于初学者,或者没有接触过网络编程的程序员,会觉得网络编程涉及的知识很高深,很难, 其实这是一种误解,当你的语法熟悉以后,其实基本的网络编程现在已经被实现的异常简单 了。 1.4.1 网络编程是什么? 网络编程的本质是两个设备之间的数据交换,当然,在计算机网络中,设备主要指 计算机。数据传递本身没有多大的难度,不就是把一个设备中的数据发送给两外一个设备, 然后接受另外一个设备反馈的数据。 现在的网络编程基本上都是基于请求/响应方式的,也就是一个设备发送请求数据 给另外一个,然后接收另一个设备的反馈。 在网络编程中,发起连接程序,也就是发送第一次请求的程序,被称作客户端 (Client),等待其他程序连接的程序被称作服务器(Server)。客户端程序可以在需要的时候 启动,而服务器为了能够时刻相应连接,则需要一直启动。例如以打电话为例,首先拨号的 人类似于客户端,接听电话的人必须保持电话畅通类似于服务器。 连接一旦建立以后, 就客户端和服务器端就可以进行数据传递了, 而且两者的身份 是等价的。 在一些程序中,程序既有客户端功能也有服务器端功能,最常见的软件就是 BT、 emule 这类软件了。 下面来谈一下如何建立连接以及如何发送数据。 1.4.2 IP 地址和域名 在现实生活中, 如果要打电话则需要知道对应人的电话号码, 如果要寄信则需要知 道收信人的地址。在网络中也是这样,需要知道一个设备的位置,则需要使用该设备的 IP 地址,具体的连接过程由硬件实现,程序员不需要过多的关心。 IP 地址是一个规定,现在使用的是 IPv4,既由 4 个 0-255 之间的数字组成,在计 算机内部存储时只需要 4 个字节即可。在计算机中,IP 地址是分配给网卡的,每个网卡有一 个唯一的 IP 地址,如果一个计算机有多个网卡,则该台计算机则拥有多个不同的 IP 地址, 在同一个网络内部,IP 地址不能相同。IP 地址的概念类似于电话号码、身份证这样的概念。 由于 IP 地址不方便记忆,所以有专门创造了域名(Domain Name)的概念,其实就是 给 IP 取一个字符的名字,例如 、 等。IP 和域名之间存在一定的对应关系。 如果把 IP 地址类比成身份证号的话,那么域名就是你的姓名。 其实在网络中只能使用 IP 地址进行数据传输,所以在传输以前,需要把域名转换 为 IP,这个由称作 DNS 的服务器专门来完成。 所以在网络编程中,可以使用 IP 或域名来标识网络上的一台设备。 1.4.3 端口的概念 为了在一台设备上可以运行多个程序, 人为的设计了端口(Port)的概念, 类似的例 子是公司内部的分机号码。 规定一个设备有 216 个,也就是 65536 个端口,每个端口对应一个唯一的程序。每 个网络程序,无论是客户端还是服务器端,都对应一个或多个特定的端口号。由于 0-1024 之间多被操作系统占用,所以实际编程时一般采用 1024 以后的端口号。 使用端口号,可以找到一台设备上唯一的一个程序。 所以如果需要和某台计算机建立连接的话,只需要知道 IP 地址或域名即可,但是 如果想和该台计算机上的某个程序交换数据的话,还必须知道该程序使用的端口号。 1.4.4 数据传输方式 知道了如何建立连接,下面就是如何传输数据了,先来看一下数据传输的方式。 在网络上,不管是有线传输还是无线传输,数据传输的方式有两种: &!--[if !supportLists]--&l &!--[endif]--&TCP(Transfer Control Protocol)传输控制协议方式,该传输方式是一种稳定可靠的传送方式,类似于显示中的打电话。只需 要建立一次连接,就可以多次传输数据。就像电话只需要拨一次号,就可以实现一直通话一 样,如果你说的话不清楚,对方会要求你重复,保证传输的数据可靠。 使用该种方式的优点是稳定可靠,缺点是建立连接和维持连接的代价高,传输速度不快。 &!--[if !supportLists]--&l &!--[endif]--&UDP(User Datagram Protocol)用户数据报协议方式,该传输方式不建立稳定的连接,类似于发短信息。每次发送数据都直 接发送。发送多条短信,就需要多次输入对方的号码。该传输方式不可靠,数据有可能收不 到,系统只保证尽力发送。 使用该种方式的优点是开销小,传输速度快,缺点是数据有可能会丢失。 在实际的网络编程中, 大家可以根据需要选择任何一种传输方式, 或组合使用这两 种方式实现数据的传递。 1.4.5 协议的概念 协议(Protocol)是网络编程中一个非常重要的概念, 指的是传输数据的格式。 因为 大家在网络中需要传输各种各样的信息,在程序中获得到的都是一组数值,如何阅读这些数 值呢,就需要提前规定好这组数据的格式,在客户端按照该格式生成发送数据,服务器端按 照该格式阅读该数据,然后在按照一定的格式生成数据反馈给客户端,客户端再按照该格式 阅读数据。现实中类似的例子就是电报编码,每个数字都是用特定的数据表达。 一般程序的协议都分成客户端发送的数据格式, 以及服务器端反馈的数据格式, 客 户端和服务器端都遵循该格式生成或处理数据,实现两者之间的复杂数据交换。 1.4.6 小结 网络编程就是使用 IP 地址,或域名,和端口连接到另一台计算机上对应的程序, 按照规定的协议(数据格式)来交换数据,实际编程中建立连接和发送、接收数据在语言级已 经实现,做的更多的工作是设计协议,以及编写生成和解析数据的代码罢了,然后把数据转 换成逻辑的结构显示或控制逻辑即可。 需要了解更多的网络编程的知识,建议阅读《JAVA2 网络协议内幕》一书。Java 编程那些事儿 10――Java 语言简介Java 编程那些事儿 11――JDK 的安装、配置和使用 作者:陈跃峰 出自:http://blog.csdn.net/mailbomb 第二章 建立开发环境 “工欲善其事,必先利其器” 。 进行程序开发,首先要安装开发相关的软件,并且熟悉这些工具软件的基本使用。 本章介绍一下两类开发工具的使用: l 基础开发工具 基础开发工具是进行程序设计的基础,包含开发中需要的一些基本功能,例如编译、运行等, 是其它开发工具的基础。 Java 语言的基本开发工具是 SUN 公司免费提供的 JDK。 实际开发中,为了方便和程序开发的效率,一般不直接使用基础开发工具,所以对于很多基 础开发工具,只需要掌握其基本的使用即可。 l 集成开发环境(IDE) 集成开发环境是指将程序设计需要的很多功能,例如代码编辑、代码调试、程序部署等等一 系列功能都整合到一个程序内部,方便程序开发,并提高实际的开发效率,简化了程序设计 中的很多操作。 Java 语言的集成开发环境很多,常见的有 Eclipse、JBuilder、NetBeans 等等。 由于实际开发中,基本都是使用集成开发环境进行开发,所以在学习中必须熟练掌握该类工 具的使用。 一般集成开发环境的使用都很类似,在学习时只要熟练掌握了其中一个的使用,其它的工具 学习起来也很简单。 本文以 Eclipse 为例来介绍集成开发环境的基本使用。 2.1 JDK 开发环境 JDK(Java Developer’s Kit),Java 开发者工具包,也称 J2SDK(Java 2 Software Development Kit),是 SUN 公司提供的基础 Java 语言开发工具,该工具软件包含 Java 语言 的编译工具、运行工具以及执行程序的环境(即 JRE)。 JDK 现在是一个开源、免费的工具。 JDK 是其它 Java 开发工具的基础,也就是说,在安装其它开发工具以前,必须首 先安装 JDK。 对于初学者来说,使用该开发工具进行学习,可以在学习的初期把精力放在 Java 语言语法的学习上,体会更多底层的知识,对于以后的程序开发很有帮助。 但是 JDK 未提供 Java 源代码的编写环境,这个是 SUN 提供的很多基础开发工具的 通病,所以实际的代码编写还需要在其它的文本编辑器中进行。其实大部分程序设计语言的 源代码都是一个文本文件,只是存储成了不同的后缀名罢了。 常见的适合 Java 的文本编辑器有很多,例如 JCreator、Editplus、UltraEdit 等。 下面依次来介绍 JDK 的下载、安装、配置和使用。 2.1.1 JDK 的获得 如果需要获得最新版本的 JDK,可以到 SUN 公司的官方网站上进行下载,下载地址 为: /javase/downloads/index.jsp 下载最新版本的“JDK 6 Update 6” ,选择对应的操作系统,以及使用的语言即可。 在下载 Windows 版本时,有两个版本可供下载,,分别是: l Windows Online Installation 在线安装版本,每次安装时都从网络上下载安装程序,在下载完成以后,进行实际的安装。 l Windows Offline Installation 离线安装版本,每次安装时直接进行本地安装。 通常情况下,一般下载离线安装版本。 其实如果不需要安装最新版本的话, 也可以在国内主流的下载站点下载 JDK 的安装 程序,只是这些程序的版本可能稍微老一些,这些对于初学者来说其实问题不大。 2.1.2 JDK 的安装 Windows 操作系统上的 JDK 安装程序是一个 exe 可执行程序,直接安装即可,在安 装过程中可以选择安装路径以及安装的组件等,如果没有特殊要求,选择默认设置即可。程 序默认的安装路径在 C:\Program Files\Java 目录下。 2.1.3 JDK 的配置 JDK 安装完成以后,可以不用设置就进行使用,但是为了使用方便,一般需要进行 简单的配置。 由于 JDK 提供的编译和运行工具都是基于命令行的, 所以需要进行一下 DOS 下面的 一个设定,把 JDK 安装目录下 bin 目录中的可执行文件都添加到 DOS 的外部命令中,这样就 可以在任意路径下直接使用 bin 目录下的 exe 程序了。 配置的参数为操作系统中的 path 环境变量,该变量的用途是系统查找可执行程序 所在的路径。 配置步骤为: 1、 “开始”&“设置”&“控制面板”&“系统” 如果控制面板的设置不是经典方式,那么可以在控制面板的“性能和维护”中找到“系统” 。 当然,也可以选择桌面上的“我的电脑” ,点击鼠标右键,选 择“属性”打开。 2、在“系统属性”窗口中,选择“高级”属性页中的“环境变量”按 钮。 3、在“环境变量”窗口中,选择“系统变量”中变量名为“Path”的环境变量,双击该变量。 4、把 JDK 安装路径中 bin 目录的绝对路径,添加到 Path 变量的值中,并使用半角的分号和 已有的路径进行分隔。 例如 JDK 的安装路径下的 bin 路径是 C:\Program Files\Java\jdk1.6.0_04\bin,则把该路 径添加到 Path 值的起始位置, 则值为: C:\Program Files\Java\jdk1.6.0_04\C:\Program Files\PC Connectivity Solution\;C:\Program Files\Java\jdk1.6.0_04\C:\j2sdk1.4.2_11\%SystemRoot%\system32;%SystemRoo t%;%SystemRoot%\System32\Wbem 以上路径在不同的计算机中可能不同。 配置完成以后,可以使用如下格式来测试配置是否成功: 1、 打开“开始”&“程序”&“附件”&“命令提示符” 2、 在“命令提示符”窗口中,输入 javac,按回车执行 如果输出的内容是使用说明,则说明配置成功。 如果输出的内容是“’javac’不是内部或外部命令,也不是可执行的程序或批处理文件。, ” 则说明配置错误,需要重新进行配置。 常见的配置错误为: 1) 路径错误,路径应该类似 C:\Program Files\Java\jdk1.6.0_04\bin。 2) 分隔的分号错误,例如错误的打成冒号或使用全角的分号。Java 编程那些事儿 12――第一个 HelloWorld 程序Java 编程那些事儿 13――Eclipse 基本使用 作者:陈跃峰 出自:http://blog.csdn.net/mailbomb 2.2 Eclipse 使用 Eclipse 是一个开源、免费的集成开发工具。 Eclipse 是实现开发中的主流开发工具之一,熟练使用该工具将在学习,以及以后 的实际开发中让你如虎添翼。 如果把程序员类比成军队中的士兵的话, 那么集成开发工具就是你手中的枪, 你要 对它足够的熟悉,并且足够熟练的使用它。 对于开发工具的学习,需要在学习中使用,在使用中学习。 2.2.1 Eclipse 的获得 Eclipse 的安装程序可以从其官方网站上免费下载,地址为: http://www.eclipse.org 在下载时选择“Eclipse Classic”下载即可,其最新版本为 3.3.2。 需要注意的是, 在现在时一定要下载 SDK, 而且根据你的操作系统选择对应的版本, 例如 Windows 平台上的文件默认是 eclipse-SDK-3.3.2-win32.zip。 以下为 Windows 操作系统为例子来介绍 Eclipse 的安装。 2.2.2 Eclipse 的安装 Eclipse 是一个使用 Java 语言开发的工具软件,所以在安装 Eclipse 以前,一定 要安装 JDK,其中 Eclipse3.3.2 要求安装的 JDK 版本在 1.5 及以上。 Eclipse 的安装很简单,只需要解压缩安装文件即可,解压缩的文件没有限制,可 以根据实际使用的需要解压缩到任意路径下。 2.2.3 Eclipse 基本使用 Eclipse 安装完成以后, 选择 Eclipse 安装目录下的 eclipse.exe 即可启动该软件。 2.2.3.1 工作空间设置 第一次启动 Eclipse 时,会弹出一个标题为“Workspace Launcher”的窗口,该窗 口的功能是设置 Eclipse 的 workspace(工作空间)。 workspace 是指 Eclipse 新建的内容默认 的保存路径,以及 Eclipse 相关的个性设置信息。该窗口中“Workspace”输入框中是需要设 置的路径, 可以根据个人的需要进行设置, 下面的 “Use this as default and do not ask again” 选择项的意思是:使用这个作为默认设置,以后不要再询问,选中以后的效果是:1、下次启 动时不再弹出该窗口,2、把这个设置作为默认设置,不选中该选择项则每次启动时都弹出该 窗口。设置完成以后,选择“OK”按钮,就可以启动 Eclipse 了。 2.2.3.2 显示主界面 Eclipse 第一次启动起来以后,会显示一个欢迎界面,选择左上角“Welcome”右 侧的“X”关闭欢迎界面,就可以看到 Eclipse 的主界面了。 欢迎界面只显示一次,以后只有在变更了工作空间以后才可能会再次显示。 关于 Eclipse 界面的布局方式, 这里暂不介绍, 因为介绍时不可避免的要用到一些 后续要学到的专业术语,这里先简单介绍一下其使用方式,至于界面的布局方式这个在使用 中逐渐去熟悉。 2.2.3.3 Eclipse 基本使用 集成开发环境(IDE)的使用相对来说稍显繁琐,但是对于实际的项目开发来说却是 非常实用的,在初次使用时,需要习惯和适应这种使用方式。 集成开发环境在使用前, 需要首先建立 Project(项目), Project 是一个管理结构, 管理一个项目内部的所有源代码和资源文件,并保存和项目相关的设置信息。 一个项目内部可以有任意多个源文件,以及任意多的资源。 使用 Eclipse 的基础步骤主要有如下这些: l 新建项目 l 新建源文件 l 编辑和保存源文件 l 运行程序 2.2.3.3.1 新建项目 新建项目的步骤如下: 1、 选择菜单“File”&“New”&“Java Project” 2、 在“New Java Project”窗口中,进行新建项目的设定,例如输入 Test “Project Name” 是必须输入的内容, 代表项目名称, 在硬盘上会转换成一个文件夹的名称。 “Content”设置项目的内容。 “JRE”部分设置项目使用的 JDK 版本。 “Project layout”部分设置项目文件内部的目录结构。 3、 选择“Finish”按钮完成设置 项目建立以后,可以到磁盘对应路径下观察一下项目文件夹的结构。 2.2.3.3.2 新建源文件 项目建立以后,或者打开项目以后,就可以新建源文件了。 一个项目中可以包含多个源文件,每个源文件都可以独立执行。 新建源文件的步骤为: 1、 选择菜单“File”&“New”&“Class” 2、 在“New Java Class”向导中,进行新建源文件的设定 “Source folder”代表源代码目录,例如“test/src” ,如果该内容和项目保持一致则不需 要修改,否则可以选择后续的“Browse…”按钮进行修改。 “Name”代表源文件的名称,例如输入 Hello。 “public static void main(String[] args)”选项代表在生成的源代码中包含该代码,选 中该设置。 3、 选择“Finish”按钮完成设置,则 Eclipse 将自动生成符合要求的源代码,并在 Eclipse 环境中打开。 生成的代码如下: publicclass Hello { /** *@paramargs */ publicstaticvoid main(String[] args) { // TODO Auto-generated method stub } } 2.2.3.3.3 编辑和保存源文件 可以把其中的用于说明的注释内容删除, 并添加输出字符串的代码, 则代表变为如 下内容: publicclass Hello { publicstaticvoid main(String[] args) { System.out.println(&Hello World!&); } } 选择工具栏的保存按钮,或者按 Ctrl+S 组合键保存源文件,在源文件保存时,Eclipse 会自动编译该代码,如果有语法错误,则以红色波浪线进行提示。 2.2.3.3.4 运行程序 运行程序的方法为:选择源代码空白处,点击右键,选择“Run as”&“1 Java Application” 即可运行, 当然, 你也可以选择 Eclipse 左侧你需要运行的文件名, 点击右键, 也可以找到一样的菜单进行运行。 这样,程序的运行结果就显示在该界面中了。Java 编程那些事儿 14――Eclipse 基础使用进阶 作者:陈跃峰 出自:http://blog.csdn.net/mailbomb 2.2.4 Eclipse 基础使用进阶 熟悉了 Eclipse 基本的使用以后, 下面再补充一下 Eclipse 其它常见的操作, 主要 包含以下一些技巧: l 分类项目目录 l 打开项目 l 添加 JDK l 添加源代码 l 快捷键速查 2.2.4.1 分类项目目录 在默认的 Eclipse 项目目录下, 源代码和 class 文件都存储在项目根目录下, 这样 项目目录显得比较凌乱,可以通过以下设置来设置项目目录的结构: 菜单 “Window”“Preferences…”“Java”“Build Path” 选择右侧的 & & & , “Folders” 选项,设置“Source folder name”源代码目录名称为 src, “Output folder name”输出目 录名称为 classes,选择“OK”按钮完成设置。 这样在新建 eclipse 项目时, 将在项目目录下自动新建 src 和 classes 这两个文件 夹,并将新建的源代码文件默认存储在项目目录下的 src 目录中,将生成的 class 文件默认 存储在项目目录下的 classes 目录中。 2.2.4.2 打开项目 在日常的使用中,经常需要打开已有的项目,在 eclipse 中打开已有的 eclipse 项目的操作步骤为: 菜单“File”&“Import”&“General”&“Existing Projects into Workspace” , 选择“Next”按钮打开导入窗口,选择“Select root directory”后面的“Browse…”按钮 选择项目的根目录,此时项目名称会现在导入窗口下面的空白区域内,选择“Finish”按钮, 即可完成打开项目的操作。 2.2.4.3 添加 JDK 默认的 Eclipse 中只集成一个 JDK,如果在新建项目时需要不同版本的 JDK,则需 要首先在 Eclipse 中集成对应的 JDK,然后才可以在新建项目时进行选择。 添加新的 JDK 到 Eclipse 中的步骤如下: 菜单“Window”&“Preferences…”&“Java”&“Installed JREs” ,选择右侧的 “Add”按钮,然后选择弹出窗口中的“JRE home directory”后的“Browse…”按钮选择需 要添加的 JDK 安装目录的根目录,例如 C:\j2sdk1.4.2_11,选择“OK”完成添加即可。 2.2.4.4 添加源代码 将已有的 java 源代码添加到已有的项目中, 这样才可以在 eclipse 中运行该程序, 添加的步骤为: 1、 复制该文件,而非该文件的内容 2、 选择 Eclipse 界面左侧的项目列表中, 对应项目的源代码目录, 例如 Hello 项目下的 src 目录 3、 选择 ctrl+v 粘贴即可 2.2.4.5 快捷键速查 为了方便对于 eclipse 的操作,Eclipse 提供了常见快捷键的功能和列表,可以选 择菜单“Help”&“ Key Assist”查看。 2.3 总结 开发环境配置和使用部分就简单的介绍这么, 其实只掌握这些还满足不了实际开发 的要求,还需要在使用中大量的进行学习,并熟练这些工具软件的使用。 Java 编程那些事儿 15――如何学好 Java 语法 作者:陈跃峰 出自:http://blog.csdn.net/mailbomb 第三章 Java 基础语法 学习一个程序语言,首先需要学习该语言的格式,这个格式就是语言的语法。语 法,对于初学者来说,是学习程序最枯燥的地方,因为语法部分需要记忆的内容太多,而且 需要理解很多的知识。 而对于曾经接触过其他程序设计语言的人来说, 学习语法的速度特别快, 主要是因 为语法部分涉及的很多概念已经理解,而且大部分语言的语法格式比较类似。 本章就来详细介绍一下 Java 语言的基础语法, 希望能够通过本章的学习掌握 Java 语言的语法格式。 3.1 如何学好 Java 语法 对于初学者来说,学习 Java 语法是一个长期、艰苦的过程,所以要做好吃苦的准 备,而且语法的学习会随着对于语言理解的加深,而体会到更多设计的巧妙。 语法格式只是学习程序时最基础的知识,在实际的开发中,需要根据程序的需要, 使用恰当的格式去实现程序逻辑,所以语法一定要熟练。 学习语法主要有三种学习方式: l 在理解的基础上记忆 这个是最理想的学习语法的方式,通过这样学习语法会觉得很轻松,而且对于语法的使用也 把握的很准确。 对于这种方式,需要在学习的初期深刻理解语法的功能,体会语法适用的场合,记忆语法的 实现格式。 但是在实际的学习中,由于初学者未接触过开发,很多的概念无法深刻理解,所以很多人还 无法实现使用该方式来进行学习。 l 在记忆的基础上理解 使用这种方式,首先需要记忆住该语法格式,然后在记忆以及后续的练习中逐步体会语法的 用途,这也是大部分初学者学习语法的方式。 通过这种方式学习语法,也可以在一定的锻炼以后成为合格的程序员。 l 在未理解的基础上记忆 这种方式是学习语法是最笨拙的方式, 也是很多很努力学习, 但是无法理解语法格式的学生。 使用这种方式其实没有真正理解语法的格式,而只是生硬的去进行记忆,很多时候还无法灵 活的去运用这些格式,所以学习的效果也打了一定的折扣。 学习语法时,主要需要学习和理解以下这些内容: l 语法的格式 这个必须进行记忆,熟记以后可以提高写代码的速度。 l 语法概念 理解相关的语法概念,例如变量、方法、数组等等 l 语法的用途 语法的适用领域。 l 大量练习 通过大量的练习深刻体会语法的使用。 关于语法的学习就介绍这么多,下面就进入设计巧妙的 Java 语法世界开始正式的 学习了。Java 编程那些事儿 16――代码框架、关键字和标识符 作者:陈跃峰 出自:http://blog.csdn.net/mailbomb 3.2 代码框架 “罗马不是一天建成的” ,所以想只学习几天的语法或者一两周的语法就能很熟练 的编程,是不实际的想法。说个极端的例子,你的英语学了多少年了,能很流利的与人交流 和书写文章吗?当然,就程序语法来说,比英语简单多了。 在开始学习 Java 时, 不可能把所有的语法都一下子介绍清楚, 但是如果需要把程序正确的运 行起来,那么还必须不少的语法知识,为了在学习的初期可以让自己编写的代码编译通过, 并且能够执行,所以特提供一个简单的代码框架,方便大家初期的练习。 代码框架的结构如下: public class 文件名{ public static void main(String[] args){ 你的代码 } } 使用该代码框架时,只需要把“文件名”的位置换成自己的文件名,并且在“你的 代码”的位置写自己的代码即可,使用示例: public class Hello{ public static void main(String[] args){ System.out.println(“Hello world!”); } } 则在该示例代码中, “文件名”被替换成了 Hello, “你的代码”被替换成了 System.out.println(“Hello world!”);,在后续的示例中,给出的代码片段,除非特别说 明,都是应该写在“你的代码”位置的代码,后面就不专门声明了。 3.3 关键字 关键字(keyword), 也称保留字(reserved word), 是指程序代码中规定用途的单词。 也就是说,只要在程序代码内部出现该单词,编译程序就认为是某种固定的用途。 关键字列表及中文解释如下,格式为:关键字(中文解释): abstract(抽象的) continue(继续) for(当…的时候) new(新建) switch(转 换) assert( 断 言 ) default( 默 认 ) if( 如 果 ) package( 打 包 ) synchronized(同步) boolean(布尔) do(做) goto(跳转到) private(私有的) this(这个) break(中断) double(双精度) implements(实现) protected(受保护的) throw(抛出,动 词) byte(字节) else(否则) import(引入) public(公共的) throws(抛出,介词) case(情形) enum(枚举) instanceof(是…的实例) return(返回) transient(瞬时 的) catch(捕获) extends(继承) int(整数) short(短整数) try(尝试) char(字符) final(最终的) interface(接口) static(静态的) void(空的) class( 类 ) finally( 最 终 地 ) long( 长 整 数 ) strictfp( 精 确 浮 点 ) volatile(易变的) const(常量) float(单精度浮点) native(本地的) super(超级的) while(当…的时 候) 说明:其中 goto 和 const 的用途被保留,在语法中未使用到这两个关键字。 在实际学习时,必须牢记关键字的意义以及拼写。 后续学习的语法知识,大部分都是使用关键字和一些符号组成的,关键字的意义基本上就代 表了该种语法格式的用途。 3.4 标识符 标识符,也就是标识的符号,指程序中一切自己指定的名称,例如后续语法中涉及 到的变量名称、常量名称、数组名称、方法名称、参数名称、类名、接口名、对象名等等。 其实程序中除了一些分隔符号,如空格、括号和标点符号以外,只有三类名称: l 关键字 l 系统功能名称 如 System.out.println 中的 System、out 和 println。 l 标识符 对于英语不好的学习者来说,第一类和第二类都是需要熟悉和记忆的,而第三类名称,也就 是标识符,可以由程序开发者自己进行设定。 通常情况下,为了提高程序的可读性,一般标识符的名称和该标识符的作用保持一致。 标识符的命名规则主要有如下几个要求: 1、 不能是关键字 2、 只能以字母、下划线(_)和美元符号($)开头 需要特别注意的是,标识符不能以数字字符开头。 3、 不能包含特殊字符,例如空格、括号和标点符号等等。 通常情况下,标识符一般全部是字母,或者使用字母和数字的组合。Java 编程那些事儿 17――基本数据类型 作者:陈跃峰 出自:http://blog.csdn.net/mailbomb 3.5 基本数据类型 程序中最核心的就是一系列的数据, 或者叫程序状态, 计算机为了方便的管理数据, 就为数据设定了一组类型,这样在为数据分配内存以及操作数据时都比较方便,这就是数据 类型的由来。其实现实生活中也存在各种数据类型,例如数字型,字符型等,数字型又可以 划分为整数型和小数型,只是没有很可以的划分罢了。 在数据类型中,最常用也是最基础的数据类型,被称作基本数据类型。可以使用这 些类型的值来代表一些简单的状态。 3.5.1 概述 学习数据类型的目的就是在需要代表一个数值时,能够选择合适的类型。当然,有 些时候好几种类型都适合,那就要看个人习惯了。 学习数据类型需要掌握每种数据类型的特征, 以及对应的细节知识, 这样会有助于 对类型的选择。所以在初次学习时,需要记忆很多的内容 Java 语言的基本数据类型总共有以下 8 种,下面是按照用途划分出的 4 个类别: l 整数型:byte(字节型)、short(短整型)、int(整型)、long(长整型) l 小数型:float(单精度浮点型)、double(双精度浮点型) l 字符型 l 布尔型 3.5.2 整数型 整数型是一类代表整数值的类型。当需要代表一个整数的值时,可以根据需要从 4 种类型中挑选合适的,如果没有特殊要求的话,一般选择 int 类型。4 种整数型区别主要在 每个数据在内存中占用的空间大小和代表的数值的范围。具体说明参看下表: 整数型参数表 类型名称 关键字 占用空间(字节) 取值范围 默认值 字节型 byte 1 -27―27-1 0 短整型 short 2 -215―215-1 0 整型 int 4 -231―231-1 0 长整型 long 8 -263―263-1 0 说明:1、Java 中的整数都是有符号数,也就是有正有负。 2、 默认值指在特定的情况下才自动初始化, 具体的情况后续将有叙述。 3、程序中的整数数值默认是 int 以及 int 以下类型,如果需要书写 long 型的值,则需要在 数值后面添加字母 L,大小写均可。 4、程序中默认整数是十进制数字,八进制数字以数字字符 0 开头,例 如 016、034 等,十六进制数字以数字字符 0 和字母 x(不区分大小写)开头,例如 0xaf、0X12 等。 3.5.3 小数型 小数型是一类代表小数值的类型。 当需要代表一个小数的值时, 可以根据需要从以 下 2 种类型中挑选合适的。如果没有特殊要求,一般选择 double 类型。 由于小数的存储方式和整数不同, 所以小数都有一定的精度, 所以在计算机中运算 时不够精确。根据精度和存储区间的不同,设计了两种小数类型,具体见下表: 小数型参数表 类型名称 关键字 占用空间(字节) 取值范围 默认值 单精度浮点型 float 4 -3.4E+38―3.4E+38 0.0f 双精度浮点型 double 8 -1.7E+308―1.7E+308 0.0 说明:1、取值范围以科学计数法形式进行描述。 2、在程序中,小数的运算速度要低于整数运算。 3、float 类型的小数,需要在小数后加字母 f,不区分大小写,例如 1.01f。 3.5.4 字符型 字符型代表特定的某个字符, 按照前面介绍的知识, 计算机中都是以字符集的形式 来保存字符的,所以字符型的值实际只是字符集中的编号,而不是实际代表的字符,由计算 机完成从编号转换成对应字符的工作。 Java 语言中为了更加方便国际化,使用 Unicode 字符集作为默认的字符集,该字 符集包含各种语言中常见的字符。 在程序代码中,字符使用一对单引号加上需要表达的字符来标识,例如’A’’a’ 、 等,当然也可以直接使用字符编码,也就是一个非负整数进行表示。 字符型参数表 类型名称 关键字 占用空间(字节) 取值范围 默认值 字符型 char 2 0-216-1 0 说明:1、字符型的编号中不包含负数。 2、字符型由于存储的是编号的数值,所以可以参与数学运算。 3、字符型可以作为 Java 语言中的无符号整数使用。 4、字符型的默认值是编号为 0 的字符,而不是字符 0 3.5.5 布尔型 布尔型代表逻辑中的成立和不成立。 Java 语言中使用关键字 true 代表成立, false 代表不成立。布尔型是存储逻辑值的类型,其实很多程序中都有逻辑值的概念,Java 把逻辑 的值用布尔型来进行表达。 布尔型参数表 类型名称 关键字 占用空间(字节) 取值范围 默认值 布尔型 boolean true 或 false false 说明: 1、布尔型占用的空间取决于 Java 虚拟机(JVM)的实现,可能是 1 位也可能是 1 个字 节。 3.5.6 小结 这里简单的介绍了 8 种基本数据类型的基本特征, 在实际的程序设计中, 可以根据 需要选择对应的类型。 由于 Java 语言是一种强类型的语言,所以在使用数据类型是需要小心。Java 编程那些事儿 18――变量和常量 作者:陈跃峰 出自:http://blog.csdn.net/mailbomb 3.6 变量和常量 在程序中存在大量的数据来代表程序的状态, 其中有些数据在程序的运行过程中值 会发生改变,有些数据在程序运行过程中值不能发生改变,这些数据在程序中分别被叫做变 量和常量。 在实际的程序中, 可以根据数据在程序运行中是否发生改变, 来选择应该是使用变 量代表还是常量代表。 3.6.1 变量 变量代表程序的状态。 程序通过改变变量的值来改变整个程序的状态, 或者说得更 大一些,也就是实现程序的功能逻辑。 为了方便的引用变量的值,在程序中需要为变量设定一个名称,这就是变量名。例 如在 2D 游戏程序中, 需要代表人物的位置, 则需要 2 个变量, 一个是 x 坐标, 一个是 y 坐标, 在程序运行过程中,这两个变量的值会发生改变。 由于 Java 语言是一种强类型的语言,所以变量在使用以前必须首先声明,在程序 中声明变量的语法格式如下: 数据类型 变量名称; 例如: 在该语法格式中,数据类型可以是 Java 语言中任意的类型,包括前面介绍到的基 本数据类型以及后续将要介绍的复合数据类型。变量名称是该变量的标识符,需要符合标识 符的命名规则,在实际使用中,该名称一般和变量的用途对应,这样便于程序的阅读。数据 类型和变量名称之间使用空格进行间隔, 空格的个数不限, 但是至少需要 1 个。 语句使用 “;” 作为结束。 也可以在声明变量的同时,设定该变量的值,语法格式如下: 数据类型 变量名称 = 值; 例如:int x = 10; 在该语法格式中,前面的语法和上面介绍的内容一致,后续的“=”代表赋值,其 中的“值”代表具体的数据。在该语法格式中,要求值的类型需要和声明变量的数据类型一 致。 也可以一次声明多个相同类型的变量,语法格式如下: 数据类型 变量名称 1,变量名称 2,…变量名称 例如:int x,y,z; 在该语法格式中,变量名之间使用“,”分隔,这里的变量名称可以有任意多个。 也可以在声明多个变量时对变量进行赋值,语法格式如下: 数据类型 变量名称 1=值 1,变量名称 2=值 2,…变量名称 n=值 例如:int x = 10,y=20,z=40; 也可以在声明变量时,有选择的进行赋值,例如:int x,y=10,z; 以上语法格式中,如果同时声明多个变量,则要求这些变量的类型必须相同,如果 声明的变量类型不同,则只需要分开声明即可,例如: int n = 3; boolean b = 在程序中, 变量的值代表程序的状态, 在程序中可以通过变量名称来引用变量中存 储的值,也可以为变量重新赋值。例如: int n = 5; n = 10; 在实际开发过程中,需要声明什么类型的变量,需要声明多少个变量,需要为变量 赋什么数值,都根据程序逻辑决定,这里列举的只是表达的格式而已。 3.6.2 常量 常量代表程序运行过程中不能改变的值。 常量在程序运行过程中主要有 2 个作用: l 代表常数,便于程序的修改 l 增强程序的可读性 常量的语法格式和变量类型,只需要在变量的语法格式前面添加关键字 final 即可。在 Java 编码规范中,要求常量名必须大写。 则常量的语法格式如下: final 数据类型 常量名称 = 值; final 数据类型常量名称 1 = 值 1, 常量名称 2 = 值 2,……常量名称 n = 值 例如: final double PI = 3.14; final char MALE=’M’,FEMALE=’F’; 在 Java 语法中, 常量也可以首先声明, 然后再进行赋值, 但是只能赋值一次, 示例代码如下: final int UP; UP = 1; 常量的两种用途对应的示例代码分别如下: l 代表常数 final double PI = 3.14; int r =5; double l = 2 * PI * double s = PI * r * 在该示例代码中,常量 PI 代表数学上的∏值,也就是圆周率,这个是数学上的常数,后续的 变量 r 代表半径,l 代表圆的周长,s 代表圆的面积。 则如果需要增加程序计算时的精度,则只需要修改 PI 的值 3.14 为 3.1415926,重新编译程 序,则后续的数值自动发生改变,这样使代码容易修改,便于维护。 l 增强程序的可读性 final int UP = 1; final int DOWN = 2; final int LEFT = 3; final int RIGHT = 4; 在该示例代码中,变量 direction 代表方向的值,后续的四个常量 UP、DOWN、LEFT 和 RIGHT 分辨代表上下左右,其数值分别是 1、2、3 和 4,这样在程序阅读时,可以提高程序的可读 性。 3.6.3 语句块 在程序中,使用一对大括号{}包含的内容叫做语句块,语句块之间可以互相嵌套, 嵌套的层次没有限制,例如: { } 语句块的嵌套: { { } } 以上代码只是演示语法,没有什么逻辑意义。在后续的语法介绍中,还会有语句块 的概念,就不再重复介绍了。 3.6.4 变量的作用范围 每个变量都有特定的作用范围, 也叫做有效范围或作用域, 只能在该范围内使用该 变量,否则将提示语法错误。通常情况下,在一个作用范围内部,不能声明名称相同的变量。 变量的作用范围指从变量声明的位置开始, 一直到变量声明所在的语句块结束的大 括号为止。例如以下代码: { { int a = 10; a = 2; } } 在该代码中, 变量 a 的作用范围即从第三行到第五行, 变量 c 的作用范围即从第六 行到第七行。 3.6.5 常量的作用范围 常量的作用范围和变量的作用范围规则完全一致。 3.6.6 总结 对于变量和常量的内容就介绍这么, 下面是一个完整的代码, 可以在 JDK 或 Eclipse 中进行编译和运行。代码文件名为 VariableAndConst.java,示例代码如下: public class VariableAndConst{ public static void main(String[] args){ int n = 0; char c = ‘A’; System.out.println(n); n = 10; System.out.println(n); System.out.println(c); } } 说明:在该代码中,System.out.println 的功能是输出变量中存储的值。Java 编程那些事儿 19―数据类型转换 作者:陈跃峰 出自:http://blog.csdn.net/mailbomb 3.7 数据类型转换 Java 语言是一种强类型的语言。强类型的语言有以下几个要求: l 变量或常量必须有类型 要求声明变量或常量时必须声明类型,而且只能在声明以后才能使用。 l 赋值时类型必须一致 值的类型必须和变量或常量的类型完全一致。 l 运算时类型必须一致 参与运算的数据类型必须一致才能运算。 但是在实际的使用中, 经常需要在不同类型的值之间进行操作, 这就需要一种新的 语法来适应这种需要,这个语法就是数据类型转换。 在数值处理这部分,计算机和现实的逻辑不太一样,对于现实来说,1 和 1.0 没有 什么区别,但是对于计算机来说,1 是整数类型,而 1.0 是小数类型,其在内存中的存储方 式以及占用的空间都不一样,所以类型转换在计算机内部是必须的。Java 语言中的数据类型 转换有两种: l 自动类型转换 编译器自动完成类型转换,不需要在程序中编写代码。 l 强制类型转换 强制编译器进行类型转换,必须在程序中编写代码。 由于基本数据类型中 boolean 类型不是数字型,所以基本数据类型的转换是出了 boolean 类型以外的其它 7 种类型之间的转换。下面来具体介绍两种类型转换的规则、适用 场合以及使用时需要注意的问题。 3.7.1 自动类型转换 自动类型转换,也称隐式类型转换,是指不需要书写代码,由系统自动完成的类型 转换。由于实际开发中这样的类型转换很多,所以 Java 语言在设计时,没有为该操作设计语 法,而是由 JVM 自动完成。 l 转换规则 从存储范围小的类型到存储范围大的类型。 具体规则为: byte→short(char)→int→long→float→double 也就是说 byte 类型的变量可以自动转换为 short 类型,示例代码: byte b = 10; short sh = 这里在赋值时,JVM 首先将 b 的值转换为 short 类型,然后再赋值给 sh。 在类型转换时可以跳跃。示例代码: byte b1 = 100; int n = b1; l 注意问题 在整数之间进行类型转换时,数值不发生改变,而将整数类型,特别是比较大的整数类型转 换成小数类型时,由于存储方式不同,有可能存在数据精度的损失。 3.7.2 强制类型转换 强制类型转换,也称显式类型转换,是指必须书写代码才能完成的类型转换。该类 类型转换很可能存在精度的损失,所以必须书写相应的代码,并且能够忍受该种损失时才进 行该类型的转换。 l 转换规则 从存储范围大的类型到存储范围小的类型。 具体规则为: double→float→long→int→short(char)→byte 语法格式为: (转换到的类型)需要转换的值 示例代码: double d = 3.10; int n = (int)d; 这里将 double 类型的变量 d 强制转换成 int 类型,然后赋值给变量 n。需要说明的是小数强 制转换为整数,采用的是“去 1 法” ,也就是无条件的舍弃小数点的所有数字,则以上转换出 的结果是 3。 整数强制转换为整数时取数字的低位, 例如 int 类型的变量转换为 byte 类型时, 则只去 int 类型的低 8 位(也就是最后一个字节)的值。 示例代码: int n = 123; byte b = (byte)n; int m = 1234; byte b1 = (byte)m; 则 b 的值还是 123, b1 的值为-46。 的计算方法如下: 的值转换为二进制是 , 而 b1 m 取该数字低 8 位的值作为 b1 的值,则 b1 的二进制值是 ,按照机器数的规定,最高 位是符号位,1 代表负数,在计算机中负数存储的是补码,则该负数的原码是 ,该 值就是十进制的-46。 l 注意问题 强制类型转换通常都会存储精度的损失,所以使用时需要谨慎。 3.7.2 其它 后续的复合数据类型,如类和接口等,也存在类似的转换。Java 编程那些事儿 20―空白、语句结束和注释 郑州游戏学院 陈跃峰 出自:http://blog.csdn.net/mailbomb 3.8 空白 在前面的内容中, 已经介绍了在编写代码中, 单词和单词之间需要使用空格进行间 隔,至于空格的数量则不限制。 而实际的编码中, 为了使代码的结构清晰, 一般需要在代码的前面加入一定数量的 空格,例如如下格式: public class Blank{ public static void main(String[] args){ { n = 10; } System.out.println(n); } } 在该代码中,除了第一行和最后一行外,每行都包含一定数量的空格,这种编码的 格式称为代码缩进。 在实际代码中,只要存在包含关系,则代码就应该缩进,语句块是最典型的包含关 系之一。说明:在编译时,每行开始的空格都会被忽略掉。 3.9 语句结束 Java 语法中,语句以“;”作为行结束符,例如: int n = 2; 通常情况下,代码中每行只写一句代码,但是也可以写多句,例如: int n = 2; byte b = 10; 但是一般为了代码结构清楚,只在一行中书写一句代码。 有些时候代码本身比较长, 则也可以把一句代码写在多行, 而代码语句结束的地方 书写一个“;”即可。 在实际代码中, 一般大括号开始和结束的地方, 以及大部分小括号结束的地方都不 需要书写“;”来进行结束。 3.10 注释 注释(comment)是对代码功能和用途的说明。在程序中编写适当的注释,将使程序 代码更容易阅读,增强代码的可维护性。 注释在程序编译时都会被忽略,所以注释不会增加 class 文件的大小。 Java 语言中注释的语法有三种:单行注释、多行注释和文档注释。 3.10.1 单行注释 单行注释指只能书写一行的注释。 单行注释属于注释中最简单的语法格式, 用于对 于代码进行简单的说明,例如变量功能等。 单行注释的语法格式为: //注释内容 注释以两个斜线开始,该行后续的内容都是注释的内容,注释内容不能换行。 单行注释一般书写在需要说明的代码的上一行, 或者该行代码的结束处, 示例结构 如下: //循环变量 int i = 0; //性别 3.10.2 多行注释 多行注释指可以书写任意多行的注释。 多行注释一般用于说明比较复杂的内容, 例 如程序逻辑或算法实现原理等。 多行注释的语法格式为: /* 注释内容 */ 注释以一个斜线和一个星号开始,后续是注释内容,注释内容可以书写任意多行, 最后注释以一个星号和一个斜线结尾。 很多多行注释在每行以星号开始,这个不是语法必需的。 3.10.3 文档注释 文档注释指可以被提取出来形成程序文档的注释格式,这是 Java 语言有特色的注 释格式。一般对于程序程序的结构进行说明,例如类、属性、方法和构造方法进行说明,这 些概念在后续将详细介绍。 文档注释的语法格式为: /** 注释内容 */ 注释以一个斜线和两个星号开始,后续是注释内容,注释内容可以书写任意多行, 最后注释以一个星号和一个斜线结尾。 在后续内容中还将完善该注释的语法格式。 3.10.4 其它 在规范的代码中,一般有 10%-20%的注释,也就是每 100 行代码中包含 10-20 行注 释的内容,但是国内很多开发公司都远远达不到这个要求。 另外需要特别注意的是,在实际的项目开发中,在修改代码后,一定要对应的修改 注释的内容,保持代码和注释内容的同步。Java 编程那些事儿 21――算术运算符 郑州游戏学院 陈跃峰 出自:http://blog.csdn.net/mailbomb 第四章 运算符 计算机, 顾名思义, 就是计算的机器, 所以在编程中, 也要进行大量的计算(运算), 运算的符号简称为运算符。 由于计算机可以进行各种运算, 所以提供了很多的运算符号, 这些运算符号一部分 是现实里经常使用的,也有不少是计算机中新增的。 学习运算符, 首先要掌握每种运算的运算规则, 然后在适当的时候使用对应的运算 符。这需要对于运算符最够的熟悉,并具备一定的计算机基础知识。 运算符的种类很多,为了方便学习,以下按照类别来进行介绍。 4.1 算术运算符 算术运算符,也称数学运算符,是指进行算术运算的符号,语法中对应的符号、功 能以及说明参看下表 表 4-1 算术运算符 符号 名称 功能说明 + 加 加法运算 - 减 减法运算 * 乘 乘法运算 / 除 除法运算 % 取余 求两个数字相除的余数 在算术运算符中,+、-、*和/的运算规则和数学基本相同,在四则运算中,乘除优 先于加减,计算时按照从左向右的顺序计算,不同的地方在于: l 程序中乘号不能省略,在数学上可以写 y = 2x,但是程序中必须写成 y=2 *x。 l 运算结果的类型和参与运算的类型中最高的类型一致,例如整数加整数还是整数。影响最 大的是除法,整数除整数结果还是整数,例如 10/3 的结果是 3,而不是 3.333。 接着来说说取余运算符,%的功能是取两个数字相除的余数,例如 10%3 表示计算 10 除以 3 的余数,则结果应该是 1。取余运算在编程中的用途也比较大,比较常见的用途有:控制规 则变化,控制随机数字的区间等。 算术运算符基本使用的示例代码如下: int n = 3 + 5; int a = 10; int b = 20; int c = a * double d = 100.2; double d1 = d + 在算术运算符部分,需要特别注意的一个语法现象是“晋升” 。晋升指低于 int 的 3 种数字类型(byte、short 和 char)进行算术运算后,结果会自动提升成 int 类型。示例代 码如下: byte b1 = 10; byte b2 = 20; byte b3 = b1 + b2; //语法错误,类型不匹配 int n = b1 + b2; //或者 byte b3 = (byte)(b1 + b2); 在程序中使用算术运算符实现程序中的数学运算, 在运算时也可以加入小括号, 和 数学一样,在程序中也是先计算小括号内部的,然后再计算小括号外部的内容,示例代码如 下: int a = 1; int b = 2; int c = 3; int d = c * (a + b) + 另外一个需要注意的就是, 变量在计算时必须被赋值, 否则直接报语法错误, 例如: int m = 2 *Java 编程那些事儿 22―比较运算符 郑州游戏学院 陈跃峰 出自:http://blog.csdn.net/mailbomb 4.2 比较运算符 比较运算符实现数据之间大小或相等的比较。 比较运算符运算的结果是一个 boolean 类型的值,如果比较结果成立则为 true, 否则为 false。 Java 语言中比较运算符的表示和功能见下表 4-2。 表 4-2 比较运算符 符号 名称 功能说明 & 大于 比较左侧数字是否大于右侧数字 & 小于 比较左侧数字是否小于右侧数字 &= 大于等于 比较左侧数字是否大于或等于右侧数字 &= 小于等于 比较左侧数字是否小于或等于右侧数字 == 等于 比较左侧数字是否等于右侧数字 != 不等于 比较左侧数字是否不等于右侧数字 比较运算符的运算规则和现实中的规则一样。需要注意的问题主要有以下几个: l boolean 类型只能比较相等和不相等,不能比较大小。 l &=的意思是大于或等于,两者成立一个即可,所以 5&=5 成立。 l 在数学上表示的区间[1,10),也就是数字大于等于 1 同时小于 10,在程序中不能写成如下 格式:1&=n&10,这种书写在语法上是错误的,如果需要表达这种区间,则参看 4.3 逻辑运算 符实现部分。 l 判断相等的符号是两个等号,而不是一个等号,这个需要特别小心。 比较运算使用的示例代码如下: int a = 10; boolean b = (a & 3); //该条件成立,则将值 true 赋值给变量 b boolean c = (b == true); //条件成立,结果为 true 在实际代码中,数值、变量以及运算结果都可以直接参与比较,只是程序中为了增强可读性, 有些时候需要将比较分开进行书写。 比较运算符是程序设计中实现数据比较的基础,也是很多逻辑实现的基础,在程序逻辑中, 经常通过比较一定的条件,来判断后续的程序该如何执行。Java 编程那些事儿 23―逻辑运算符 郑州游戏学院 陈跃峰 出自:http://blog.csdn.net/mailbomb 4.3 逻辑运算符 逻辑运算符是指进行逻辑运算的符号。 逻辑运算主要包括与(and)、 或(or)和非(not) 三种,在程序中主要用来连接多个条件,从而形成更加复杂的条件。 逻辑运算符的运算结果是 boolean 类型。 参与逻辑运算的数据也必须是 boolean 类型。 关于逻辑运算符的种类和说明参看表 4-3。 表 4-3 逻辑运算符 符号 名称 功能说明 && 逻辑与 两个条件同时为 true 才为 true,否则为 false || 逻辑或 两个条件有一个为 true 则为 true,否则为 false ! 逻辑非 只操作一个数据,对数据取反 逻辑运算符使用示例代码: boolean b1 = boolean b2 = boolean b3 = b1 && b2; //则 b3 的值是 false b3 = b1 || b2; //则 b3 的值是 true b3 = !b1; //则 b3 的值是 false 在实际程序中,可以根据逻辑的需要使用对应的逻辑运算符号。实际使用示例: l 表示变量 n 是否属于[0,10)区间 int n = 4; boolean b = (n &=0) && (n & 10); 对于变量 n 来说,只要 n 同时满足大于等于零,且小于 10,则位于[0,10)区间,由于程序中 无法书写 0&=n&10 这样的条件,则必须通过逻辑运算符进行连接。 l 表示变量 n 不属于[0,10)区间 一种写法是: int n = 4; boolean b = !((n &= 0) && (n & 10)); 这里,对于属于该区间的条件取反,则可以获得不属于该区间的条件。 另一种写法是: int n = 4; boolean b = (n & 0) || (n &= 10); 这里做了一个简单的变通,如果变量 n 不属于该区间,则在数学上只需要满足 n 小于 0 或者 n 大于等于 10 的任何一个条件即可,这样的或者关系在程序中实现时使用逻辑或实现。 在程序设计中,根据逻辑需要,使用对应的逻辑运算符,可以实现相对比较复杂的 组合条件,从而实现对应程序的功能。 最后说一下&&和&的区别,其实在进行逻辑与运算时,既可以使用&&也可以使用&, 在功能上本身没有区别。两者区别的位置在,对于&来说,如果左侧条件为 false,也会计算 右侧条件的值,而对于&&来说,如果左侧的条件为 false,则不计算右侧的条件,这种现象 被称作短路现象。 示例代码: int n = -1; boolean b1 = (n &= 0) && (n & 10); boolean b2 = (n &= 0) & (n & 10); 则对于第二行代码来说,两个条件都将被计算,而对于第三行代码来说,因为 n &= 0 这个条件不成立,则 n & 10 根本不会被执行。当然,两者得到的最终结果是一样的。 对于现在的代码来说,区别不大,但是如果后续的条件是一个方法(方法的概念后 续将介绍到),则将影响程序逻辑。 验证&和&&功能的示例代码如下: public class Test{ public static void main(String[] args){ int n = 10; boolean b = (n & 8) && ((n = 1) != 0); int m = 20; boolean b1 = (m & 8) & ((m = 1) != 0); System.out.println(n); System.out.println(m); } }最后编辑: 修正&和&&}

我要回帖

更多关于 c语言编程错误 的文章

更多推荐

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

点击添加站长微信