02关键字、标识符、变量、进制、运算符

一、关键字

被Java语言赋予了特殊的含义,用做专门用途的字符串和单词

关键字一共50个,其中constgoto保留字(reserved word)。

truefalsenull不在其中,它们看起来像关键字,其实是字面量,表示特殊的布尔值和空值。

二、标识符

Java中变量、方法、类等要素命名时使用的字符序列

换句话说,凡是可以自己命名的地方都叫做标识符,比如说:类名、方法名、变量名、包名、常量名。

标识符命名规则:

  • 由26个英文字母大小写,0-9 ,_或 $ 组成

  • 数字不可以开头。

  • 不可以使用关键字和保留字,但能包含关键字和保留字。

  • Java中严格区分大小写,长度无限制。

  • 定义标识符时,要注意“见名知意”

  • 如果不按规则来,会发生编译报错!

三、变量

  • 变量是程序中不可或缺的组成单位,是最基本的存储单元

  • 变脸的理解:内存中的一个存储区域,该区域的数据可以再同一类型范围内不断变化。

  • 构成变量三要素:数据类型、变量名、存储的值。

  • 变量的声明与赋值(或者初始化)

1.数据类型

Java中的变量按照数据类型来分类:

  • 基本数据类型(8种)

    • 整形:byte\short\int\long

    • 浮点型:float\double

    • 字符类型:char

    • 布尔类型:boolean

  • 引用数据类型

    • 类(class)

    • 数组(array)

    • 接口(interface)

    • 枚举(enum)

    • 注解(annotation)

    • 记录(record)

2.说明

1.变量都有其作用域,变量只在作用域内是有效的。

2.在同一个作用域中不能声明两个同名的变量

定义赋值好一个变量后,可以通过变量名的方式进行调用或计算。

3.基本数据类型

3.1整型变量

类型占用存储空间表述范围
byte1字节(byte)=8位(bit)-128~127
short2字节(byte)=16位(bit)-2^15~2^15-1
int4字节(byte)=32位(bit)-2^31-2^31-1
long8字节(byte)=64位(bit)-2^63-2^63-1

注意

  • 定义long类型变量时,赋值时需要以“l”或者”L"作为后缀

  • 在平时开发中,Java程序中通常声明为int类型,除非不足以表示较大的数,超出了int类型的表数范围,才是用long,所以Java中默认整形常量为 int类型。

  • 字节、位

    • 字节是计算机中用于计算存储容量的基本单位。一个字节等于8个bit。

    • 数据存储的最小单位。在二进制中,每一个0或者1就是一个位,也叫作bit。

    • 计算机存储单位转换关系

    • 8bit=1Byte

    • 1024Byte=1KB

    • 1024KB=1MB

    • 1024MB=1GB

    • 1024GB=1TB

3.2浮点型变量

  • 浮点型常量的两种表示方式:

    • 十进制数形式。如:5.12 512.0f .521(必须要有小数点)

    • 科学技术发表现形式:5.12e2 512E2 100E-2

  • float:单精度,尾数可以精确到7位有效数字,赋值时需要以“f"或”F"作为后缀,但很多情况下很难满足需求。

  • double:双精度,精度是float的两倍。在Java开发中,通常浮点型默认为double型。

3.3 字符类型(char)

  • char类型数据用来表示通常意义上字符(占2个字节)

  • Java中的所有字符都是用Unicode编码,所以一个字符可以用于存储一个字母、一个汉字,或书面语中的一个字符。

  • 字符型变量的三种表现形式:

    • //表示形式1:使用一对''单括号进行表示,内部有且仅有一个字符
      char c1="李";
      char c2="a";
      char c3="#";
      //错误
      //char c6='';
      //char c7='ab';
    • //表示形式2:直接使用Unicode值来表示字符常量。
      char c8='\u0036';
    • //表示形式3:使用转义字符
      char c9='\n';
      char c10='\t';
    • //表现形式4使用具体字符对应的数值(比如ASCII码)
      char c11=97;//a
      char c12='1';//49
      char c13=1;//SOH

3.4 布尔类型

  • 布尔类型只有两个取值true,false

    • boolean bo1=true;
      boolean bo2=false;
  • 经常使用在流程控制语句。(条件判断、循环结构)

  • 我们一般不谈boolean类型占用存储空间大小。但是真正在内存中分配的话还是4个字节。

4.基本数据类型见得运算规则

  • 基本数据类型中可以做运算的有7种,不包含boolean类型

  • 运算规则包括:

    • 自动类型提升

    • 强制类型转换

1.自动类型提升

  • 规则:当容量小的变量和容量大的变量做运算时,结果自动转换为容量大的数据类型

    • byte 、short、char---->int--->long--->float--->double
    • byte、short类型的变量之间做运算,结果为int类型

    • 这里的容量大小并不是数据类型占用内存空间大小,而是指的是表数范围大小

  • 一般情况

    • int i1=20;
      long l1=i1;
      float f1=l1;    //20.0
      byte b1=12;
      short s1=10;
      int i2=b1+s1;   //22

 

2.强制类型转换

rules:

  • 如果需要将容量大的类型转换为容量小的类型,需要使用强制类型转换

  • 强制类型转换需要使用强转符:()。在()内可以指明要转换为的数据类型

  • 一般情况:

    • long d1=90;
      int i1=(int)d1;  //90
      ​
      long l1=123;
      short s1=(short)s1;  //123
  • 精度损失

    • double d2=12.3;
      int 12=(int)d2    //12
          
      int i5=128;
      byte b1=(byte)i5 //-128
      
    • byte b2=12;
      method(b2);
      }
      public static void method(int num){ //int num=12;自动类型提升
      }
    • long l2=12L;
      method((int)l2);
      }
      public static void menthod(int num){
      }

