第三章 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中的面向对象的程序设计。

 
 

 
 
 
 
 
 
 
 
 
 

Java核心技术 卷Ⅰ 基础知识(1)的更多相关文章

  1. Java核心技术 卷Ⅰ 基础知识(2)

    第四章 对象与类 基于类的访问权限 静态域 类的设计技巧

  2. Java核心技术 卷Ⅰ 基础知识(7)

    第13章 集合 集合接口 具体的集合 在表中,除了Map结尾的类之外,其他类都实现了Collection接口,而以Map结尾的类实现了Map接口. 链表 数组列表 散列集 树集 双端队列 优先级队列 ...

  3. Java核心技术 卷Ⅰ 基础知识(5)

    第11章 异常.断言.日志和调试 处理错误 异常分类 声明已检查异常 如何抛出异常 创建异常类 捕获异常 捕获多个异常 再次抛出异常与异常链 finally子句 带资源的try语句 分析堆栈跟踪元素 ...

  4. Java核心技术 卷Ⅰ 基础知识(4)

    第六章 接口与内部类 接口 特性 接口与抽象类 对象克隆 接口与回调 内部类 使用内部类访问对象状态 内部类的特殊语法规则 局部内部类 匿名内部类 静态内部类 代理 Class[] in=new Cl ...

  5. Java核心技术 卷Ⅰ 基础知识(3)

    第五章 继承 继承已存在的类就是复用这些类的方法和域.反射是指在程序运行期间发现更多的类及其属性的能力. . 反射 . 使用反射编写泛型数组代码 继承设计的技巧

  6. JAVA核心技术I---JAVA基础知识(工具类Arrays和Collections类)

    一:工具类 –不存储数据,而是在数据容器上,实现高效操作 • 排序 • 搜索 –Arrays类 –Collection类 二:Arrays类(处理数组) (一)基本方法 –排序:对数组排序, sort ...

  7. JAVA核心技术I---JAVA基础知识(static关键字)

    一:static特殊关键字用处 –变量 –方法 –类 –匿名方法 二:静态变量:类共有成员 –static变量只依赖于类存在(通过类即可访问),不依赖于对象实例存在. –所有的对象实例,对于静态变量都 ...

  8. Java核心技术卷一基础知识-第14章-多线程-读书笔记

    第 14 章 多线程 本章内容: * 什么是线程 * 中断线程 * 线程状态 * 线程属性 * 同步 * 阻塞队列 * 线程安全的集合 * Collable与Future * 执行器 * 同步器 * ...

  9. Java核心技术卷一基础知识-第11章-异常、断言、日志和调试-读书笔记

    第11章 异常.断言.日志和调试 本章内容: * 处理错误 * 捕获异常 * 使用异常机制的技巧 * 使用断言 * 日志 * 调试技巧 * GUI程序排错技巧 * 使用调试器 11.1 处理错误 如果 ...

随机推荐

  1. .net使用cefsharp开源库开发chrome

    .net使用cefsharp开源库开发chrome 离上篇写介绍pc端的混合开发和为什么以cefsharp入手研究混合开发已经有好几天,一直忙,抽不出时间继续写怎么搭建cefsharp开发环境.其实没 ...

  2. 在vi中使用perltidy格式化perl代码

    格式优美的perl代码不但让人赏心悦目,并且能够方便阅读. perltidy的是sourceforge的一个小项目,在我们写完乱七八糟的代码后,他能像变魔术一样把代码整理得漂美丽亮,快来体验一下吧!! ...

  3. 命令行配置源和安装本地rpm包

    因为Firefox的在写博客时提交代码会丢失缩进,所以打算安装Chrome来写博,还不错,学到了两条命令- [shell] sudo yum-config-manager --add-repo=htt ...

  4. C语言实现全排列

    实现全排列,递归实现 #include <stdio.h> #include <stdlib.h> ; void swap(int *a, int *b) { int m; m ...

  5. BitNami-Redmine安装和VisualSVN-Server配合使用

    原文:BitNami-Redmine安装和VisualSVN-Server配合使用 BitNami-Redmine安装和VisualSVN-Server配合使用 2011-05-04 10:48:22 ...

  6. 18. Scrum敏捷软件开发

      1)柯维定律 2)如何组件敏捷团队? 团队5~9个人,Mike带过最多的是14个人.个人建议,别超过10个.否则沟通的成本直线上升.(团队的午餐,两个匹萨就够了). 引入特性团队(针对于传统的组件 ...

  7. 深入分析ENode的内部实现流程和关键地方的幂等设计

    ENode 2.0 - 深入分析ENode的内部实现流程和关键地方的幂等设计 前言 ENode架构图 ENode框架内部实现流程分析 Command的幂等处理 Domain Event持久化时的并发冲 ...

  8. AngularJS Change Path Without Reloading

    To change path URL with AngularJS, $location.path() is passed the new URL as a parameter, and the pa ...

  9. Ubuntu下安装Intel Fortran编译器(ifort)

    Intel Fortan Compiler简称ifort, Windows下的ifort是收费的,但是Linux系统下提供免费的ifort,可以在下面的链接中下载需要的版本(必须先注册,随后会收到官网 ...

  10. USBWebserver v8.6 PHP环境

    USBWebserver v8.6 Welcome on usbwebserver.com/net/eu USBWebserver v8.6 New in this version New langu ...