Java 语言-2 Java 基本语法 1.0

2.1 注释

  • 养成好的书写注释是一种好习惯

  • 三种注释方式:单行注释//、多行注释/**/、文档注释/***/

    • 文档注释又称 JavaDoc 注释
  • JavaDoc 是 java 特有的 doc 注释,会生成 APl 文档

    • 常用参数信息
      • @auther:作者名
      • @version:版本号
      • @since:指明需要的最早的idk版本
      • @pa'ram:参数名
      • @return:返回值情况
      • @throws:异常抛出情况
    • 对于有 @ 标注的注释,JavaDoc 在生成有关程序的文档时,会自动识别,并生成相应的文档

2.2 程序类型

  • Java 中存在多种程序类型,在 JavaSE 中主要存在 Appliction 和 Applet 类型,前者也称为应用程序,后者也称小应用程序

    • Application 是独立的程序,需要执行器(调用虚拟机)运行
    • Applet 是嵌于 HTML 网页中额非独立程序
      • 现在有很多可替代,所以不是很重要,但是学习过程中需要了解
  • Application 程序

    • 基本应用程序,主要是定义各种类

      • 例如:
        image-20220206140325981

        class 是主体

        public 类名与文件同名

        main() 方法的写法固定

        System.out.print 及 println 及 printf 显示信息

  • Applet 程序

    • 小应用程序,与 HTML 等配合使用

      • 例如:编写的 Applet 程序代码
        image-20220206140713875

        用于执行的 HTML 代码
        image-20220206141015226

        import :表示导入

        extends JApplet 表示继承。使用:· Apple 或者 JApplet 格式都可以

        paint() 方法:表示如何绘制

        HTML 中 applet 标签用于定义执行文件设置

      • Applet 程序中没有 main() 方法

  • Java 程序基本构成

    • 一般 Java 程序例如:
      image-20220206141438096
    • 要点:
      • package 语句(0 或 1 句)。作用:导入包
      • import 语句(0 或多句)。作用:导入其他类或者类库
      • 类定义——class(1 或多个)
        • 一个文件只能有一个 public 类(与文件同名)
        • 一般一个类一个文件

2.3 数据类型

  • 在介绍数据类型之前,先认识一下字节相关知识

    • 位、字节和字符
      • 位(bit):计算机内部储存的最小单位,11000011是一个八位二进制数。
      • 字节(byte):计算机处理的最小单位,习惯上用 B 表示,1B=8bit
      • 字符:计算机使用的字母、数字、字和符号
    • 换算关系
      • 1bit 表示1位、1B=8b、1024B=1KB、1024KB=1M、1024M=1G
  • 数据类型决定数据的存储方式运算方式

  • Java 的数据分类

    • 基本类型(primitve type)
      image-20210819113840680
    • 引用数据类型(reference type)
      image-20210819114134738
  • 两种类型的差别

    • 存储位置
      • 基本类型:变量在
      • 引用类型:变量引用到
    • 复制时
      • 基本类型:复制的
      • 引用类型:复制的引用
  • Java 中定义了四类/八种基本数据类型

    • 整数型:byte、short、int、long

      • 整数类型有固定的表数范围和字段长度,不受具体操作系统的影响,以保证 Java 的可移植性,跨平台

        类型 占用存储空间 表数范围
        byte 1 字节 -128~127
        short 2 字节 -215~ 215-1
        int 4 字节 -231~231-1
        long 8 字节 -264~264-1
      • 整数类型默认为 int 类型

      • Java 没有“无符号数”

        • 可用用 long 来处理无符号整数
      • 引用 long 时要在数字后面加上 L 或 l

        • 一般不用 l 是因为容易与 1 混淆
    • 浮点型:flaot、double

      • 有固定的表数范围和字段长度

        类型 占用存储空间 表数范围
        float 4 字节 -3.403E38~3.403E38
        double 8 字节 -1.798E308~1.798E308
      • 表示形式

        • 十进制形式,必须含有小数点
          • 例如:3.14314.0.314
          • 可用使用下划线表示千分位
            • 例如:123_456.789_000
        • 科学计数法形式,含 e 或 E
          • 例如:3.14e23.14E2
      • 默认为 double 类型

        • 生成 float 类型要在数字后面加上 F或 f
    • 逻辑型:boolean

      • 适用于逻辑运算,一般用于程序流程控制
      • boolean 类型只允许取值 true 和 false
    • 字符型:char

      • 用来表示通常意义上的“字符”
      • 字符常量是用单引号括起来的单个字符
        • 例如:char c ='a'
      • Java 字符采用 Unicode 编码,每个字符占两个字节
        • 范围:0~65536(原),而 Excel(原)表的范围是 216=65536
        • 可用十六进制编码形式表示
          • 例如:char c1 = '\u0061'
      • 还允许使用转义字符\进行字符转义

