java的标识符,数据类型与各种运算符

     2022-03-15     780

关键词:

一.标识符

  用作给变量、类和方法命名

  java强调标识符有如下命名规则:

  • 标识符必须以字母,下划线_,美元$开头
  • 标识符其他部分可以是字母,下划线"_",美元符"$"和数字的任意组合
  • 标识符大小写敏感,长度无限制
  • 不可以是java关键字 

JAVA不采用通常语言使用的ASCII字符集,而是采用unicode这样标准的国际字符集。

因此这里的字母的含义:英文,汉字

合法的字符集:

  int a = 3;

  int _123 = 3;

  int $12aa = 3;

  int 变量1 = 55;

不合法的标识符:

  int 1a = 3;   //不能用数字开头

  int a# = 3;    //不能包含#这样的特殊字符

  int int = 3;  //不能使用int关键字

二.关键字

 

Java关键字Java语言保留供内部使用的,class用于定义类。 关键字也可以称为保留字,它们的意思是一样的。

技术分享

 

需要注意的是goto和const作为java中的关键字不进行任何使用,也称为保留字

三.数据类型 

  数据类型: java数据类型分为基本数据类型和引用数据类型:

  技术分享

 

1.基本数据类型

基本数据类型又分为整数类型(int byte short long),浮点类型(float double),字符类型(char),布尔类型(boolean)

整型

整型用于表示没有小数部分的数值,它允许是负数。

技术分享

取值范围是

  byte  -128~127

  short  -215 ~ 215-1 -32768~32767

  int   -231 ~ 231-1 

  long   -263 ~ 263-1

浮点型 

  float  4字节  取值范围:-3.403E38~3.403E38

    float类型又被称作单精度类型,尾数可以精确到7位有效数字,在很多情况下,float类型的精度很难满足需求。

  double   8字节  取值范围:-1.798E308~1.798E308

      double表示这种类型的数值精度是float类型的两倍,又被称作双精度,绝大部分应用程序都采用double类型。

    Java 浮点类型常量有两种表示形式

 

       十进制数形式,例如:

 

        3.14       314.0      0.314

 

      科学记数法形式,如  

 

        314e2      314E2      314E-2 

    需要注意的是Float声明的时候需要在后缀加上F或f,因为小数类型默认为double类型,会产生编译错误

2.引用数据类型(数组,类和接口)

四.变量

  在程序运行中其值可以发生改变的量,相当于向程序申请一个存储空间,里面的东西随时可能改变,其申请的空间大小与数据类型相对应

  声明变量 

    数据类型 变量名 = 初始值;

      int  num = 10;

 示例代码:

技术分享
 1 public class Test1{    
 2     public static void main(String[] args){
 3         byte b=20;//范围-128~127
 4         System.out.println("byte--->b="+b);
 5         byte b2=012;//八进制
 6         System.out.println("byte--->八进制b2="+b2);//将八进制12--->十进制10
 7         byte b3=0x12;//十六进制
 8         System.out.println("byte--->十六进制b2="+b3);//将十六进制12--->十进制18
 9         short s=300;//范围-32768~32767
10         System.out.println("short--->s="+s);
11         int  i=10000;//范围大约21亿
12         System.out.println("int--->i="+i);
13         long l=5555555555L;//5555555555默认int类型,5555555555L为long类型
14         System.out.println("long---->l="+l);
15         float f=3.14f;    //3.14默认为double类型,3.14f为float
16         System.out.println("float--->f="+f);
17         //科学计数法:314E2=314*10^2
18         float f2=314e2F;//314e2默认为double类型
19         System.out.println("科学计数法的314E12==>"+f2);
20         double d=314e2;
21         System.out.println("double科学计数法的314E12==>"+d);
22         double d2=1.123456789012345678;//精度四舍五入
23         System.out.println("double--->d2="+d2);
24     }
25 }
View Code

结果如下:技术分享

 

 五.常量

 

  常量:在程序运行过程不能更改其值的变量

  在java中声明常量使用final,一旦变量使用final修饰,该变量为常量,无法为其重新赋值。

  变量命名经常大写(便于与变量进行区分)。

  示例代码

技术分享
 1 public class TestVar4{
 2     public static void main(String[] args){
 3         /*
 4             常量在程序运行过程中无法被修改,在java中使用final修饰,
 5             常量的单词一般为大写单词或字符
 6                 3.1415926
 7         */
 8         final double PI = 3.1415926;
 9         //PI = 3.14;错误: 无法为最终变量PI分配值,无法继续为PI分配值了
10         double r = 5;
11         double s = r*r*PI;
12         double c = 2*r*PI;
13         System.out.println("圆的面积为:" + s);
14         System.out.println("圆的周长为:" + c);
15     }
16 }
常量代码

