当前位置:   article > 正文

Java学习笔记 | Java基础语法01 | 变量与常量

Java学习笔记 | Java基础语法01 | 变量与常量

0.前言

  • 本Java笔记是对黑马程序员的Java笔记进行了重新的排版和整理,并对部分内容进行了优化,适用于学习过Java但需要复习加巩固基础的人群查阅,其中有不对或者不全之处,欢迎指正

1. 注释

1.1 注释格式

  • 注释是对代码的解释和说明文字。

  • Java中的注释分为三种:

    • 单行注释:

      // 这是单行注释文字
      
      • 1
    • 多行注释:

      /*
      这是多行注释文字
      这是多行注释文字
      这是多行注释文字
      */
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 注意: 多行注释不能嵌套使用。
    • 文档注释(暂时用不到):注释内容可以被JDK提供的工具javadoc所解析,生成一套一网页文件形式体现的该程序的说明文档,一般写在类上面

      • 解析格式:javadoc -d 文件名 -xx -yy TestComment.java

1.2 使用的技巧

  • 如果我们要对代码进行解释,那么就可以使用注释。

  • 当注释的内容比较少,一行就写完了,可以用单行注释。

  • 如果注释的内容比较多,需要写在多行,那么可以使用多行注释,但是多行注释里面不允许有多行注释嵌套。

注意事项:

  • 注释的内容不会参与编译和运行的,仅仅是对代码的解释说明而已。

  • 所以,不管在注释当中写什么内容,都不会影响代码运行的结果。

  • 类、方法的注释,要以javadoc的方式来写。

  • 非javadoc注释往往是给代码的维护者看的,着重告诉读者为什么这样写,如何修改,注意什么问题等。

2. 关键字

2.1 概念

  • 概念: Java赋予了特定含义的英文单词。

    • 当我们在代码中写了关键字之后,程序在运行的时候,就知道要做什么事情了。
  • 注意: 关键字很多,不用刻意去记。

abstractassertbooleanbreakbyte
casecatchcharclassconst
continuedefaultdodoubleelse
enumextendsfinalfinallyfloat
forgotoifimplementsimport
instanceofintinterfacelongnative
newpackageprivateprotectedpublic
returnstrictfpshortstaticsuper
switchsynchronizedthisthrowthrows
transienttryvoidvolatilewhile
  • 分类:
  1. 用于定义数据类型的关键字:class、interface、enum、byte、short、int、long、float、double、 char、boolean、void
  2. 用于定义数据类型值的关键字:true、false、null
  3. 用于定义流程控制的关键字:if、else、switch、case、default、while、do、for、break、continue、return
  4. 用于定义访问控制权限修饰符的关键字:private、protected、public
  5. 用于定义类、函数,变量修饰符的关键字:abstract、final、static、synchronized
  6. 用于定义类与类之间的关键字:extends、implements
  7. 用于定义建立实例以及引用实例,判断实例的关键字:new、this、super、instanceof
  8. 用于处理异常的关键字:try、catch、finally、throw、throws
  9. 用于包的关键字:package、import
  10. 其它修饰符关键字:native、strictfp、transient、volatile、assert

2.2 class关键字

  • class:表示定义一个类 或 创建一个类。

    • 类是Java项目最基本的组成单元,一个完整的Java项目有可能会有成千上万个类来组成的。
  • 细节:

    • 后面跟随的就是这个类的名字,简称:类名。
    • 在类名后面会有一对大括号,表示这个类的内容。
  • 代码演示:

public class HelloWorld{
     
}
/*
解释:
- class表示定义类。
- 类名:HelloWorld
- HelloWorld后面的大括号表示这个类的范围。
*/
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

2.3 保留字

  • Java 保留字: 现有 Java 版本尚未使用,但以后版本可能会作为关键字使用,所以自己命名标识符时要避免使用
  • 保留字: byValue、cast、future、 generic、 inner、 operator、 outer、 rest、 var 、 goto 、const

3. 字面量

3.1 字面量种类

  • 作用: 告诉程序员,数据在程序中的书写格式。