2.4 数据类型拓展

  • 整数拓展

    • Java 整型常量除十进制的其他表示形式:

      • 二进制:以 0b 或者 0B 开头

      • 八进制:以 0 开头

      • 十六进制:以 0x 或 0X 开头

      • 例如:

        int a1 =10;
        int a2 =0b10;   //二进制
        int a3 =010;    //八进制
        int a4 =0x10;   //十六进制 0-9+A-F=16
        System.out.println(a1);
        System.out.println(a2);
        System.out.println(a3);
        System.out.println(a4);
        
        10
        2
        8
        16
        
  • 浮点数拓展

    • 银行业务怎样表示钱?
      • 浮点数的特点:有限、离散、有舍入误差
      • 所以最好完全避免用浮点数进行比较
      • 所以银行业务采用 BigDcimal 数学工具类
  • 布尔值拓展

    • 语法格式:

      boolean flag = true;
      if (flag = true) {}
      if (flag) {}
      
      • 这两个都是一样的,只是新手和老手的差别
  • 字符拓展

    • 强制转换

      • char a1 = 'a';
        System.out.println((int)a1);  //强制转换
        
      • 97
        
    • 所有字符本质依然是数字

    • 转义字符图示:
      img

      • 例如:

        System.out.println("Hello\nWorld");
        
        Hello
        World
        

2.5 关键字与标识符

  • 关键字:一些被赋予特定意义的一些单词不可以把它当做标识符来使用

    • 有两个特殊的关键字 goto、const,这两个关键字称为保留字

    • 图示:
      image-20210819104751422

  • 标识符:Java 中所有组成部分的名称。类名、变量名,以及方法名都被称为标识符

    • 规定

      • 所有标识符必须以字母(A ~ Z或 a ~ z)或美元符($)或者下划线(_)开头,不能以数则开头
        • 一般手工不使用 $,一般是编译生成特殊符号
    • 注意点

      • 首字符后可以是任意字符的任意组合

      • 大小写敏感

      • 可以使用中文命名,但是不推荐,也不建议用拼音

2.6 变量与常量

  • 变量:可以变化的量!

    • Java 是一种强类型语言,每个变量都要声明其类型。

    • Java 变量是程序中最基本的储存单元,其要素包括变量名、变量类型和作用域

    • 语法格式:

      type varName [=value] [{,varName=[=value]}];
      

      数据类型 变量名 = 值;

      可用逗号隔开来声明多个同类型变量

    • 注意:

      • 每个变量都有类型。可以是引用类型,也可以是基本类型
      • 变量名必须是合法的标识符
      • 变量声明是一条完整的语句,需要以 ; 结尾
  • 常量(Counstant):

    • 初始化(initialize)后不能再改变值!不会变动的值

    • 常量可以理解为一种特殊的变量,常量值被设定后,再程序运算中不允许被改变

    • final 常量名 = 值
      final int A = 1
      final double PI = 3.14
      
    • 常量一般用大写字母

    • 修饰符不存在先后顺序

      • final int A = 1
        int final A = 1
        

2.7 变量命名规范

  • 所有变量、方法、类名:见名知意
    • 不推荐拼音的原因之一
  • 少用下划线
  • 类成员变量:首字母小写和驼峰原则:monthSalary
  • 局部变量:首字母小写和驼峰原则
  • 常量:大写字母和下划线:MIN_VALUE
  • 类名:首字母大写和驼峰原则:Man、GoodMan
  • 方法名:首字母小写和驼峰原则:run( )、runRun( )