结果如下:技术分享

六.使用Scanner类获取用户输入

   Scanner处于 java.util.*包下,使用其中的方法可以获取用户输入的内容(字符串,整型,浮点型,双精度浮点类型,布尔类型等)

示例:

技术分享
 1 import java.util.Scanner;//使用前导包
 2 public class TestScanner{
 3     public static void main(String[] args){
 4         //创建对象:类名 对象名 = new 类名(参数);
 5         Scanner scanner = new Scanner(System.in);
 6         System.out.println("请输入您的姓名:");
 7         //调用方法 对象名.方法名()
 8         String name = scanner.nextLine();//获取用户输入的字符串信息
 9         System.out.println("请输入您的年龄:");
10         int age = scanner.nextInt();
11         System.out.println("请输入您的身高:");
12         float height = scanner.nextFloat();
13         System.out.println("请输入您的体重:");
14         double weight = scanner.nextDouble();
15         System.out.println("是否已婚:");
16         boolean is = scanner.nextBoolean();
17         System.out.println("===========个人信息=========");
18         System.out.println("您的姓名是" + name);
19         System.out.println("您的年龄是" + age);
20         System.out.println("您的身高是" + height);
21         System.out.println("您的体重是" + weight);
22         System.out.println("是否已婚" + is);
23     }
24 }
Scanner使用

 

七.运算符

  1.算术运算符:+,-,*,/,%,++(自增),--(自减)

    i++和++i的异同: 

      相同:最后i都会加1; 

      不同:++在变量前是先自增1,再参与运算,再变量后是先参与运算再自增

  2.赋值运算符:=

  复合赋值运算符: +=,-=,*=,/=,%=

  技术分享

  3.比较运算符:>,>=,<=,<=,!=,==

  4.逻辑运算符:

    短路与&&:如果两个表达式中第一个为false,第二个表达式将不再进行运算。

    逻辑与&:不论表达式1是否为真,表达式2都将进行运算。

    短路或||:如果两个表达式中第一个为true,第二个表达式将不再进行运算。

    逻辑或|: 不论表达式1是否为真,表达式2都将进行运算非!:

  5.位运算符(了解):

运算符

含义

示例

~

按位非(NOT)/取反

b = ~a

&

按位与(AND)

c = a & b

|

按位或(OR)

c = a | b

^

按位异或(相同为0相异为1)

c = a ^ b

>>

右移;左边空位补最高位即符号位 

b = a >> 2

>>>

无符号右移,左边空位补0

b = a >>> 2

<<

左移;右边空位以补0

b = a << 1

 

           6.条件运算符(三目运算符): ?代替if…else条件结构

      int max = a>b?a:b;

    等同于

      int max;

 

      if(a>b){

 

        max=a;

 

      }else{

 

        max=b;

 

      }

    7.运算符的优先级

    技术分享

八.类型转换

  自动类型转换:容量小的数据类型可以自动转换为大的数据类型

  byte--short-int -long-float-double(从左至右)

  转换的前提:

    1.   两种数据类型相互兼容
    2.       目标类型大于源类型  

 

  在图中,黑色的实线表示无数据丢失的自动类型转换,而红色的虚线表示在转换时可能会精度的损失。

 

    技术分享

  特例: 可以将整型常量直接赋值给byte, short, char等类型变量,而不需要进行强制类型转换,只要不超出其表数范围

   Short  b = 12;     //合法

   short  b = 1234567;    //非法

  

  强制类型转换 

    强制类型转换,又被称为造型,用于显式的转换一个数值的类型. 在有可能丢失信息的情况下进行的转换是通过造型来完成的,但可能造成精度降低或溢出。

    强制类型转换的语法格式:(type)var”,运算符“()”中的type表示将值var想要转换成的目标数据类型。

        例如:

       double x  = 3.14; 

int nx = (int)x;   //值为3

char c = ‘a‘;

int d = c+1;

System.out.println(d);

System.out.println((char)d);

    当将一种类型强制转换成另一种类型,而又超出了目标类型的表示范围,就会被截断成为一个完全不同的值。

    

    例如:

      int x = 300;

               byte bx = (byte)x;    //值为44

    不能在布尔类型和任何数值类型之间做强制类型转换。

思考题:某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。

 

