一个简单的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用于第二个代码单元]。这样设计的巧妙之处在于我们可以从中迅速地知道一个代码单元是一个字符的编码,还是一个辅助字符的第一或第二部分。

[JAVA学习笔记]JAVA基本程序设计结构的更多相关文章

  1. [java学习笔记]java语言核心----面向对象之this关键字

    一.this关键字 体现:当成员变量和函数的局部变量重名时,可以使用this关键字来区别:在构造函数中调用其它构造函数 原理:         代表的是当前对象.         this就是所在函数 ...

  2. [java学习笔记]java语言核心----面向对象之构造函数

    1.构造函数概念 特点: 函数名与类名相同 不用定义返回值类型 没有具体的返回值 作用:                给对象进行初始化 注意: 默认构造函数 多个构造函数是以重载出现的 一个类中如果 ...

  3. [Java学习笔记] Java异常机制(也许是全网最独特视角)

    Java 异常机制(也许是全网最独特视角) 一.Java中的"异常"指什么 什么是异常 一句话简单理解:异常是程序运行中的一些异常或者错误. (纯字面意思) Error类 和 Ex ...

  4. Java学习笔记 -- Java定时调度工具Timer类

    1 关于 (时间宝贵的小姐姐请跳过) 本教程是基于Java定时任务调度工具详解之Timer篇的学习笔记. 什么是定时任务调度 基于给定的时间点,给定的时间间隔或者给定的执行次数自动执行的任务. 在Ja ...

  5. 我的Java学习笔记-Java面向对象

    今天来学习Java的面向对象特性,由于与C#的面向对象类似,不需详细学习 一.Java继承 继承可以使用 extends 和 implements 这两个关键字来实现继承. extends:类的继承是 ...

  6. Java学习笔记-Java概述和环境配置

    基础常识 软件:一系列按照特定顺序组织的计算机数据 和指令的集合 常见的软件: 系统软件:如:DOS,windows,Linux等 应用软件:如:扫雷,迅雷,QQ等 软件的出现实现了人与计算机之间的更 ...

  7. java学习笔记----java入门

    java基础 一.java语言跨平台原理 1.什么是跨平台? 跨平台就是一个软件可以在不同的操作系统中运行,但是不需要对其修改.换句话说,java语言编写的软件在不做修改的情况下就能在不同的系统平台上 ...

  8. Java学习笔记-Java中的常用类

    Java中有很多类是很常用的,此处列举System,Runtime,Date,Calendar,Math System System:类中的方法和属性都是静态的 字段摘要 static PrintSt ...

  9. Java学习笔记——MySQL创建表结构

    一.创建/删除数据库. create database t14; drop database t14; use t14; 二.创建若干表用于测试 这里预留了几个坑,下面要填坑的.. /*创建学生表*/ ...

随机推荐

  1. OSPF路由汇总

    转载自红茶三杯博客:http://blog.sina.com.cn/s/blog_5ec353710102vtfy.html 1. 关于路由汇总 路由汇总,又被称为路由聚合(Route Aggrega ...

  2. (5)U盘安装Linux系统

    1.前期准备 使用 U 盘安装 Linux 系统,需要准备以下工具: 大容量的U盘(安装 CentOS 6.x 系统,U 盘容量至少 8 G): UltraISO 工具,用来制作 U 盘启动盘.除此之 ...

  3. 2019牛客暑期多校训练营(第四场)D-triples I

    >传送门< 题意:求最少需要多少个3的倍数按位或后可以得到数字a 思路:利用3的倍数对应的二进制数的性质来先选出一个x,然后根据数字a再配一个y出来 首先,我们都知道十进制中,任意一个数只 ...

  4. LightOJ - 1151 Snakes and Ladders(概率dp+高斯消元)

    有100个格子,从1开始走,每次抛骰子走1~6,若抛出的点数导致走出了100以外,则重新抛一次.有n个格子会单向传送到其他格子,G[i]表示从i传送到G[i].1和100不会有传送,一个格子也不会有两 ...

  5. 「LYOI2018 Summer」Hzy's Rabbit Candy----拓扑排序问题

    「LYOI2018 Summer」Hzy's Rabbit Candy 题目描述 Hzy 和她的 m 只兔兔在一个 n 个点 m 条边的有向无环图上玩. 为了让兔兔们开心,Hzy 带了一些糖.Hzy ...

  6. hdu5637 Transform (bfs+预处理)

    Problem Description A list of n integers are given. For an integer x you can do the following operat ...

  7. 2020杭电多校 10C / HDU 6879 - Mine Sweeper (构造)

    HDU 6879 - Mine Sweeper 题意 定义<扫雷>游戏的地图中每个空白格子的值为其周围八个格子内地雷的数量(即游戏内临近地雷数量的提示) 则一张地图的值\(S\)为所有空白 ...

  8. Poj-3922 A simple stone game(k倍动态减法)

    题意: 游戏是这样的:两个玩家以一堆n个石头开始游戏.他们轮流从石堆里取石头,每次至少取一块.先走的人第一步最多可以拿n-1块石头.从那时起,一个玩家最多可以拿k倍于他的对手上次拿的石头.例如,如果一 ...

  9. Python——控制鼠标键盘

    一.安装包 pip install pynput 二.引用包 from pynput import mouse,keyboard 三.控制鼠标 from pynput.mouse import But ...

  10. java中string,stringBuffer和StringBuider

    最近学习到StringBuffer,心中有好些疑问,搜索了一些关于String,StringBuffer,StringBuilder的东西,现在整理一下. 关于这三个类在字符串处理中的位置不言而喻,那 ...