【Java基础语法】关键字,标识符,数据类型,常变量

关键字

Q:什么是关键字?

A:组成Java程序 的语法 的单词

Q:关键字都有哪些?

A:如下图:
在这里插入图片描述
在这里插入图片描述

Q:关键字需要特别记忆吗?

A:不用,代码写的多了就记住了。例如public

Q:使用关键字时,还要注意什么?(共3点)

A:

  1. 组成关键字的字母全部小写
  2. 关键字是被Java语言赋予特定含义的单词,所以在我们自定义类名,方法名,变量名时,不能使用关键字。
  3. 类似Notepad++这样的高级记事本,针对关键字有特殊的颜色标记,非常直观。

如下图:标紫颜色单词即为关键字。
图中紫色单词,即关键字。如图中紫色单词,即关键字。


刚接触java时,关键词了解到这就可以啦~
后面我们继续学习时,会陆续对以上关键字一探到底!



标识符

Q:标识符是什么?

在程序中,用户给类,方法,变量,常量所起的名字,都可以称为标识符。同时,我们在代码中见到的名称,例如main,也可以看做是标识符。

Q:标识符的组成规则是什么?

标识符由数字,字母,下划线_,美元符号$组成

1.硬性要求
  • 标识符不能数字开头
  • 标识符不能是关键字
  • 标识符严格区分大小写
2.软性建议(程序员都默认的驼峰式方法命名,见名知意)
  • 标识符长度一般不要超过15个字符。

  • 常量名:所有字母大写(无论几个单词)

  • 标识符只是一个单词时,组成单词的所有字母小写;

  • 标识符是两个及以上单词,遵循驼峰命名规则
    1.类名:每个单词的首字母大写(大驼峰),例如HelloWorld
    2.方法名/变量名:首字母小写,后面每个单词的首字母大写(小驼峰),例如helloWorld。

以上规则的出现是因为,一个大型的工程一般是由多名工程师协同开发的。
如果每个人都按照自己的方式随意取名,.这会使程序非常混乱。
如果大家在取名时能够遵循一定的规则,那多人写的代码仿佛一个人写的。

3.测一测???

下面哪些标识符是 合法的?答案跳转:1
a:Public
b:public
c:123yc
d:hello:world
e:$hello
f:zxc


在看上文的时候,不知道大家有没有发现:我对关键字的理解就是:组成java语法的单词。对标识符的理解就是:我们在代码中见到的名称。它们都是代码中的很表面的东西。而接下来,我们看到的数据类型,将真正带我们走进代码背后的世界~



数据类型

Q:计算机是怎样保存数据的?

Q:先举个例子:假设你要利用java语言,在计算机上实现两个数的相加。那么要解决的第一个问题就是:如何把这两个数存储到计算机中?
A:电脑使用内存记忆计算时所使用的的数据

Q:如何把数据放到内存中?

A:把内存比作酒店,在内存中存储数据就类似于人入住酒店。

旅客想要入住酒店:

  1. 在酒店前台开房间,房间类型有单人间,双人间,总统套房
  2. 根据旅客的需求,选择合适的房间
  3. 入住

把数据存储当内存中:

  1. 向内存申请空间,空间(数据)类型有布尔类型,有浮点型,有整型等等。
  2. 根据数据的类型,选择合适的空间
  3. 存储数据

Q:数据类型是什么?

A:可以把数据类型形象理解为酒店房间类型
在这里插入图片描述

Q:代码中的数据类型会做什么行为?

A:数据是各式各样的。代码中数据类型的作用就是根据数据的类型,在内存中申请一块合适的空间,存储数据

Q:在java中,数据类型都有哪些?

A:
如图,数据类型可以分为8个基础数据类型和一些引用类型。

在这里插入图片描述

Q:单个数据类型详解:

首先我们来看8个基本数据类型:
在这里插入图片描述