技术分享
 1 import java.util.Scanner;
 2 public class HomeWork4{
 3     public static void main(String[] args){
 4         /*
 5             解题思路:
 6             1,先获取用户输入的数字,定义一个Scanner对象
 7             2,将这个数字的个十百千位取出来
 8             3,将值进行加密操作,先加5在除以10取余
 9             3,利用异或运算交换个位和千位,十位和百位
10             4,输出数字
11         */
12         System.out.println("请输入4位整数:");
13         //定义一个Scanner对象
14         Scanner sc = new Scanner(System.in);
15         int num = sc.nextInt();
16         //将这个数字的个十百千位取出来
17         int ge = num%10;
18         int shi = num/10%10;
19         int bai = num/100%10;
20         int qian = num/1000;
21         //将值进行加密操作,先加5在除以10取余
22         ge = (ge+5)%10;
23         shi = (shi+5)%10;
24         bai = (bai+5)%10;
25         qian = (qian+5)%10;
26         //利用异或运算交换个位和千位,十位和百位
27         ge = ge^qian;
28         qian = ge^qian;
29         ge = qian^ge;
30         shi = shi^bai;
31         bai = bai^shi;
32         shi = shi^bai;
33         System.out.println("加密后的数据为:"+qian+bai+shi+ge);
34         
35     }
36 }
java code

结果如下: 

技术分享

思考题2:利用”异或”运算的性质,对几个字符进行加密并输出密文,然后再解密。加密算法是:密钥是字符’8’,明文的每个字符和密钥进行异或运算,得到密文。

密钥和密文的每个字符再次进行异或运算,重新得到明文。结果如图所示。技术分享

 

 这个题利用了一个数字被另一个数字异或运算2次会得到这个数字本身的原理

比如 int a=1;

  int b=2;  

  a=a^b^b;通过计算会发现a=1;一个数字被另一个数字异或两次会得到这个数字本身

答案:

技术分享
public class HomeWork5{
    public static void main(String[] args){
        char a = ‘十‘;
        char b = ‘点‘;
        char c = ‘进‘;
        char d = ‘攻‘;
        char e = ‘8‘;
        System.out.println("加密前的数据为:"+a+b+c+d);
        a = (char)(a^e);
        b = (char)(b^e);
        c = (char)(c^e);
        d = (char)(d^e);
        System.out.println("加密后的数据为:"+a+b+c+d);
        a = (char)(a^e);
        b = (char)(b^e);
        c = (char)(c^e);
        d = (char)(d^e);
        System.out.println("解密后的数据为:"+a+b+c+d);
    }
}
View Code

额外话题:为什么byte的取值范围是-128至127;而不是-127-127呢?

这个困扰了我很久,问了很多人一直得不到标准的答案,最后在一位帅哥的博客中找到了,很激动

1,byte是1个字节,8位

2.最大的应该是0111 1111,因为第一位是符号位,0表示正数

3.最小的应该是1000 0000,同理,表示负数最小的(1111 1111是最大的负数-1)

4.01111111就是127;

5.计算机分为补码,反码,原码,正数的补码反码原码都一样,负数的反码是按位取反0变1,1变0,比如1 000 1110 反码是 1 111 0001,1是符号位,补码是反码的基础上加1

6.补码的补码就是原码

7计算机用补码表示一个数的,1 000 0000 在计算机中就是补码,求其原码,可以求它的补码就是原码

8 1 000 0000反码是 1 1111111 补码是 1 10000000 就是-128

9 所以喽,byte的取值范围就是-128 - 127

 

java语言基础——数据类型与运算符

标识符:1.组成元素由字母、数字、下划线、美元符号($)2.标识符不能以数字开头3.标识符严格区分大小写4.标识符的命名要有意义(见名知意)注释:1.单行注释//2.多行注释/*注释的内容*/3.文档注释/**注释的内容*/常量常量的... 查看详情

java基础02—变量运算符和数据类型转换

...改变的量称为变量。变量与常量的命名都必须使用合法的标识符。1、标识符与关键字(1)标识符标识符可以简单地理解为一个名字,用来给类、变量、方法、文件等进行命名的有效字符序列。Java语言规定标识符只能由字 查看详情

java基础02—变量运算符和数据类型转换

...改变的量称为变量。变量与常量的命名都必须使用合法的标识符。1、标识符与关键字(1)标识符标识符可以简单地理解为一个名字,用来给类、变量、方法、文件等进行命名的有效字符序列。Java语言规定标识符只能由字 查看详情

java基础语法