2.8 运算符

  • 算术运算符:+、-、* 、/、%、++、--

    • %:取余计算,也称模运算

    • 在运算中如果不是 int 类型的变量,在运算也会转换[^2]为 int 类型(优先级小于 int 的)

      • 例如:

        byte a=127;
        short b=32767;
        System.out.println(a+b);
        
        32894
        
    • 一元运算符:++ 自增、-- 自减

      • 例如:

        int a=3;
        int b=a++;		//a=a+1,先赋值,后自增
        int c=++a;		//先自增,后赋值
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
        
        5
        3
        5
        
    • 在实际应用中(像幂运算)多使用工具类来操纵(幂运算可使用 Math 类(数学工具类))

    • 字符连接符:+

      • + 会将两侧不同的数据类型转换为相同类型再进行连接

      • 例如:

        System.out.println(""+10+20);	//String类型出现在+左边,右边的数值类型会转换为字符串类型
        System.out.println(10+20+"");	//String出现在+右边则不会转换
        
        1020
        30
        
  • 赋值运算符:=

    • = 两侧的数据类型不一致时,会发生类型转换
      • 有默认类型转换和强制类型转换
    • 扩展赋值运算符:+=、-=、*=、/=、……
  • 关系运算符:>、<、>=、<=、==、!=

    • 返回的结果为布尔值
  • 逻辑运算符:&&、||、!

    • ! 逻辑非、& 逻辑与、| 逻辑与、^ 逻辑异或

    • && 短路与、|| 短路或

      • 短路逻辑运算符:第一个操作数为某一个条件,则第二个操作数不进行判断
    • 功能说明:
      image-20220209155118732

    • 例如:短路运算

      • int a=5;
        boolean b=(a<4)&&(a++<4);
        System.out.println(a);
        System.out.println(b);
        
        5
        false
        
    • 例如:未短路运算

      • int a=3;
        boolean b=(a<4)&&(a++<4);
        System.out.println(a);
        System.out.println(b);
        
        4
        true
        
  • 位运算符:&、|、^、~、>>、<<、>>>(了解)

    • 位运算符:~ 取反、& 按位与、| 按位或、^ 按位异或
      • 功能说明:
        image-20220209155608550
    • 移位运算符:<< 左移、>> 带符号右移、>>> 无符号右移
      • 例如:
        a>>b :将二进制形式的 a 逐位右移 b 位,最高位空出的 b 位填补原来的符号位
        a>>>b:将二进制形式的 a 逐位右移 b 位,最高位空出的 b 位补 0
      • 功能说明:
        • >>:可以为理解位算术右移 /2
        • <<:算术左移*2
        • >>>:理解为逻辑右移:不考虑高位的正负号,正数的 >>> 等同于 >>
      • 性质:
        • 适用数据类型:byte、short、char、int、long
        • 对于低于 int 类型的操作数会先自动转换为 int 类型,在进行移位(整型提升
  • 条件运算符:?:

    • 三元运算符

      • x ?y :z

        • 如果x == true,则执行y,否则执行z

        • int a = 10;
          String type= a > 60 ? "及格" :"不及格";  //一定要掌握
          System.out.println(type);
          

2.9 表达式

  • 表达式是符合一定语法规则的运算和操作数的序列

    • 例如:

      a;
      5.0 + a;
      (a + b)*c - 4;
      i < 30 && i % 10 != 0;
      
  • 表达式的类型和值

    • 表达式的值的数据类型即为表达式的类型
    • 对表达式中操作数进行运算得到的结果称为表达式的值
  • 表达式的运算顺序

    • 首先按照运算符的优先级从高到低的顺序进行
    • 运算级相同的运算符按照事先规定的结合方向进行
  • 各种运算符的优先级

    • 优先级由上到下递减

    • 类别 操作符 关联性[^3]
      后缀 ( )、[ ]、.(点操作符) 左—>右
      一元运算符 ++、-- 左—>右
      乘型 *、/、% 左—>右
      加型 +、- 左—>右
      移位 >>、>>>、<< 左—>右
      关系判断 >、>=、<=、 左—>右
      相等判断 ==、!= 左—>右
      按位与 & 左—>右
      按位异或 ^ 左—>右
      按位或 | 左—>右
      逻辑与 && 左—>右
      逻辑或 || 左—>右
      三元运算符 ? : 右—>左
      赋值运算符 =、+=、/=、%=、>>=、…… 右—>左
      逗号 左—>右
      • 多用括号()

        1. 方便理清思路

        2. 防止相同的代码在不同的语言中出现不同结果

        3. 增加可读性

2.10 类型转换

  • 因为 Java 是强制性语言,所以要进行计算时,需要用到类型转换

  • 自动转换

    • \(\longrightarrow\)

    • 图示:
      image-20210819180630213

    • 小数优先级大于整数

  • 运算中,不同类型的数据先转化为同一类型,然后计算

  • 强制转换

    • \(\longrightarrow\)

    • 例如:

      int i =128;
      byte j=(byte)i;	      //内存溢出(强制转换(类型)变量名))
      System.out.println(i);
      System.out.println(j);
      
      128
      -128  //内存溢出
      
  • 注意

    • 不能对布尔值进行转换

      • 布尔值(位)!= 数值(字节)
    • 不能把对象类型转换为不相干类型

    • 在把高容量转换为低容量的时候,强制转换

    • 转换可能存在溢出,或精度问题

      • 例如:

        System.out.println((int)40.1);
        System.out.println((int)-40.15f);
        
        40
        -40
        
    • 操作数比较大时注意溢出问题

      • 例如:

        int money =10_0000_0000;
        int yerar =10;
        int total1 = money*yerar;  //1410065408,计算时以及发生溢出了
        long total2 =money*yerar;  //默认是int 在计算的时候就已经发生溢出了,溢出的转换未long
        long total3 =money*((long)yerar);  //先把一个数转换为long
        System.out.println(total1);
        System.out.println(total2);
        System.out.println(total3);
        
        1410065408
        1410065408
        10000000000
        
      • JDK7 新特性,数字之间可以用下划线分隔

posted @ 2021-08-22 15:38  你是我的生命之源  阅读(97)  评论(0)    收藏  举报
页脚