Java

+BEGIN_EXAMPLE

title: "Java Study Day (1)"
data: "2017-03-17 23:19:16"
tags: study
categories: Docs
description: "Java Study Day (1) Java 的基本程序设计结构 "
toc: true

+END_EXAMPLE

+OPTIONS: toc:nil

  • 一个简单的Java程序

+BEGIN_SRC java

public class Main{
public static void main(Sreing[] args){
System.out.println("Hello World!");
}
}

+END_SRC

** Tips

  • 关键字class表明Java程序中的全部内容包含在类之中
  • 关键字class之后紧跟类名
  • 类名的命名规则“名字以字母开头,后加字母或者数字,长度无限制,不可使用Java保留字”
  • 类名的命名规范“类名是大写字母开头的名词,多个单词组成,每个单词首字母大写” -- 骆驼命名法
  • 源代码的文件名必须与公共类的名字相同,并且以.java作为扩展名
  • main方法必须被定义为public
  • 源代码中的{},与c/c++一样,划分程序的各个部分
  • Java中的所有函数都属于某个类的方法,而不是成员函数
    • 因此,Java中的main方法必须有一个外壳类
  • 点号(.)用于调用方法,Java使用的通用的语法是object.method(parameters)
  • 注释

    • //注释内容从 //到本行行尾
    • /* */ 将一段比较长的注释括起来
    • 以 /** 开始以 */结束,是用来自动的生成文档
    • 注意:注释不能嵌套
  • 数据类型

Java是一种强类型语言,所以必须声明每个变量的类型,Java中有8种基本类型,四种整型,两种浮点,一种表示Unicode编码的字符单元的字符类型char,一种表示真值的boolean类型

** 整型
| 类型 | 存储需求 | 取值范围 |
|-------+----------+--------------------------------------------|
| int | 4字节 | -2147483648 ~ 2147483647 |
| short | 2字节 | -32786 ~ 32767 |
| long | 8字节 | -9223372036854774808 ~ 9223372036854774807 |
| byte | 1字节 | -128,127 |

  • 长整型数值有一个后缀L或者l
  • 十六进制数值有一个前缀0x或0X
  • 八进制有一个前缀0
  • 从Java7开始加上前缀0b或者0B就可以写二进制数
  • 同时还可以在数字字面量加下划线,只是为了易读,Java编译器会去除这些下划线

** 浮点类型
| 类型 | 存储要求 | 取值范围 |
|--------+----------+--------------------------------------------|
| float | 4字节 | +- 3.40282347E+38F 有效位数6~7位 |
| double | 8字节 | +- 1.79769313486231579E+308 有效位数15位 |

  • float类型的数值有一个后缀F或f
  • 没有后缀F的浮点数值默认为double类型
  • double类型的数值有一个后缀D或d
  • 可以使用十六进制表示,在十六进制中使用p表示指数,尾数采用十六进制,指数采用十进制,指数的基数是
  • 三个特殊的浮点数值
    - 正无穷大[Double.POSITIVE_INFINITY]或者Float常量
    - 负无穷大[Double.NEGATIVE_INFINITY]或者Float常量
    - NaN(不是一个数字)[Double.NaN]或者Float常量
    - Double.isNaN(x)判断一个特定值是否不是一个数字

** char类型
char原来用来表示单个字符,如今有些Unicode可以使用一个char表示,另外一些需要两个char
| 转义序列 | 名称 | Unicode值 |
|----------+--------+-----------|
| \b | 退格 | \u0008 |
| \t | 制表 | \u0009 |
| \n | 换行 | \u000a |
| \r | 回车 | \u000d |
| " | 双引号 | \u0022 |
| ' | 单引号 | \u0027 |
| \ | 反斜杠 | \u005c |

