Java之标识符、数据类型与表达式

Java之标识符、数据类型与表达式


提示:以下是本篇文章正文内容。

一、标识符与数据类型

1.1 Java的基本语法单位

1.1.1 注释

//这是单行注释
/*   这
 是
 多行注释
 */
 /* 这样也行 */

关于HelloWorld:
程序如下:

 public class HelloWorld {             //第一行的第三个单词必须和所在的文件名称
                                                  //完全一样,大小写也要一样。public class后面代表定义一个类的
						  //名称,类是Java当中所以源代码的基本组织单位。
       public static void main(String[] args) {       //第二行的内容是万年不变的固定写法,代表main方法
                                                                     //这一行代表程序执行的起点
            System.out.println("Hello,World!");       //第三行代表打印输出语句(即屏幕显示)
       }
  }

2.1.3 关键字

关键字的特点
1.完全小写的字母。
2.在一些软件中有特殊颜色。

2.1.4 标识符

标识符:是指在程序中,我们自己定义内容。比如类的名字、方法的名字和变量的名字等等,
都是标识符。

  • 命名规则:(硬性要求)
    • 标识符可以包含英文字母26个(区分大小写)、0-9数字、$(美元符号)和 _(下划线)。
  • 标识符不能以数字开头。
  • 标识符不能是关键字。
  • 命名规范:(软性建议)
    • 类名规范:首字母大写,后面每个单词首字母大写(大驼峰式)。例:HelloWorld。
  • 变量名规范:首字母小写,后面每个单词首字母大写(小驼峰式)。例:helloWorld。
  • 方法名规范:同变量名。

2.2 Java的基本数据类型

2.2.1 常量

常量:在程序运行期间,固定不变的量。

常量的分类:
(1)字符串常量:凡是双引号引起来的部分,叫做字符串。例如:“abc”、“Hello”、“123”(双引号中数量不限,0个,1个,多个。。。)
(2)字符常量:凡是用单引号引起来的单个字符,叫做字符常量。例如:‘A’、‘b’、‘9’、‘中’(单引号中只能有一个字符,也不能一个都不写)
(3)整数常量:直接写上的数字,没有小数点。例如:100、200、0、-250
(4)浮点数常量:直接写上的数字,有小数点。例如:2.5、-3.14、0.0
(5)布尔常量:只有量中取值。true、false
(6)空常量:null。代表没有任何数据。空常量不能直接用来打印输出。

2.2.2 数据类型

Java的数据类型分为两大类:

  • 基本数据类型:包括整数型、浮点型、字符型、布尔型
  • 引用数据类型:包括字符串、类、数组、接口、Lambda

基本数据类型:

  • 整数型 byte short int long
  • 浮点型 float double
  • 字符型 char
  • 布尔型 boolean
    注意事项
    (1)字符串不是基本类型,而是引用类型;
    (2)浮点型可能只是一个近似值,并非精确的值;
    (3)数据范围与字节数不一定相关,例如float数据范围比long更加广泛,但float是4字节,long是8字节;
    (4)浮点数当中默认类型是double,如果一定要使用float类型,需要加上一个后缀F;
    若是整数,默认为int类型,如果一定要使用long类型,需要加上一个后缀L。推荐使用大写字母后缀。

2.2.3 变量

变量:程序运行期间,内容可以发生改变的量。
创建一个变量并且使用的格式:

数据类型 变量名称;     //创建了一个变量
变量名称 = 数据值;     //赋值,将右边的数据值,赋值给左边的变量

一步到位的格式:
数据类型 变量名称 = 数据值; //在创建一个变量的同时,立刻放入指定的数据值

  long num1 = 3000000000L;
  System.out.println(num1);       //3000000000

  float num2 = 2.5F;
  System.out.println(num1);    //2.5

使用变量的注意事项:
(1)如果创建多个变量,那么变量之间的名称不可以重复;
(2)对于float和long类型来说,字母后缀F和L不要丢掉;
(3)如果使用byte或者short类型的变量,那么右侧的数据值不能超过左侧类型的范围;
(4)没有进行赋值的变量,不能直接使用;一定要赋值之后,才能使用;
(5)变量使用不能超过作用域的范围。
【作用域】:从定义变量的一行开始,一直到直接所属的大括号结束为止。
(6)可以通过一个语句来创建多个变量。如下,例如:
原来:int a = 10; --------> int a, b, c; ---------> int a = 10, b = 20, c = 30;
int b = 20; a = 10;
int c = 30; b = 20;
c = 30;
但是一般情况不推荐这么写。