1.int(整型):
  1. 无论在16位操作系统下还是32位操作系统下,int类型向内存申请一个大小为4byte的空间,存放数据,数据是范围在-231~231-1之间的整数。
  2. 这里先简单理解一下变量,后面会具体写。
  • 量理解为数据的统称,变就是可变的。变量就是可变的数据。
  • 变量名就是这个可变数据的统称。
  • 变量的具体内容就是数据值。
  • 数据类型变量名变量的具体内容,它们三者的联系是:数据类型申请特定空间。该空间中可以存放特定一类数据,这一类数据的统称就是变量名。该空间中实际存放着数据值。所以他们三者体现在语法上就是:数据类型 变量名 = 数据值;
  1. java中局部变量的初始数据值不能为空,否则编译不通过!

  2. 同时,在给变量赋值/设置初始值时,值不能超过int的范围,否则会导致值溢出。值溢出怎么办?通过强制类型转换(后面会说),编译通过,但导致数据丢失。

  3. Integer:int的包装类型,通俗的讲,Integer就是int的加大版本,Integer的功能比int更强大。利用Integer在屏幕上打印int型变量所能表示的最大/最小范围

代码演示:

public class Zhengxing {
    public static void main(String[] args) {
        //演示1.2.
        int a = 10;
        //int向内存申请一个大小为4byte的空间,可以存放变量a,变量a的初始数据值是10。
        //局部变量a

        //演示3.
        //int c;
        //System.out.println(c);
        //编译不通过:变量c没有设置初始值

        //演示4.
        //int b = 12345678977894645;
        //编译时报错,初值超过了int的范围,导致数据值溢出

        //演示5.
        //利用Integer在屏幕上打印int型变量所能表示的最大/最小范围
        System.out.println(Integer.MIN_VALUE);
        System.out.println(Integer.MAX_VALUE);
    }
}

运行结果:在这里插入图片描述
思考:在演示3中,int不能存储变量b,那我们如何存储变量b呢?点击跳转答案2

2.long(长整型):
  1. 无论在16位操作系统下还是32位操作系统下,long类型向内存申请一个大小为8byte的空间,存放数据,数据是范围在-263~263-1之间的整数。
  2. java默认整数的数据类型是int,所以存储long类型数据的时候,一般情况下会在数据后面加L或l,代表该数据是一个长整型。
  3. Long:long的包装类型。利用Long在屏幕输出long类型能表示的最大和最小范围。

代码演示:

public class Changzhengxing {
    public static void main(String[] args) {
        //演示1.2.
        long num1 = 5l;
        long num = 5L;//推荐加L,避免认错数字1和小写字母l
        //long向内存申请一个大小为8byte的空间,存放变量num,变量num的值是5。

        //演示3
        //利用Long在屏幕输出long类型能表示的最大和最小范围。
        System.out.println(Long.MAX_VALUE);
        System.out.println(Long.MIN_VALUE);
    }
}

运行结果:
在这里插入图片描述

3.short(短整型):
  1. 无论在16位操作系统下还是32位操作系统下,short类型向内存申请一个大小为2byte的空间,存放数据,数据是范围在-215~215-1之间的整数。
  2. Short是short的包装类型。利用Short在屏幕输出short类型能表示的最大和最小范围。
  3. 使用short类型时,注意不要超过范围(一般使用较少)

代码演示:

public class Duanzhengxing {
    public static void main(String[] args) {
         //演示1.
        short sh = 10;
        //short向内存申请一个大小为2byte的空间,存放变量sh,变量num的值是10。

        //演示2.
        //利用Short在屏幕输出short类型能表示的最大和最小范围。
        System.out.println(Short.MAX_VALUE);
        System.out.println(Short.MIN_VALUE);
    }
}

运行结果:
在这里插入图片描述

4.byte(字节型):
  1. 无论在16位操作系统下还是32位操作系统下,byte类型向内存申请一个大小为1byte的空间,存放数据,数据是范围在-27~27-1之间的整数。
  2. Byte是byte的包装类型。利用Byte在屏幕输出byte类型能表示的最大和最小范围。

代码演示:

public class Zijiexing {
    public static void main(String[] args) {
        //演示1.
        short m = 10;
        //Byte向内存申请一个大小为1byte的空间,存放变量m,变量num的值是10。

        //演示2.
        //利用Byte在屏幕输出byte类型能表示的最大和最小范围。
        System.out.println(Byte.MAX_VALUE);
        System.out.println(Byte.MIN_VALUE);
    }
}

运行结果:
在这里插入图片描述


思考:byte、short、int、long都可以定义整形变量,为什么要给出4中不同类型呢?点击查看答案3