字面量类型说明程序中的写法
整数不带小数的数字666,-88
小数带小数的数字13.14,-5.21
字符必须使用单引号,有且仅能一个字符‘A’,‘0’, ‘我’
字符串必须使用双引号,内容可有可无“HelloWorld”,“黑马程序员”
布尔值布尔值,表示真假,只有两个值:true,falsetrue 、false
空值一个特殊的值,空值,不能直接打印,会报错值是:null
  • 代码演示:

    public class Demo {
        public static void main(String[] args) {
            System.out.println(10); // 输出一个整数
            System.out.println(5.5); // 输出一个小数
            System.out.println('a'); // 输出一个字符
            System.out.println(true); // 输出boolean值true
            System.out.println("欢迎来到黑马程序员"); // 输出字符串
        }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
  • 区分技巧:

    1. 不带小数点的数字都是整数类型的字面量。
    2. 只要带了小数点,那么就是小数类型的字面量。
    3. 只要用双引号引起来的,不管里面的内容是什么,不管里面有没有内容,都是字符串类型的字面量。
    4. 字符类型的字面量必须用单引号引起来,不管内容是什么,但是个数有且只能有一个。
    5. 字符类型的字面量只有两个值,true、false。
    6. 空类型的字面量只有一个值,null。
    7. \t制表符:在打印的时候,把前面字符串的长度补齐到8,或者8的整数倍。最少补一个空格,最多补8个空格。

3.2 常用转义字符

转移字符作用
\t一个制表位,实现对其功能
\n换行符
\\一个\
\"一个“
\'一个’
\r一个回车,System.out.println(“韩顺平教育\r北京”);

代码演示:

//演示转义字符的使用
public class ChangeChar{
	//编写一个main方法
	public static void main(String[] args){
		//\t :一个制表位,实现对齐的功能
		System.out.println("北京\t 天津\t 上海");
		// \n :换行符
		System.out.println("jack\nsmith\nmary");
		// \\ :一个\ \\
		System.out.println("C:\\Windows\\System32\\cmd.exe");
		// \" :一个" 
		System.out.println("老韩说:\"要好好学习 java,有前途\"");
		// \' :一个' 
		System.out.println("老韩说:\'要好好学习 java,有前途\'");
		// \r :一个回车 
		System.out.println("韩顺平教育\r北京");
		// 解读
		// 1. 输出 韩顺平教育
		// 2. \r 表示回车
		System.out.println("韩顺平教育\r北京"); // 北京平教育
		System.out.println("韩顺平教育\n武汉 \r 北京");
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

4.变量

4.1 变量定义

  • 文字定义: 变量就在程序中临时存储数据的容器。但是这个容器中只能存一个值。变量是程序的基本组成单位。

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

    • 格式详解:

      • **数据类型:**限定了变量当中能存储什么类型的数据。

        • 如果要存10,那么数据类型就需要写整数类型。
        • 如果要存10.0,那么数据类型就需要写小数类型。
      • **变量名:**其实就是这个容器的名字,当以后想要使用变量里面的数据时,直接使用变量名就可以了。

      • **数据值:**真正存储在容器中的数据。

      • **分号:**表示语句的结束,就跟以前写作文时候的句号是一样的。

4.2 数据类型

1.分类

  • 基本数据类型
  • 引用数据类型:类、接口、数组(面向对象的时候再深入学习)

2.基本数据类型(四类八种)

数据类型关键字内存占用(字节)取值范围
整数(数值型)byte1记忆:负的2的7次方 ~ 2的7次方-1(-128~127)
short2负的2的15次方 ~ 2的15次方-1(-32768~32767)
int4负的2的31次方 ~ 2的31次方-1
long8负的2的63次方 ~ 2的63次方-1
浮点数(数值型)float41.401298e-45 ~ 3.402823e+38
double84.9000000e-324 ~ 1.797693e+308
字符型char20~65535
布尔型boolean1true,false
  • 注意事项:

    • 在java中整数默认是int类型,浮点数默认是double类型。
    • byte类型的取值范围:-128 ~ 127
    • int类型的大概取值范围:-21亿多 ~ 21亿多
    • 整数类型和小数类型的取值范围大小关系:double > float > long > int > short > byte
  • 技巧:

    • 最为常用的数据类型选择:

      • 在定义变量的时候,要根据实际的情况来选择不同类型的变量。

        • 比如:人的年龄,可以选择byte类型。
        • 比如:地球的年龄,可以选择long类型。
      • 如果整数类型中,不太确定范围,那么默认使用int类型。

      • 如果小数类型中,不太确定范围,那么默认使用double类型。

      • 如果要定义字符类型的变量,那么使用char

      • 如果要定义布尔类型的变量,那么使用boolean

3.变量初始化细节

  • 代码演示:
public class VariableDemo3{
    public static void main(String[] args){
        //1.定义byte类型的变量
        //数据类型 变量名 = 数据值;
        byte a = 10;
        System.out.println(a);

        //2.定义short类型的变量
        short b = 20;
        System.out.println(b);

        //3.定义int类型的变量
        int c = 30;
        System.out.println(c);

        //4.定义long类型的变量
        long d = 123456789123456789L;
        System.out.println(d);

        //5.定义float类型的变量
        float e = 10.1F;
        System.out.println(e);

        //6.定义double类型的变量
        double f = 20.3;
        System.out.println(f);

        //7.定义char类型的变量
        char g = 'a';
        System.out.println(g);

        //8.定义boolean类型的变量
        boolean h = true;
        System.out.println(h);

    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37

定义过程中的细节:

  • 如果要定义一个long类型的变量,那么在数据值的后面需要加上L后缀。(大小写都可以,建议大写。)

  • 如果要定义一个float类型的变量,那么在数据值的后面需要加上F后缀。(大小写都可以)

  • Java各数据类型有固定的范围和字段长度,不受具体操作系统的影响,以保证java程序的可移植性。

  • bit:计算机中的最小存储单位;byte:计算机中基本存储单元,两者转换公式:1byte = 8 bit。

  • 浮点数:

    • 浮点数在机器中存放形式:浮点数 = 符号位 + 指数位 + 尾数位,位数部分可能丢失,造成精度损失(小数都是近似值)

    • 浮点型常量有两种表现形式:

      • 十进制形式:5.12 5.12F .512(必须有小数点)
      • 科学计数法形式:5.12E2 5.12e-2
    • 不能直接对浮点数进行相等的判断

      //浮点数使用陷阱: 2.7 和 8.1 / 3 比较
      double num11 = 2.7;
      double num12 = 8.1 / 3;
      System.out.println(num11);
      System.out.println(num12);
      //得到一个重要的使用点: 当我们对运算结果是小数的进行相等判断是,要小心
      //应该是以两个数的差值的绝对值,在某个精度范围类判断
      if(num11 == num12){
          System.out.println("num11 = num12 相等");
      }
      
      //正确的写法 , ctrl + / 注释快捷键, 再次输入就取消注释
      if(Math.abs(num11-num12) < 0.00001){
          System.out.println("差值非常小,到达我的规定精度,认为相等...");
      }
      System.out.println(Math.abs(num11 - num12));
      //细节:如果是直接查询得的的小数或者直接赋值,是可以判断相等
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
  • 字符类型:

    • 字符常量是用单引号括起来的单个字符

      • 代码演示:
      char c1 = 'a';
      char c2 = '中';
      char c3 = '9';
      
      • 1
      • 2
      • 3
    • Java中还允许使用转义字符来将其后的字符转变为特殊字符型常量

      • 代码演示:
      char c4 = '\n';//'\n'表示换行符
      
      • 1
    • 字符类型数据本质是一个整数,输出的是整数在unicode码中对应的字符,因此可以直接给char赋一个整数,同时还可以进行运算,相当于一个整数

使用过程中的注意事项

  • 变量表示内存中的一个存储区域,不同类型的变量占用的空间大小不同。
  • 变量名在同一作用域内不能重复
  • 在一条语句中,可以定义多个变量。但是这种方式影响代码的阅读,所以了解一下即可。
  • 变量在使用之前必须要赋值。
  • 变量名只能存一个值,该容器的数据/值可以在同一类型范围内不断变化。
  • 变量的作用域范围。

代码演示:

public class VariableDemo2{
	public static void main(String[] args){
		//1.变量名不允许重复
		//int a = 10;
		//int a = 20;
		//System.out.println(a);
		
		//2.一条语句可以定义多个变量
		//了解。
		//int a = 10, b = 20, c = 20,d = 20;
		//System.out.println(a);//?
		//System.out.println(b);//?
		
		
		//3.变量在使用之前必须要赋值
		int a = 30;
		System.out.println(a);
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

4.3 计算机中的数据存储

在计算机中,任意数据都是以二进制的形式来存储的

JDK7的特性:

二进制:0,1 ,满 2 进 1。以 0b 或 0B 开头。

十进制:0-9 ,满 10 进 1。前面不加任何前缀

八进制:0-7 ,满 8 进 1。以数字 0 开头表示

十六进制:0-9 及 A(10)-F(15),满 16 进 1。以 0x 0X 开头表示。此处的 A-F 不区分大小写。

ASCII码表:美国信息交换码表,仅需一个字节表示,一共128个字符,一共字节实际可以表示256个字符,但是只用了128个,只占用了一个字节的后面7位,最前面的一位统一规定为0

GB2312编码:简体中文汉字编码国家标准

BIG5编码:台湾地区繁体中文标准字符集

GBK编码:微软字符码表,可以表示汉字,而且范围广,字母使用1个字节,汉字使用3个字节

Unicode:国际标准字符集,固定大小的编码,使用两个字节来表示字符,字母和汉字统一都是占用两个字节

UTF-8编码:大小可变的编码,字母使用1个字节,汉字使用3个字节

4.4 练习

练习1

  • 需求:定义5个变量记录老师的信息并打印

  • 代码演示:

    public class VariableTest1{
    	public static void main(String[] args){
    		//1.定义字符串类型的变量记录老师的姓名
    		String name = "黑马谢广坤";
    		//2.定义整数类型的变量记录老师的年龄
    		int age = 18;
    		//3.定义字符类型的变量记录老师的性别
    		char gender = '男';
    		//4.定义小数类型的变量记录老师的身高
    		double height = 180.1;
    		//5.定义布尔类型的变量记录老师的婚姻状况
    		boolean flag = true;
    		
    		//输出5个变量的值
    		System.out.println(name);
    		System.out.println(age);
    		System.out.println(gender);
    		System.out.println(height);
    		System.out.println(flag);
    		
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

练习2

  • 需求:将(电影名称,主演,年份,评分)四个信息选择不同类型的变量,随后打印出来。

  • 代码演示:

    public class VariableTest2{
    	public static void main(String[] args){
    		//1.定义字符串变量记录电影的名称
    		String movie = "送初恋回家";
    		//2.定义三个变量记录主演的名字
    		String name1 = "刘鑫";
    		String name2 = "张雨提";
    		String name3 = "高媛";
    		//3. 定义整数类型的变量记录年龄的年份
    		int year = 2020;
    		//4.定义小数类型的变量记录电影的评分
    		double score = 9.0;
    		
    		//打印变量的信息
    		System.out.println(movie);
    		System.out.println(name1);
    		System.out.println(name2);
    		System.out.println(name3);
    		System.out.println(year);
    		System.out.println(score);
    		
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

练习3

  • 需求:选择其中一部手机,将(手机价格,手机品牌)两个信息选择不同类型的变量,随后打印出来。

  • 代码演示:

    public class VariableTest3{
    	public static void main(String[] args){
    		//1.定义小数类型的变量记录手机的价格
    		double price = 5299.0;
    		
    		//2.定义字符串类型的变量记录手机的品牌
    		String brand = "华为";
    		
    		//输出变量记录的值
    		System.out.println(price);
    		System.out.println(brand);
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

4.5 标识符

  • 定义:Java对各种变量、方法和类等命名时使用的字符序列称为标识符
    • 业内大多数程序员都在遵守阿里巴巴的命名规则。

1.硬性要求:

  • 必须由数字、字母、下划线_、美元符号$组成。
  • 数字不能开头
  • 不能是关键字
  • 区分大小写的,长度无限制

2.命名原则

不管起什么名字,都要做到见名知意。

A.小驼峰命名法

变量名和方法名:

  • 如果是一个单词,那么全部小写,比如:name

  • 如果是多个单词,那么从第二个单词开始,首字母大写,比如:firstName、maxAge

B.大驼峰命名法

类名:

  • 如果是一个单词,那么首字母大写。比如:Demo、Test。
  • 如果是多个单词,那么每一个单词首字母都需要大写。比如:HelloWorld
C.阿里巴巴命名规范细节:
  1. 尽量不要用拼音。但是一些国际通用的拼音可视为英文单词。

    正确:alibaba、hangzhou、nanjing

    错误:jiage、dazhe

  2. 平时在给变量名、方法名、类名起名字的时候,不要使用下划线或美元符号。

    错误:_name

    正确:name

  3. 包名:统一使用小写,点分隔符之间有且仅有一个自然语义的英语单词。包名统一使用单数形式,但是类名如果有复数含义,类名可以使用复数形式。

    正例: 应用工具类包名为 com.alibaba.open.util、类名为 MessageUtils(此规则参考spring 的框架结构)

  4. 常量名:常量命名全部大写,单词间用下划线隔开,力求语义表达完整清楚,不要嫌名字长。正例:MAX_STOCK_COUNT

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号