2.2.4 数据类型转换

当数据类型不一样时,将会发生数据类型转换。

一、自动类型转换(隐式)

特点:代码不需要进行特殊处理,自动完成。
规则:数据范围从小到大。 摘自课本:各类型所占用的位数从短到长(或表示范围从小到大)以此为:

小 --------------------------------------------------------------------------> 大
byte ----> short ----> char ----> int ----> long ----> float ----> double

例:

long num1 = 100;   //int ----> long
double num2 = 2.5F;    //float ----> double

float num3 = 30L;      //左边是float类型,右边是long类型,左右不一样
                       //long ------->float,范围是float更大一些,符合从小到大的规则
			            //发生了数据的自动类型转换
System.out.println(num2);   //30.0

二、 强制类型转换(显式)
- 特点:代码需要进行特殊的格式处理,不能自动完成。
- 格式:范围小的类型 范围小的变量名 = (范围小的类型)原本范围大的数据;
例: int num = (int) 100L;

注意事项:

  • 强制类型转换一般不推荐使用,因为有可能发生精度损失、数据溢出。
   例:int num2 = 6000000000;     //int范围最大大约在21亿左右,而此处明显过大
       System.out.println(num2); 

   例:int num3 = (int) 6000000000L;   //对比上例,此时右边格式争取,long型范围够大
                                                       //并使用了强制类型转换
       System.out.println(num2);         //1705032704,此时数据溢出

       int num4 = (int) 3.99;         //double------>int的强制类型转换
       Syetem.out.println(num4);   //3   此并非四舍五入,所有的小数位都会被舍弃掉
  • byte/short/char这三种类型都可以发生数学运算,例如加法“+”。
    例:
 char zifu1 = 'A';
  System.out.println(zifu1 + 1);   //66,大写字母A当作65处理
  //一旦char类型进行了数学运算,那么字符就会按照一定的规则翻译成为一个数字
  • byte/short/char这三种类型在运算的时候,都会首先被提升成为int类型,然后再计算。

    例:      byte num5 = 40;     //右侧的数值大小不能超过左侧的类型范围
             byte num6 = 50;
             // byte + byte ---> int + int --->int
             int result1 = num5 + num6;
             System.out.println(result1);   //90
    
             short num7 = 60;
             //byte + short ---> int + int ---> int
             //int强制转换为short:注意必须保证逻辑上真实大小本来就没有超过short范围,否则会发生数据溢出
             short result2 = (short) (num5 + num7);
    
  • boolean类型不能发生数据类型转换。

2.2.5. ASCII码表

ASCII值控制字符
480
65A
97a

ASCII码表: American Standard Code for Information Interchange,美国信息交换标准代码
Unicode码表:万国码。也就是数字和符号的对照关系,开头0-127部分和ASCII完全一样,但是从
128开始包含有更多字符。



二、表达式

2.1 表达式

2.1.1 运算符与表达式

运算符:进行特定操作的符号。
表达式:用运算符连起来的式子叫做表达式。例如:20 + 5,又例:a + b

四则运算

  • 加 (+)
  • 减 (-)
  • 乘 (*)
  • 除 (/)

取模(取余数): %

除法:被除数 / 除数 = 商 … 余数
对于一个整数的表达式来说,除法用的是整除,整数除以除数,结果仍然是整数。只看商,不看余数。
只有对于整数的除法来说,取模运算才有余数的意义。

注意事项:一旦运算当中有不同类型的数据,那么结果将会是数据类型范围大的那种。

四则运算中的加号“+”有常见的三种用法:
- 对于数值来说,那就是加法。
- 对于字符char类型来说,在计算之前,char会被提升成为int,然后再计算。
char类型字符,和int类型数字,之间的对照关系表:ASCII、Unicode
- 对于字符串String(首字母大写:并不是关键字)来说,加号代表字符串连接操作。
任何数据类型和字符串进行连接的时候,结果都会变成字符串

例 :

  String str = Java;
  System.out.println(str + 20 + 30);         // Java2030, 从左至右按顺序