5.double(双精度浮点型):
  1. 无论在16位操作系统下还是32位操作系统下,double类型向内存申请一个大小为8byte的空间,存放数据。
  2. double向内存申请的空间中存放的数据同样有范围,但具体范围我们不做关注。因为 浮点数和整数在内存中的存储方式4不同,不能单纯使用2n的形式来计算double空间下数据的范围。
  3. double 类型的内存布局遵守 IEEE 754 标准(二进制浮点数算术标准), 即尝试使用有限的内存空间(64bit)表示可能无限的小数,。这势必会存在一定的精度误差,因此浮点数是个近似值,并不是精确值。
  4. Double是double的包装类型。

代码演示:

public class Fudianshu {
    public static void main(String[] args) {
        //演示1.
        //向内存申请一个大小为8byte的空间,存放变量d。
        double a = 3.14;
        System.out.println(a);

        //演示3.
        //演示3.1:会输出1.21吗?
        double b = 1.1;
        System.out.println(b * b);
        //演示3.2:会输出0.5吗?
        double c = 1.0;
        double d = 2.0;
        System.out.println(c / d);
        //演示3.3:会输出0.5吗?
        int e = 1;
        int f = 2;
        System.out.println(e / f);

        //演示4.(一般不关注)
        //利用Double在屏幕输出double类型能表示的最大和最小范围。
        System.out.println(Double.MAX_VALUE);
        System.out.println(Double.MIN_VALUE);

    }
}

运行结果:
在这里插入图片描述

  1. 演示3.3运行结果解释:从数学上来说,结果是0.5。但在java中, int 除以 int 的值仍然是 int,int申请的空间中无法保存小数,所以会直接舍弃小数部分。
  2. 演示3.1和3.2运行结果解释:double类型向内存申请一个大小为8byte的空间,即double类型的数值占用空间大小为64bit。在64个二进制数中,除去最高位表示正负符号的位,在最低位上一定会与实际数据存在误差,比如演示3.1(除非实际数据恰好是2n,比如演示3.2)。简单来说,就是我们给出的数值,在大多数情况下需要比64bit更多的位数才能准确表示出来(甚至是需要无穷多位),而double类型的数值只有64bit,后面舍去的位数一定会带来误差,无法得到数学上精确的结果
  3. (可忽略)演示4运行结果解释:4.9E-324是一个无限趋近0,最小的,非负的浮点数。
6.float(单精度浮点型):
  1. 无论在16位操作系统下还是32位操作系统下,float类型向内存申请一个大小为4byte的空间,存放数据。
  2. java默认浮点数的数据类型是double,所以存储float类型数据的时候,需要在在数据后面加F或f,代表该数据是一个单精度浮点型。
  3. float向内存申请的空间中存放的数据同样有范围,但相较于double,float申请空间下的数据精度范围较小(64bit都无法精确表达,何况是32bit)。一般在工程上用到浮点数也都优先考虑 double, 不太推荐使用 float。
  4. float类型的内存布局也遵守 IEEE 754 标准(二进制浮点数算术标准)。即尝试使用有限的内存空间(32bit)表示可能无限的小数。
  5. Float是float的包装类型。

代码演示:

public class Fudianshu {
    public static void main(String[] args) {
       //演示1.
       //向内存申请一个大小为4byte的空间,存放变量num。
       float num = 1.0F;
       System.out.println(num);

       //演示5.(一般不关注)
        //利用Float在屏幕输出float类型能表示的最大和最小范围。      System.out.println(Float.MAX_VALUE);
        System.out.println(Float.MIN_VALUE);
    }
}

演示1运行结果:
在这里插入图片描述


趣味思考:小明在某款软件里通过看视频提现红包,软件告知小明还差99.99%就可以提现啦,于是小明认为马上就可以成功提现了!事实真的是这样吗?点击查看答案5


7.char(字符型):
  1. 无论在16位操作系统下还是32位操作系统下,char类型向内存申请一个大小为2byte的空间,存放数据,数据是范围在0~65535之间的整数。
  2. 计算机中的字符本质上是一个整数。在C语言中,数据类型char向内存申请一个大小为1byte的空间,存放数据,数据是范围在0~255之间的整数,即使用256个ACSII代码表示字符6。相比之下,在java中,使用65536个Unicode表示字符,并且Unicode代码包含ACSII代码,比如字符’A’的ACSII码值是065,它的Unicode码值也是065。所以,java中的数据类型char能存放的字符种类更多,包括中文。(一个汉字字符占两个字节)
  3. java中使用 ’ 单个字符 ’ (单引号+单个字符)的形式表示char类型字符字面值。
  4. Character是char的包装类型。利用Character在屏幕输出character类型能表示的最大和最小值范围。