**** 警告:Unicode的转义会在解析代码之前得到处理(注意注释中的转义)代码中的\u后面必须有四个十六进制数即使是在注释之中
**** 举例:(错误: 非法的 Unicode 转义System.out.println(g); // \user)

** Unicode类型和char类型

  • 码点:指与一个编码表中某个子度对应的代码值,在Unicode标准中码点采用十六进制书写并加上前缀U+
  • Unicode的码点分为17个代码级别,第一个代码级别码点从U+0000U+FFFF,其余16个级别码点从U+10000U+10FFFF
  • 在基本的多语言级别,每个字符用16位表示,通常被称为代码单元

** boolean类型
boolean类型有两个值:false和true,用来判定逻辑条件,整型和布尔值之间不能互相进行转换

  • 变量

    • 变量初始化:
      • 声明一个变量之后必须用赋值语句对变量进行显式初始化
      • Java可以将声明代码放在任何位置
    • 常量:
      • Java中关键字final指示常量
      • final表示这个常量只可以被赋值一次,一旦被赋值之后就不能被更改,习惯上常量名使用全大写
      • Java中经常希望某个常量可以在一个类的多个方法中使用,通常将这些常量称为类常量,使用关键字static final设置一个类常量
      • 注意类常量位于main方法外部
  • 运算符
    使用strictfp关键字标记的方法必须使用严格的浮点计算来生成可再生的结果,例如public static strictfp void main(String[] args) 这是性能和计算精确度平衡的产物

    • 科学函数与常量

      • floorMod(position + adjustment, 12)总会得到一个在0~11之间的数字
      • 注意这些都在Math类之中
      • 为了达到最快的性能,所有的方法都使用计算机浮点单元中的例程序
      • 如果一个完全可以预测的结果比运行速度更重要的话,使用StrictMath类
    • 数值类型之间哦转换

      • 如果两个操作数有double 另一个转成double
      • 否则 如果其中一个是float 另一个转成float
      • 否则 如果其中一个是long 另一个转成long
      • 否则 两个操作数全部转成int
    • 强制类型转换

      • 使用(类型)
      • 或者使用(int)Math.round(x)来强制得到最接近浮点数的整数
      • 注意如果将一个数值从一种类型转换到另一种类型,并且超过了目标类型表示范围,结果会截断成为一个完全不同的值
    • 结合赋值和运算符

      • 可以在赋值中使用二元运算符例如:x += 4 => x = x + 4
    • 自增和自减运算符++n;n++;--n;n--;

    • 关系和boolean运算符

      • ==;!=;&&;||;>;<;<=;>=;
      • condition ? expression1 : expression2
    • 位运算符

      • & ("and") | ("or") ^ ("xor") ~ ("not")
      • & 和 | 不使用“短路”
      • <<位模式左移,>>位模式右移,>>>运算符会使用0填充高位,>>会使用符号位填充高位
    • 枚举类型

      • enum Size{ SMALL , MEDIUM , LARGE , EXTRA_LARGE }; Size s = Size.MEDIUM;
      • Size类型变量只可以存储,这个类型声明中给的某个枚举值
    • 字符串

      • 字串:String类的substring方法可以从一个比较大的字符串中提取一个子串。例如:String greeting = "Hello"; String s = greeting.substring(0, 3);则是创建了"Hel"字符串
      • 拼接:Java允许使用+连接两个字符串,当一个字符与一个非字符拼接的时候非字符被转换成为字符串,如果把多个字符串放在一起可以使用String.join(a,b,c);
      • 不可改变字符串:即无法直接修改greeting使之变成help!,只能使用greeting = greeting.substring(0,3)+"p!";
      • 检查字符串是否相等,s.equals(t);s,t可以是字符串变量或者是字符串字面量,s.equalsIgnoreCase(t),比较字符串同时忽略大小写
      • 空串与Null串
        • 空串是长度为0的串
        • Null串表示目前没有任何对象和这个变量关联
posted @ 2017-03-19 22:12  Thecoollight  阅读(183)  评论(0编辑  收藏  举报