JavaSE----基础语法(关键字、标识符、注释、常量、变量)


Java语言基础

1.1关键字

  1.1.1 关键字的定义和特点

  定义:被Java语言赋予特定含义的单词

  特点:全部小写。

  JavaSE----基础语法(关键字、标识符、注释、常量、变量)_第1张图片

  JavaSE----基础语法(关键字、标识符、注释、常量、变量)_第2张图片  

  注意事项:

  A:goto和const作为保留字存在。

  B:类似于Notepad++这样的高级记事本会对关键字有特殊颜色标记

  下面用Notepad++来写一个java小程序,其中关键字就是用绿色标记的几个单词:

  

1.2标识符

1.2.1 定义及特点

  定义:就是给类,接口,方法,变量等起名字的字符序列

  特点:由26个英文字母大小写,数字:0-9,符号:_、$组成。

1.2.2 定义合法标识符规则

  1. 数字不可以开头,例如:2Demo就不可以。
  2. 不可以使用关键字,例如:public就不可以,因为public是关键字。
  3. 不可以包含“_、$”以外的特殊符号,例如:“Demo Test”就不可以,其中的空格就是特殊符号
 

1.3注释

1.3.1定义和作用
  定义:就是对程序进行解释说明的文字
  作用:

  1、解释说明程序,提高了代码的阅读性。
  2、可以帮助我们调试程序。
1.3.2 Java中的注释格式
  1. 单行注释
  格式: //注释文字
  2. 多行注释
  格式: /*  注释文字  */
  3. 文档注释
  格式:/** 注释文字 */
  例如:

/**
这是我的第一个Java程序。
@author classmate
*/
class JavaDemo{
    /*
    这是主函数,是程序的入口。
    它的出现可以保证程序的独立运行。
    */
    public static void main(String[] args){
        //这是输出语句用于将括号内的数据打印到控制台。
        System.out.println("Hello World");
    }
}

1.4常量

1.4.1 定义
    定义:常量表示不能改变的数值。
1.4.2分类
    1、字面值常量
    2、自定义常量
1.4.2字面值常量
    1、字符串常量 "hello"
    2、整数常量 12,23
    3、小数常量 12.345
    4、字符常量 'a','A','0'
    5、布尔常量 true,false
    6、空常量 null(后面讲)

1.5变量

1.5.1 变量的概念
    定义:内存中的一个存储区域,该区域有自己的名称(变量名)和类型(数据类型),该区域的数据可以在同一类型范围内不断变化。
    特点:变量其实就是将不确定的数据进行存储,也就是需要在内存中开辟一个空间。
定义变量的格式:
    数据类型    变量名  =  初始化值;
    例如:byte b = 3;
1.5.2 Java语言的数据类型
    Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存中分配了不同大小的内存空间:
        byte     1个字节
        short    2个字节
        int        4个字节
        long     8个字节
        float     4个字节
        double 8个字节
        char     2个字节
    Java语言的数据类型包括8种基本类型,3种引用类型。
JavaSE----基础语法(关键字、标识符、注释、常量、变量)_第3张图片


注意:
    1、整数默认是int类型,浮点数默认是double类型。
    2、
整型后缀用L或者l标。建议使用L。单精度浮点数用F或者f标记。建议使用F。


1.5.3 常见错误

    示例一:

class DataTypeDemo{
	public static void main(String [] args){
		//定义一个整型变量
		int i = 100000000000;
		System.out.println(i);
	}
}

 
 

   编译时出错:

JavaSE----基础语法(关键字、标识符、注释、常量、变量)_第4张图片

    错误原因:由于整数默认类型是int类型,如果数值超过了int类型的范围,那么就会报如上错误。
    解决方法:在数值后面加上一个“l”或“L”,就可以让编译器知道后面的常量是long类型。
代码如下:
class DataTypeDemo{
	public static void main(String [] args){
		//定义一个整型变量
		long l = 100000000000L;
		System.out.println(l);
	}
}
    编译结果:


示例二:

class DataTypeDemo{
	public static void main(String [] args){
		//定义一个浮点型型变量
		float f = 12.34;
        System.out.println(f);
	}
}

    编译出错:

JavaSE----基础语法(关键字、标识符、注释、常量、变量)_第5张图片
    出错原因: 由于小数默认是double(8byte)类型,赋值给float(4byte)类型的变量,所以编译时会提示可能会损失精度

    解决方法:在数值后面加上一个“f”或“F”,让编译器知道后面的常量是float类型的。

    代码如下:

class DataTypeDemo {
	public static void main(String[] args) {
		// 定义一个浮点型变量
		float f = 12.34F;
		System.out.println(f);
	}
}

    编译结果:
JavaSE----基础语法(关键字、标识符、注释、常量、变量)_第6张图片

    示例三:

class DataTypeDemo
{
    public static void main(String[] args){
        float f;
        System.out.println(f);
    }
}
    编译出错:

JavaSE----基础语法(关键字、标识符、注释、常量、变量)_第7张图片

    出错原因:变量必须初始化后才能使用。

1.5.4 类型转换

    Java是一种强类型语言,针对每种数据都提供了对应的数据类型。类型转换共分两种,自动类型转换和强制类型转换。

    1. 自动类型转换(隐式类型转换)  
    定义:自动类型转换就是不需要我们手动对类型来进行强制转换。

    转换规则:1)boolean类型不参与转换

    2)byte,short,char -- int -- long -- float -- double
    3)byte,short,char之间不相互转换,直接转成int类型参与运算。

class DataTypeDemo3{
	public static void main(String [] args){
		//定义一个byte类型,一个int类型,做加法
		byte a = 3;
		int b = 4;
		System.out.println(a + b);
	}
}
    运行结果:
JavaSE----基础语法(关键字、标识符、注释、常量、变量)_第8张图片

    说明:int类型的变量占4个字节,当byte类型的变量与其相加的时候,首先会将byte类型的变量自动转化为4个字节的int类型,然后再进行加法操作。

     2. 强制类型转换(显式类型转换) 

    定义:强制类型转换需要把类型进行手动转换,否则无法正常使用

class DataTypeDemo3{
	public static void main(String [] args){
		//定义一个byte类型,一个int类型,做加法
		byte a = 3;
		int b = 4;
		byte c = a + b;
		System.out.println(c);
	}
}
    编译时出错:

JavaSE----基础语法(关键字、标识符、注释、常量、变量)_第9张图片

    出错原因:byte类型(1个字节)的变量a与int类型(4个字节)的变量b相加时,变量a首先被提升为int类型,相加后得到结果为7,也是int类型,将int类型的数值赋值给byte类型的变量c,所以编译时会出现可能损失精度的错误。

    解决办法:强制转换

   代码如下;

class DataTypeDemo3{
	public static void main(String [] args){
		//定义一个byte类型,一个int类型,做加法
		byte a = 3;
		int b = 4;
		byte c = (byte)(a + b);
		System.out.println(c);
	}
}
    运行结果:

JavaSE----基础语法(关键字、标识符、注释、常量、变量)_第10张图片

1.5.5 面试题

    1、下面的程序编译时哪条语句会出错?

class DataTypeDemo3{
	public static void main(String [] args){
		byte b;
		byte b1 = 3;
		byte b2 = 4;
		b = 3 + 4;
		b = b1 + b2;
		System.out.println(b);
	}
}


    编译结果:

    分析原因:b = 3 + 4;”语句不会出错的原因是因为3和4是常量,编译器在编译常量运算时,会先把结果算出来,然后判断结果是否在byte范围 内,如果在则不会报错。而“b = b1 + b2”这条语句执行时,编译器会先将byte类型的变量b1和b2提升为int类型,然后得到的结果也是int类型,所以将int类型的结果赋值给byte类型的变量b时会提示可能损失精度。

    2、写出下面程序的运行结果:

class DataTypeDemo3{
	public static void main(String [] args){
		byte b = (byte) 130;
		System.out.println(b);
	}
}
    分析:由于byte类型的数据范围是-128~127,130超过了该范围。我们都知道,计算机中数据的运算都是补码进行的。而要得到补码,首先要计算出数据的二进制。将130赋值给byte类型的变量b时,会将130提升到int型(4个字节),用二进制表示:00000000 00000000 00000000 10000010,这是130的原码,也是130的反码和补码,将该值赋值给byte型变量时,会进行截取操作,变为1个字节,即10000010,这是一个数的补码,我们看到的是原码,所以要求出原码。

已知补码求原码。    

  符号位 数值位
补码 1 0000010
反码 1 0000001
原码 1 1111110
即-126

你可能感兴趣的:(java,Java学习笔记)