代码演示:

public class Zifuleixing {
    public static void main(String[] args) {
        //演示1.3.
        char ch1 = 'z';
        char ch2 = '1';
        char ch3 = '帅';
        System.out.println(ch1);
        System.out.println(ch2);
        System.out.println(ch3);

        //演示4.
        //利用Character在屏幕输出character类型能表示的最大和最小值范围。
        System.out.println(Character.MAX_VALUE);
        System.out.println(Character.MIN_VALUE);
    }
}

运行结果:
在这里插入图片描述



8.boolean(布尔类型):
  1. 布尔类型的数据值只有两种,true和false,true表示真,false表示假。
  2. java语法中没有明确规定Boolean类型向内存申请了多大的空间。
  3. Boolean是boolean的包装类型。
  4. true和false与数字类型不同,所以布尔类型和其他7个基本数据类型不能进行类型转换。

代码演示:

public class Buerleixing {
    public static void main(String[] args) {
        //演示1
        boolean a = true;
        System.out.println(a);
        a = false;
        System.out.println(a);

        //演示4.
        //boolean c = true;
        //int b = c;
        
        //boolean d = true;
        //System.out.println(d+1);

    }
}

运行结果:
演示1:
在这里插入图片描述
演示2:
在这里插入图片描述

演示3:
在这里插入图片描述



Q:数据类型转换

A:

  1. java是一个强类型编程语言。即当不同数据类型(数值型和字符型)下的变量之间进行相互赋值 的时候,会有严格的语法规定。该语法规定即数据类型转换。
  2. 不相干的数据类型之间由于兼容问题不能相互转换,比如Boolean和另外7种基本数据类型中的任一种之间;比如整型和浮点型之间;浮点型和字符型之间。注意整型和字符型之间可以进行相互转化。
  3. 数据类型转换分为自动类型转换和强制类型转换。
1.自动数据类型转换(小赋给大)

我们以数据类型向内存申请的空间大小为标准,当空间中的变量a要赋给空间中的变量b时,在代码编译过程中,编译器会自动先把变量a的类型提升为变量b的类型,然后再赋值。这就是自动类型转换。

代码演示:

public class Leixingzhuanhuan {
    public static void main(String[] args) {
      int a = 10;
      long b = 100L;
      b = a;
      System.out.println(b);
      // 计算机自动把变量a的类型提升为long类型,再赋给变量b,即自动类型转换。
     
    }
}

运行结果:
在这里插入图片描述

2.强制数据类型转换(小赋给大)
  1. 同样以数据类型向内存申请的空间大小为标准,当空间中的变量要赋给空间中的变量时,在编译过程中,一定会导致数据丢失。但是java是一个安全的编程语言,于是就使得其编译器不会自动完成类型转换,同时报错。此时如果想要完成类型转换,需要我们写“确认”代码,进行强制类型转换。
  2. 需要注意的是:强制类型转换不一定成功。
  3. 强制类型转换下数据可能导致数据丢失。

代码演示:

public class Leixingzhuanhuan {
    public static void main(String[] args) {
    //演示1.
      int a = 10;
      long b = 100L;
      //a = b;
      // 计算机不能自动把大空间里的变量值赋给小空间里的变量值,于是报错
      a = (int)b;
      System.out.println(a);
      //用户写确认代码,确认把long类型的变量b转换为int类型,然后再把b值赋给变量a。这就是强制类型转换。

     //演示3.
     //强制类型转换造成数据丢失
      byte c = 2;
      long d = 500;
      c = (byte)d;
      System.out.println(c);  
    }
}

运行结果:
在这里插入图片描述

3.把字面常量直接赋给变量

把一个字面常量值(见后面)赋给一个变量时,java会自动根据数字范围进行检查。在范围之内,赋值成功。在范围之外,写“确认”代码,进行强制类型转换,否则报错。

代码演示:

public class Leixingzhuanhaun {
    public static void main(String[] args) {
        byte a = 10;
        byte b = (byte)300;
        System.out.println(a);
        System.out.println(b);
    }
}

运行结果:
在这里插入图片描述

Q:数据类型提升