...1.1.1关键字(keyword)的定义和特点:1.1.2保留字(reservedword):1.2标识符1.2.2定义合法标识符规则:1.2.3Java中的名称命名规范:1.3变量1.3.1基本数据类型1.3.2基本数据类型变量间的转换1.3.3基本数据类型与String间转换1.3.4进制与进制间的转换1.4... 查看详情

基本语法(上):变量与运算符(代码片段)

...2.1关键字和保留字2.1.1关键字的定义和特点2.1.2保留字2.2标识符2.3变量2.3.1变量的声明和赋值2.3.2数据类型2.3.3整数类型byte/short/int/long2.3.4浮点类型float/double2.3.5字符型2.3.6布尔型2.3.7基本数据类型转换2.3.8字符型String2.3.9练习2.4运算... 查看详情

数据类型(8种)和运算符——java

一、什么是标识符,它有什么作用(重点掌握)1.标识符指的是标识符是用户编程时使用的名字,用于给变量、常量、函数、语句块等命名,以建立起名称与使用之间的关系。标识符可由任何字母数字字符串形成。2.作用声明常... 查看详情

java((代码片段)

目录java基本语法主函数注释分隔符标识符和关键字标识符关键字标识符和关键字的区别数据类型类型语言和弱类型语言基本数据类型变量与常量变量常量运算符算术运算符数学函数与常量数值类型之间的转换强制类型转换赋值... 查看详情

java——数据类型和运算符

...读性,可分为:单行注释//多行注释/.../文档注释/*.../2、标识符的命名规则:标识符必须以字母、下划线、美元符号$开头。标识符其它部分可以是字母、下划线“”、美元符“$”和数字的任意组合。Java标识符大小写敏感,且长... 查看详情

java程序猿之数据运算和运算符

...格包含空格符(Space)、制表符(Tab)和回车符(Enter)等。  标识符 查看详情

java数据类型和运算符

一.标识符作用:常量、变量、方法、类和包等的名称命名规范:  1.必须以数字、字母、下划线或$符号开头  2.其他部分必须是数字、字母、下划线或$,不能出现特殊符号  3.标识符大小写敏感  4.不可以是Java的关键字... 查看详情

java学习-----01.java基础

...值;  java常用数据类型;  数据类型的使用;  标识符的命名规则;赋值运算符:算术运算符:  运算符优先级;  三目运算符;类型转换:  自动类型转换;  类型提升规则;  强制类型转换;标识符关键... 查看详情

java总结篇2

...换:自动类型转换、强制类型转换。二、重点内容:1、标识符:必须以字母、下划线、美元符$开头,其他部分可以是字母、下划线、美元符、数字的任意组合,不建议使用中文。(注意:标识符不能为Java关 查看详情

c语言-数据类型运算符与表达式(代码片段)

...变量1.变量的概念2.变量的两个要素变量的定义与初始化标识符命名规则数据类型C语言允许使用的数据类型 查看详情

java语言程序设计教程的目录

...第2章Java语言编程基础2.1数据类型、常量和变量2.1.1标识符和关键字2.1.2数据类型2.1.3基本数据类型2.1.4基本数据类型的转换2.1.5字符串类型2.2运算符与表达式2.2.1算术运算符与算术表达式2.2.2关系运算符与关... 查看详情

课程总结(代码片段)

...打代码会提高自身的水平,还是需要多打代码。Java中的标识符Java中的包、类、方法、参数和变量的名字,可由任意顺序的大小写字母、数字、下划线(_)和美元符号($)组成,但标识符不能以数字开头,不能是Java中的保留关... 查看详情

java学习系列2--数据类型和运算符

1.标识符作用:常量、变量、方法、类和包等的名称。命名规则:必须以字母、_下划线、$美元符号开头;     其他部分可以是字母、下划线、美元符、和数字的任意组合;     大小写敏感,长度无限制;    ... 查看详情

第二章变量和运算符知识点整理

...(也叫原生类):4类8种基本数据类型 引用数据类型标识符:Java中的包、类、方法、参数和变量的名称标识符命名规则: 必须以字母、下划线(_)或美元符号($)开头,余下的字符可以是下划线、美元符号或任何的字... 查看详情

数据类型和运算符

1标识符总的命名规则:见名知意。如果有多个单词组成,首单词小写,其余单词的首字母大写(驼峰命名法)。Eg:goodName  1.首字母只能是字母,下划线和$(美元符)  2.其余字母可以字母,下划线,$和数字组合  3.不能使用... 查看详情