• 【Java】 入门 — —(一)


      本博主是 JavaScript 出身的,使用的是弱类型语言;所以对于强类型语言,或者面向对象开发类型的语言,很多细节都不太习惯。本入门系列文章,都是为了加固 强类型语言/面向对象 的一下概念、关键字 和 方法等知识。

      1、Java 的基本知识:  

    1 /// Java 的源代码的文件名 必须与公共类 的名字相同,并用 .java 作为扩展名 (大小写也要保持一致)
    2 
    3 /// 命令行 编译 和 运行java 程序:
    4 ///        编译:javac 源代码文件名(带扩展名 .java) -> 编译后的的文件为 源代码文件名.class
    5 ///        运行:java 源代码的文件名(不带扩展名 .class)
    6 /// javac 程序是一个 Java 编译器
    7 /// java 程序启动 Java 虚拟机,虚拟机执行编译器放在 .class 文件中的字节码
    8 
    9 /// main 入口,必须声明为 public (Ps: 虽然有些 Java 解析器 当 main 不是 public 也可以运行 但这点只需要知道就行了,我们通常都是必须要为 public 的)

      

      2、基本类型:

    1 /// Java 有 8 种基本类型(primitive type),其中有 4种整型、2种浮点型、1种用于表示 Unicode 的编码的字符单元的字符类型 char 和 一种表示真值的boolean 类型。
    2 /// int、short、long、byte、float、double、char 和 boolean

     (A)、整型(Java 中没有任何无符号(unsigned) 形式的 int、long、short 或者 byte 类型): 

    Java 整型
    类型 存储需求 取值范围 使用场景
    int 4 字节  -2 147 483 648 ~ 2 147 483 647(正好超过20亿) 最常用
    short 2 字节 -32 768 ~ 32 767 底层的文件处理或者需要控制占用存储空间量的大数组
    long 8 字节 -9 223 372 036 854 775 808 ~ 9 223 372 036 854 775 807 星球上的居然人数
    byte 1 字节 -128 ~ 127 底层的文件处理或者需要控制占用存储空间量的大数组

     (B)、浮点型:

    Java 浮点型
    类型 存储需求 取值范围 特点
    float 4 字节 大约 ± 3.402 823 47E + 38F (有效位数为 6 ~ 7) float 类型的数值后缀 F 或 f,没有后缀的默认是 double 类型
    double 8 字节 大约 ± 1.797 693 134 862 315 70E + 308(有效位数为 15位) double 类型的后缀是 D 或者 d,没有后缀的默认是 double 类型

        Ps:

          1、所有的浮点数值计算都遵循 IEEE 754 规范。
          2、常量 Double.POSITIVE_INFINITY(double 类型的正无穷大)、Double.NEGATIVE_INFINITY(double 类型的负无穷大)和 Double.NaN(Double 类型的 NaN)

          3、检测一个特定值是不是 等于 Double.NaN 只能用 Double.isNaN(特定值) 这个方法。因为所有 “非数值” 的值都认为是不相同的。
          4、Float 类型也有它自己的 正无穷大、负无穷大或者是 NaN, 把 Double 改成 Float 就行了

          5、浮点类型的计算还是有误差的,在金融计算中,不能用 因为涉及金钱方面的,要求精确。后面会说的 金融计算中,使用的 BigDecimal 类

     (C)、char 类型:

        1、原本是表示单个字符的,但是现在有些 Unicdoe 字符可以用一个 char 值 描述,另一些 Unicode 字符则需要两个 char 值。
        2、char 类型的字面量值要用 单引号括起来。

        3、在 Java 的核心技术中,有大致说到 Unicode 和 char 类型,但是这部分需要理解完整的 编码 知识,博主知识库不充足,需要的请自己去详情了解一下。


     (D)、boolean 类型:

        1、boolean 类型的值,就只有 true Or false 两个值,用来判定逻辑条件。

        2、与 JavaScript 中的不同,Java 中的 整型值 和 布尔值 之间 不能进行相互转换


      

      3、变量:      

    1 /// 在 Java 中,每一个变量都有一个类型 (type)。在声明变量时,变量的类型位于变量名之前。
    2 /// Java 中的变量名,必须是一个以字母开头 并 由 字母或 数字构成的序列
    3 /// 与其他语言相比,Java 中的 “字母” 和 “数字” 的范围更加大,字母包括 'A' ~ 'Z'、'a' ~ 'z'、'_'、'$' 外,还可以使某种语言中表示字母的任何 Unicode 字符。比如希腊人可以用 π,德国人可以用 'ä' 

        Ps: 

          1、不能使用 Java 保留字 作为变量名

          2、要知道哪些 Unicode 字符属于 Java 中的字母,可以使用 Character 类的 isJavaIdentifierStart 和 isJavaIdentifierPart 去检查

          3、尽管 $ 是 一个合法的 Java 字符,但不要在自己的代码中使用这个字符,它只用在 Java 的编译器 或其他工具生成的名字中。

          4、虽然可以一行声明多个变量,但不提倡使用这种风格,因为逐一声明每一个变量可以提高程序的可读性。

          5、变量声明后,要初始化才能使用,否则会报 // ERROR--variable not initialized 错误

          6、Java 中,提倡变量的声明,尽可能靠近变量第一次使用的地方,这是一种良好的编写风格。


      

      4、常量:

        A、在 Java 中,利用关键 final 指示常量,例如: final double CM_PER_INCH = 2.54;

        B、关键字 final 表示这个变量只能被赋值一次,一旦赋值后,就不能够再更改了。

        C、习惯上,常量名使用全大写。

        D、在 Java 中,希望某个常量可以在一个类中的多个方法使用,通常将这些常量成为 类常量;使用关键字 static final 设置。

        E、类常量 定义位于 方法的外部。

        F、在 JavaScript 中 定义常量使用的是 const, 在 Java 中 const 是作为保留关键字,目前未被使用。

        G、在运算时候,比如 cos ,sin, tan 等数学方法,都在 Math 类中。

          H、Java 中提供了两个接近 π 和 e 的常量的近似值:Math.PI 和 Math.E

        


       

       5、数值类型之间的转换: 

        A、实心箭头表示唔信息丢失的转换,虚箭头表示可能有精度损失的转换。

          

        B、如果两个操作数有一个是 double 类型,另一个操作数会转换为 double 类型;

         否则,如果其中一个操作数使 float 类型,另一个操作数将会转成 float 类型;

         否则,如果其中一个操作数为 long 类型,另一个操作数将会转成 long 类型;

           否则,两个数都会被转成为 int 类型

        C、强制类型转换, 强制类型转换的语法格式是圆括号中给出想要转换的目标类型,后面紧跟待转换的变量名,例如:        

    1 double x = 9.997;
    2 int nx = (int) x;

        D、如果强制转换的值,超过目标类型的范围,就会被截取成一个完全不同的值。比如 int 300 转换成 byte 类型 的实际值 为44。

      


      

      6、枚举类型:

        A、有时候变量的值只在一个有限的集合内,就要用到自定义枚举类型,例如:销售的服装尺寸只有 小、中、大和超大 这四种尺寸。

    1 /// 这里定义枚举类型
    2 enum Size { SMALL, MEDIUM, LARGE, EXTRA_LARGE };
    
    3 ///  上面定义完后,可以使用这种枚举类型
    4 /// Size 类型的变量只能存储在这个类型声明中给定的某个枚举值
    5 /// 或者 null 值,null 表示这个变量没有设置任何值
    6 Size s = Size.MEDIUM;

      

           


      

      7、字符串:

        A、从概念上来说,Java 字符串 就是 Unicode 字符串序列。

          B、Java 中没有内置的字符串类型,而是在 标准的Java 类库中提供了一个 预定义类,叫做 String.

          C、每个用双引号括起来的字符串都是 String 类的一个实例。

          D、Java 中的 String 是不可变字符串,没有提供修改的字符串的方法(说的应该就是没有 replace 方法了)

          E、第四点的原因,是因为编译器可以让字符串共享。

          F、检测字符串是否相等,表达式:

    /// s 和 t 可以使字符串变量,也可以使字符串字面量。
    /// equals 是区分大小写的 
    s.equals(t) 
    
    /// 不区分大小写可以使用 equalsIgnoreCase 方法
    s.equalsIgnoreCase(t)

          G、不能使用 == 运算符,判断连个字符串是否相等,这个运算符只能确定两个字符是否放在同一个位置上。例如:

    String greeting = "Hello";
    if (greeting == "Hello")...
    // probably true
    if (greeting.substring(0, 3) == "Hel")...
    // probably false 

           H、因为实际上,只有字符串常量是共享的,而 + 或 substring 等操作产生的结果并不共享。

           I、空串 和 Null 串:

      

     1 /// 空串是长度为 0 的字符串,可以使用下面的方法检查是否为空串:
     2 if (str.length() == 0) ..
     3 // 或者
     4 if (str.equals(""))...
     
     5 /// Null 串是一个特殊值,表示目前没有任何对象与该变量关联。
     6 /// 检查字符串是否为 null 使用 ==
     7 if (str == null)...
     
     8 /// 检查字符串不是既不是空串,也不是 null 串时,要先判断 null 串,因为 null 上面是没有 length() 方法,会导致报错的

      

  • 相关阅读:
    .NET : 单元测试到底给我们带来什么
    .NET : 如何将16进制颜色代码转换为十进制
    LINQ : 谈谈LINQ TO SQL中的直接加载和延迟加载
    .NET : 单元测试的几个Attribute介绍
    .NET : 在单元测试中使用外部文件作为数据源
    再来谈谈json
    .NET : 关于图片格式的问题
    VSTS : 比较性能基准
    .NET : 如何将大文件写入到数据库中
    LINQ : 如何在JOIN或者GROUP BY的时候使用复合键
  • 原文地址:https://www.cnblogs.com/-xk94/p/12331831.html
Copyright © 2020-2023  润新知