A:类型提升就是:当不同数据类型(数值型和字符型)下的变量之间进行相互运算 的时候,小空间的数据类型会被提升成为大空间的数据类型。



现在,想必大家对于酒店的房间类型(数据类型)已经了解的很清楚了,接下来就让我们继续了解要入住酒店的人(常变量)吧!
在这里插入图片描述可以把接下来要学习的 常变量 形象理解为入住酒店的人



常/变量(这里指局部变量)

Q:常量是什么?

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

public class Constant {
    public static void main(String[] args) {
        System.out.println("100");
        System.out.println("hello world");
        System.out.println('a');
        System.out.println(3.14);
        System.out.println(true);
        //在上述语句中,无论程序如何运行,
        // 输出的都是100,hello world,a,3.14,true,
        //100,"hello world",'a',3.14,true它们都是不能改变的量,即字面常量
    }
}

Q:字面常量分为哪几类?

与数据类型所对应,字面长量分为整型常量,浮点型常量,字符常量,布尔常量,字符串常量,空常量。

  1. 整型常量:程序中直接写的数字(注意没有小数点),比如100,1000
  2. 浮点数常量:程序中直接写的小数,比如3.14,0.49
  3. 字符常量:由‘’(单引号)括起来的单个字符,比如‘a’,‘1’。
  4. 字符串常量:由“”(双引号)括起来的多个字符,比如“你好”,“1345”,“helloworld”。
  5. 布尔常量:只有两种true和false
  6. 空常量:null

Q:什么是变量?

A:

  1. 在java程序中,可以被改变的量即变量。一个变量只能存一个值。
  2. 定义在方法内部的变量叫局部变量。

Q:变量有什么特点?

A: java是强类型语言,即如果我们想使用自定义变量,首先必须确定这个自定义变量的类型
所以,变量的特点是:先定义数据类型后使用。不定义不使用。

Q:变量使用的语法:

A:数据类型 变量名称 = 值;
在计算机上达到存值的目的
例如:int num = 10;
(基本数据类型int向内存申请了一块大小为4byte的空间,把变量num(num的值是10)存储到了计算机内存中)

代码练习:

public class Variable {
    public static void main(String[] args) {
        //演示1
        //name = "张三";
        //System.out.println(name);
        //name变量使用前没有定义数据类型
        // 程序运行时报错:错误:找不到符号

        //演示2
        String name = "张三";
        System.out.println(name);
        
        //演示3:
        String sex = "";
        //String sex = "";等同于String sex = Null;
        //String默认值是Null,Null是空的意思
        sex = "女";
        //什么是变量?
        //一个变量只能存一个值,sex从默认值Null改变为“女”,即sex是可以改变的量,sex是变量
        System.out.println(sex);
        
         //演示4
        //int b;
        //System.out.println(b);
        //变量b没有初始化
        //程序运行时报错:可能尚未初始化变量b
        //java当中的局部变量一定要赋值,否则编译不通过!

    }
}
}

以上就是我对于java基础语法中关键字,标识符,数据类型,常变量的相关理解啦!如有不对的地方,欢迎各位大佬来指正!
本篇完结~
撒花~



  1. aef合法 ↩︎

  2. int类型向内存申请一个大小为4byte的空间,存放范围在-232~232-1之间的整数数据。long类型向内存申请一个大小为8byte的空间,存放范围在 -263~263-1之间的整数数据。所以可以选择long类型存储变量b。 ↩︎

  3. 这就好比根据自己的尺码买适合自己的衣服,有4中不同的数据类型是为了根据不同场景下的不同变量,申请更适合它们的空间 。提高空间利用率。 ↩︎

  4. java是面向对象的语言,所以在学习java的过程中,关于数据在内存中究竟是如何存储的,可以不做深入理解。如果想学习数据的存储方式,详情移步C语言专栏。 ↩︎

  5. 小明离成功提现还差的很远。这里的99.99%可能是99.990000000009%。在程序的世界中,不存在任何一个精确的小数。我们常说的精确到小数点后XX位,意思也仅指:小数点后这XX位是最精确的,但是浮点数的小数点后不止有XX位,剩余的位数都是不精确的。 ↩︎

  6. ACSII代码简单理解就是,给电脑上的字符分别用数字编个号码。这些数字号码即ACSII码值。知道ACSII码值,就能对应找到符号。下面是常用字符与ASCII代码对照表:在这里插入图片描述 ↩︎

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值