一个简单的Java应用程序

public class FirstSample
{
public static void main(String[] args)
{
System.out.println("Just don't use 'Hello, World!'");
}
}

这个简单的Java应用程序,只发送一条消息到控制台窗口中,但所有的Java应用程序都具有这种结构。其中:

  • 关键字public 称为访问修饰符,这些修饰符用于控制程序其他部分对这段代码的访问级别。
  • 关键字class 表明Java 程序中的全部内容都包含在类中。这里的类相当于一个加载程序逻辑的容器,程序逻辑定义了程序的行为。
  • class 后紧跟类名。类的命名规范应当符合骆驼命名法即:类似CamelCase。
  • 源代码的文件名必须与公共类的名字相同,并以.java 作为扩展名。
  • 从命令行运行上面这段代码时,分两步:javac FirstSample.javajava FirstSample,值得注意的是第二步没有后缀.class 。

注释

三种:

// First

/*
Second
Second
/ /**
* Third, can automatically generate documentation.
*/

数据类型

Java 一共有8种基本类型,其中4种整型、2种浮点型、1种用于表示Unicode 编码的字符单元的字符类型char 和boolean 类型。Java 有一个能表示任意精度的算术包,称为大数值。但它其实是一个Java 对象,并不是一种Java 数据类型

整型

类型 存储需求 取值范围
int 4字节 -2147483648 ~ 2147483647
short 2字节 -32768 ~ 32767
long 8字节 -9223372036854775808 ~ 9223372036854775807
byte 1字节 -128 ~ 127

长整型数值有一个后缀L或l(如4000000000L)。十六进制数值有一个前缀0x或0X(如0xCAF5)。八进制有一个前缀0,如010表示8,但容易混淆,故不推荐使用。加上前缀0b或0B表示二进制数(如0b1001表示9)。

浮点类型

类型 存储需求 取值范围
float 4字节 有效位数6 ~ 7位
double 8字节 有效位数15位

一般使用double 类型,float 类型的数值有一个后缀F或f(如3.14f)。

会导致溢出和出错情况的三个特殊的浮点数值:

  • 正无穷大
  • 负无穷大
  • NaN

常量Double.POSITIVE_INFINITY、Double.NEGATIVE_INFINITY 和 Double.NaN 分别表示这三个特殊值,要检测一个特定值是否等于Double.NaN:

if (x == Double.NaN) // 不可以,结果永远是false
if (Double.isNaN(x)) // 则可以

浮点值不适用于无法接受误差的金融计算中,例如System.out.println(2.0-1.1);打印出的结果为:0.8999999999999999,而并非0.9.这种舍入误差的主要原因是浮点数值采用二进制系统表示,而在二进制系统种无法精确地表示分数1/10。如果在数值中不允许任何舍入误差,应该使用BigDecimal 类。

char类型(码点与代码单元)

要弄清char 类型,就必须了解Unicode 编码机制,一个char 类型的大小为16bit。Unicode 解决了不同编码方案下有可能产生不同的字符的问题。但是随着加入的字符越来越多,16位已经不能完全表示Unicode 中的字符。

码点是指一个编码表中的某个字符对应的代码值。在Unicode 标准中,码点采用十六进制书写,并加上前缀U+,例如U+0041就是拉丁字幕A的码点。Unicode 的码点可以分成17个代码级别。第一个代码级别称为基本的多语言级别,码点从U+0000到U+FFFF,其中包括经典的Unicode 代码;其余的16个级别码点从U+10000到U+10FFFF,其中包括一些辅助字符。

UTF-16编码采用不同长度的编码表示所有Unicode 码点。在基本的多语言级别中,每个字符用16位表示,通常被称为代码单元;而辅助字符采用一对连续的代码单元进行编码。这样构成的编码值落入基本的多语言级别中空闲的2048字节内,通常被称为替代区域[U+D800 ~ U+DBFF用于第一个代码单元,U+DC00 ~ U+DFFF用于第二个代码单元]。这样设计的巧妙之处在于我们可以从中迅速地知道一个代码单元是一个字符的编码,还是一个辅助字符的第一或第二部分。

最新文章

  1. Mongodb数据库学习系列————(一)Mongodb数据库主从复制的搭建
  2. SGU 101 修改
  3. SDUT 2351 In Danger
  4. Mysql分表和分区的区别
  5. Android 6.0 Changes
  6. yzoi2223集合构造的详细解法
  7. systemd.service 中文手册
  8. 初识 ActiveMQ
  9. DM企业建站系统v201710 sql注入漏洞分析 | 新版v201712依旧存在sql注入
  10. [数据算法]D1.BloomFilter
  11. RAID配置多阵列
  12. NetCore实践篇:分布式监控客户端ZipkinTracer从入门到放弃之路
  13. 国内的Android SDK镜像
  14. SecureCRT问题
  15. js中的类
  16. 输出链表中倒数第k个节点
  17. Ext.net combobox 的disabled
  18. 吴裕雄 29-MySQL 处理重复数据
  19. vuex、redux、mobx 对比
  20. 字符串和JSON对象互转的方法

热门文章

  1. Grafana部署监控docker服务
  2. Spring Boot的进阶和高级
  3. Calendar 日期判断 等于 。小于。大于
  4. python flask_sqlalchemy 多态 polymorphic 实现单表继承
  5. [源码分析] Dynomite 分布式存储引擎 之 DynoJedisClient(1)
  6. Codeforces错题本
  7. HDU5407 CRB and Candies 【LCM递推】
  8. HDOJ 3398
  9. 【LA 3487】Duopoly(图论--网络流最小割 经典题)
  10. cf1291c-Mind Control