第三章 Java的基本程序设计结构
- Java对大小写敏感
- 命名规范为骆驼命名法,不能使用保留字
- main方法必须声明为public
- 如果main方法正常退出,java应用程序的退出代码为0,表示成功运行了程序。如果希望终止程序时返回其他代码,那就需要调用System.exit方法。
- Java通用语法是 object.method(parameter),这等价于函数调用
- System.out.print输出不换行
- 三种注释方式 //、 /* */(不能嵌套)、第三种可以用来自动生成文档
- Java是一种强类型语言,八种基本类型,四种整型,两种浮点型,一种用于表示Unicode编码的字符单元的字符类型char和一种用于表示真值的boolen类型
- byte和short主要用于特定的应用场合,例如,底层文件处理或需要控制占用存储空间量的大数组。
- 数据类型取值固定,所以不会发生整数溢出
- 从java7开始,还可以为字面量加下划线,如用1_000_000表示一百万,编译器会去除下划线
- java中,所有的数值类型所占据的字节数量与平台无关,没有任何无符号类型(unsigned)
- double的数值精度是float的两倍
- 实际上,只有很少的情况适合试用float类型,例如,需要快速地处理单精度数据,或者需要存储大量数据
- float类型的数值有一个后缀F,没有默认为double
- 在JDK5.0中,可以使用十六进制表示浮点数值。例如,0.125可以表示成0x1.0p-3
- 表示溢出和出错的三个特殊的浮点数值:正无穷大、负无穷大、NaN(不是一个数字)。例如,一个正整数除以0的结果为正无穷大。计算0/0或者负数的平方根结果为NaN
- 所有“非数值”的值都认为是不相同的,不能用特定值等于Double.NaN,可以使用Double.isNaN方法
- 浮点数值不是用于禁止出现舍入误差的金融计算中。例如,System.out.println(2.0-1.1)将打印出0.899999999,主要原因为浮点数值采用二进制表示,无法精确表示分数1/10,就像十进制中无法精确表示1/3一样
- 我们强烈建议不要在程序中试用char类型,除非确实需要对UTF-16代码单元进行操作。最好将需要处理的字符串用抽象数据类型表示。
- 在java中,if(x=0)不能通过编译,x=0不能转换为布尔值(整型值和布尔值之间不能进行相互转换)
- 在java,每一种变量属于一种类型,声明变量示例
- 想要知道哪些Unicode字符属于Java中的“字母”,可以使用Character类的isJavaIdentifierStart和isJavaIdentifierPart方法进行检测
- $是一个合法的Java字符,但不要在你自己的代码中使用这个字符,它只用在Java编译器或其他工具生成的名字中。
- 声明一个变量之后,必须用赋值语句对变量进行显示初始化
- 在Java中,不区分声明和定义
- 习惯上,常量名使用全大写
- 在Java中,经常希望某个常量可以在一个类中的多个方法中使用,通常将这些常量称为类常量,可以使用关键字static final设置一个类常量。如果一个常量被声明为public,那么其他类的方法也可是用这个常量
- const是Java保留的关键字,但目前没有使用
- 整数被0除会产生一个异常,浮点数被0除将会得到无穷大或NaN结果
- 如果将一个类标记为strictfp,这个类中的所有方法都要使用严格的浮点计算
- 自增运算符和自减运算符
- 建议不要在其他表达式内部使用++
- &&和||是按照“短路”方式求值的,如果第一个操作数已经能够确定表达式的值,第二个操作数就不必计算了。若x=0,1/x不被计算,也不会出现除以0的错误
- x<y?x:y
- int fourthBitFromRight=(n&0b1000)/0b1000; 如果n是一个整型变量,并且用二进制表示的n从右数第4位为1,返回1,否则0
- int fourthBitFromRight=(n&1<<3)>>3; 当需要建立位模式屏蔽某位时,使用这两个运算符十分方便
- >>>运算符将用0填充高位;>>运算符用符号位填充高位;没有<<<运算符
- Math.sqrt Math.PI Math.E 源文件顶部加 import static java.lang.Math.*; 就不必在数学方法名和常量名前添加前缀“Math.”
- 如果想得到一个完全可预测的结果比运行速度更重要的话,那么就应该使用StrictMath类
- 3个虚箭头,表示可能有精度损失的转换
- 强类型转换
- round方法返回的是long类型
- 如果强类型转换超出目标类型表示范围,结果会截断成一个完全不同的值,(byte)300实际值为44
- 从概念上讲,Java字符串就是Unicode字符序列。
- String类没有修改字符串的方法,如果真的希望改的话
- 下列表达式是合法的
- ==运算符检测两个字符串是否放在同一位置上
- 实际上,只有字符串常量是共享的,而+或substring等操作产生的结果并不是共享的
- isSupplementaryCodePoint(int codePoint) 是Character类的一个boolean型方法,用来确定指定字符(Unicode 代码点)是否在增补字符范围内。 通俗的讲,增补字符集就是在基本数据类型的标准老版本基础上升级之后产生的新字符.增补字符使char拜年的复杂但功能更强大。特别是东南亚市场的商业需求。 如果你使用的Unicode2.0版本,中国的GB18030就属于其增补字符集。 i+=2意味着占2个字节。
读取输入
首先需要构造一个Scanner对象,并与“标准输入流”System.in关联
- 别忘记
现在,已经看到了Java语言的基本程序结构,下一章节将介绍Java中的面向对象的程序设计。