3.基本数据类型与String的运算

  • String属于引用数据类型,俗称字符串,可以以一对双引号的方式进行赋值。

  • String声明的字符串内部,可以包含0个,1个或多个字符

    • String str1="有了目标,走起来才有感觉";
      System.out.println("str1")//str1
      System.out.println(str1)//有了目标,走起来才有感觉
    • String str2="a";
      char c1='a';
      //两者区别是str2变量时引用类型,c1是字符类型,两者完全没有交集。只不过是他们的值恰巧都只有一个字符a。
  • String与基本数据类型变量间只能用连接符“+”做连接运算,运算结果是String类型。

    • int num1=10;
      boolean b1=true;
      String str4="咳咳";
      ​
      System.out.println(str4+b1);    //true咳咳
      String str6=str4+b1+num1;       //咳咳true10
      //注意:运算式从左往右运算,所以num1+b1会编译报错
      //String str7=num1+b1+str4;
      ​
    • 如何将String类型的变量转换为基本数据类型

      String str1="10";
      System.out.println(str1);  //10
      
      int num1=Integer.parseInt(str1);//使用Integer类
      System.out.println(num1);//10
      
  • 变量与字符串课后练习

    •         String name="杨理";
              int age=23;
              String sex="男";
              double weight=80;
              boolean isMarried=false;
              String phoneNumber="199905xxxxx";
              String info="姓名:"+name+"\n年龄:"+age+"\n性别:"+sex+"\n体重:"+weight+"\n是否已婚:"+isMarried+"\n手机号为:"+phoneNumber;
              System.out.println(info);
      //        姓名:杨理
      //        年龄:23
      //        性别:男
      //        体重:80.0
      //        是否已婚:false
      //        手机号为:199905xxxxx
      

四、进制

1 二进制

  • 计算世界中只有二进制,计算机中存储和运算的所有数据(比如说:数字、字符、图片、声音、视频等)都要转换为二进制。

		int num2=980;//十进制 (0~9)
        int num3=0b0101;//二进制 (0~1)
        int num4=0X89e;//十六进制 (0~9,a-f)
        int num5=07656;//八进制 (0~7)
        System.out.println(num2); //980
        System.out.println(num3); //5
        System.out.println(num4); //2206
        System.out.println(num5); //4014
  • 进制键间的相互转换举例

二进制八进制十进制十六进制
0000
1111
10222
11333
100444
101555
110666
111777
10001088
10011199
10101210a或A
10111311b或B
11001412c或C
11011513d或D
11101614e或E
11111715f或F
10000201610

计算机数据的存储使用二进制补码形式存储

  • 正数最高位0,负数最高位是1

  • 正数的话三码合一,即源码、反码、补码相同

  • 如何找到负数的原码?

    • 负数符号位是1,将原码除符号位全部取反可得到这个数的反码,将这个数的反码加上1可以得到这个数的补码

    • 一般情况下给的是负数补码

2.各进制之间的转换

  • 二进制转8进制

  • 二进制转16进制

  • 八进制、十六进制转二进制

3 -128在内存中怎么存?

int a=128;
byte b=(byte)a;
System.out.println(b);//-128

 

五、运算符

运算符是一种特殊的符号,用来表示数据的运算、赋值和比较等。

1.算数运算符

  • 除法

System.out.println(12/5*5);//10
  • 取模

//取模以后,结果与被模数的符号相同
int i2=12;
int i3=-5;
System.out.println(i2%i3);//2
​
//num1%num2==0
//经常用来判断某个数num1是否能过整除另外一个数num2
/*
    判断num1是否为整数
    num%2==0;
*/
//+:连接符,只适用于String与其他类型的变量间的运算,而运算结果也是String类型。
  • (前)++、(后)++、(前)--、(后)--

        int a1=20;
        int c1=a1++;        //先运算后自增1
        System.out.println(a1+" "+c1);//a1=21  c1=20
​
        int a2=20;
        int c2=++a2;        //先自增1后运算
        System.out.println(a2+" "+c2);//a2=21   c2=21

练习

//输出三位数的每位数字
        int num=697;
        System.out.println("数的百位是:"+num/100);
        System.out.println("数的十位是:"+(num%100)/10);
        System.out.println("数的个位是:"+num%10);

2.赋值运算符

分类

= += -= *= /= %=

  • 在进行= += -= *= /= %=操作时,不会改变变量本身的数据类型。

byte b1=10;
b1+=5       //15
//b1=b1+5   //编译报错

3.比较运算符(关系运算符)

分类:

4.逻辑运算符

5.位运算符

6.条件运算符

 

六、企业真题

1.高效的计算2^8

使用左移(<<)位运算符,可以以2<<3或8<<1进行计算

2.&和&&的区别

首先&和&&都属于逻辑运算符,都表示的是“且"的关系,且两边都为true时,结果才为true。

但&&左边为false时,不会在去判断右边,而&(逻辑与)会判断右边的值。

在平时开发中,更多的用到&&(短路与)

3.Java开发中计算金额时使用什么数据类型?

不能使用float或double,因为精度不高。

一般使用BigDecimal类替换,可以实现任意精度的数据的运算。

4.char型变量中能不能存储一个汉字,为什么?

可以的。char型的变量只能存储一个字符,而char使用的是unicode字符集,其中包含了世界范围内的所有字符。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值