自增运算符: ++
自减运算符:

  • 基本含义:让一个变量涨一个数字1,或者让一个变量降一个数字1

  • 使用格式:写在变量名称之前,或者写在变量名称之后。例如:++num,也可以num++

  • 使用方式:

    • 单独使用:不和其他任何操作混合,自己独立
      • 混合使用:和其他操作混合,例如与赋值混合,或者与打印操作混合,等
  • 使用区别:

    • 在单独使用时,前++与后++没有任何区别。也就是: ++num;和num++;时完全一样的。

      • 在混合的时候,有【重大区别】
        A. 如果是【前++】,那么变量【立马+1】,然后拿着结果进行使用。 【先加后用】

      例 :

      public class zizengzijian {
                    public static void main(String[] args) {
      		              int num1 = 10;
      			      System.out.println(num1);   // 10
      			      ++num1;
      			      System.out.println(num1)l   // 11
      			      num1++;
      			      System.out.println(num1);   // 12
      	         }
              }
      
      
      
      
      

    B. 如果是【后++】,那么首先使用变量本来的数值,【然后再让变量加1】。【先用后加】

    例:                                    int num2 = 20;
                                            System.out.println(++num2);     //21
                                            System.out.println(num2);         //21
    
                                            int num3 = 30;
    										System.out.println(num3++);   //  30
                                            System.out.println(num3);        //  31 
    
                                            int num4 = 40;
                                            int result1 =  --num4;
                                            System.out.println(result1);   //  39
                                            System.out.println(num4);        //  39
    
                                            int num5 = 50;
                                            int result2 =  num5--;
                                            System.out.println(result2);   //  50
                                            System.out.println(num5);        //  49
    
                                                 
    
    
    注意事项:只有变量才能使用自增、自减运算符。常量不可发生改变,所以不能用。
    

    赋值运算符

    赋值运算符分为:

    (1)基本赋值运算符:就是一个“=”,代表将右侧的数据交给左侧的变量。
    例:int a = 1;
    (2) 复合赋值运算符:
    +=
    -=
    *=
    /=
    %=
    注意事项

  • 只有变量才能使用赋值运算符,常量不能进行赋值。

  • 复合赋值运算符其中隐含了一个强制类型转换。
    例:
    byte num = 30;
    num += 5; // num = num + 5;
    // num = byte + int;
    // num= int + int;
    // num = int;
    // num = (byte) int;
    System.out.println(num); // 35

    比较运算符:> < == >= <= !=

    注意事项:

    (1)比较运算符的结果一定是一个boolean值,成立就是true,否则为false;

    (2)如果进行多次判断,不能连着写。
    数字当中的写法,例如:1 < x < 3
    程序当中不允许这种写法。
    逻辑运算符

    与 (&&)

    或 (||)

    非 ( !)

    短路:与“&&”,或(||),具有短路效果;如果根据左边已经可以判断得到最终结果,那么右边的代码将不再执行,从而节省一定的性能。

    例:

    int a = 10;
    // false && ...
    System.out.println(3 > 4 && ++a < 100);   //false
    System.out.println(a);                    //10
    
    int b = 20;
    // true || ...
    System.out.println(3 < 4 || ++b < 100);   //true
    System.out.println(b);        		      //20
    
    
    

TIPS:
对于1 < x < 3的情况,应该拆成两个部分,然后使用与运算符连接起来:

 int x = 2;
 1 < x && x < 3

三元运算符

一元运算符:只需要一个数据就可以操作的运算符。例如:非!、自增++、自减–

二元运算符:需要两个数据才可以进行操作的运算符。例如:加法+、赋值=

三元运算符:需要三个数据才可以进行操作的运算符。

格式:

数据类型 变量名称 = 条件判断 ? 表达式A : 表达式B;

流程:

首先判断条件是否成立:

  • 如果成立为true,那么将表达式A的值赋给左侧的变量; 如果不成立为false,那么将表达式的值赋给左侧的变量; 二者选其一。

注意事项

1.必须同时保证表达式A和表达式B皆符合左侧数据类型的要求。

2.三元运算符的结果必须被使用。

例1:

public class ThreeYuan {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        int max = a > b ? a : b;
        System.out.println('最大值:' + max);        //20
    }
}

例2:

int result = 3 > 4 ? 2.5 : 10;   //错误写法

例3:

System.out.println(a > b ? a : b);    //正确写法

例4:

a > b ? a : b;      //错误写法


说明

人非生而知之乎。本人学习JavaScript是“师从”哔站阿婆主——黑马程序员,此文记录了本人所听之学习笔记以及自身之思考体悟。发表此拙作,以期同诸位同仁、朋友共享学习成果及经验。有不足或不当之处还请您斧正。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值