Day02-变量和数据类型

任务二:变量和数据类型

1.变量的基本概念

1.当需要在程序中记录单个数据内容时,则声明一个变量即可,而声明变量的本质就是在内存中申请一个存储单元,由于该存储单元中的数据内容可以发生改变,因此得名“变量”。

2.由于存放的数据内容大小不一样,导致所需存储单元的大小不一样,在Java语言中使用数据类型加以描述,为了便于下次访问还需要给该变量指定一个名字,用于记录该变量对应的存储单元。

image-20210506214816398

2.变量的声明和使用

  • 数据类型 变量名 = 初始值;
  • 其中=初始值可以省略,但是;不能省略
package com.lagou.Day02;

/**
 * 编程实现变量的声明和使用
 */
public class VarTest {
    public static void main(String[] args) {
        // 1.声明一个变量并初始化 数据类型 变量名 = 初始值
        int age = 18;
        // 2.打印变量的数值 + 字符串连接符 用于将两边的内存拼接/链接起来结果还是字符串
        System.out.println("age -" + age);//age -18
    }
}

3.变量使用的注意事项

  • Java是强类型语言,变量在使用前必须声明来指明其数据类型。
  • 变量在使用之前必须初始化
  • 变量不能重复声明
package com.lagou.Day02;

/**
 * 编程实现变量的声明和使用
 */
public class VarTest {
    public static void main(String[] args) {
        // 1.声明一个变量并初始化 数据类型 变量名 = 初始值
        int age = 18;
        // 2.打印变量的数值 + 字符串连接符 用于将两边的内存拼接/链接起来结果还是字符串
        System.out.println("age -" + age);//age -18

        System.out.println("------------------------");
        //使用变量之前需要声明
        //System.out.println("name -" + name);错误:找不到符号

        //使用变量之前需要初始化
        //String name;
        //System.out.println("name -" + name);错误:可能未初始化

        String name = "科比";
        System.out.println("name -" + name);//name -科比
    
        //变量不能重复声明
        //int age = 19;
    }
}

4.标识符的命名规则

  • 由数字、字母、下划线以及$等组成,其中数字不能开头
  • 不能使用Java语言的关键字,所谓关键字就是Java语言用于表示特殊含义的单词
  • 区分大小写,长度没有限制但不宜过长。
  • 尽量做到见名知意,支持中文但不推荐使用。
  • 标识符可以给类/变量/属性/方法/包起名字。

5.变量输入输出的案例实现

package com.lagou.Day02;

import java.util.Scanner;

/**
 * 编程实现变量的输入输出
 */
//导入Java目录中Util目录的Scanner类
public class VarIOTest {
    public static void main(String[] args) {
        //1.声明两个变量用于记录姓名和年龄信息
        String name;
        int age;

        //2.提示用户从键盘输入姓名和年龄信息并放入到变量中
        System.out.println("请输入您的姓名和年龄信息:");
        //创建一个送啊米奇读取一个字符串数据放入变量name中
        Scanner sc = new Scanner(System.in);
        //通过扫描器读取一个字符串数据放入变量name中
        name = sc.next();
        //通过扫描器读取一个整数数据放入变量age中
        age = sc.nextInt();

        //3.打印变量的数值
        System.out.println("name = " + name);
        System.out.println("age = " + age);

        /**
         * 输出
         * 请输入您的姓名和年龄信息:
         * kobe
         * 20
         * name = kobe
         * age = 20
         */
    }
}

6.变量输入输出案例的优化和手册介绍

7.数据类型的分类

  • 在Java语言中数据类型主要分为两大类:

  • (1)基本数据类型(记住)

    byte、short、int、long、float、double、boolean、char

  • (2)引用数据类型(了解)

    数组、类、接口、枚举、标注

8.常用的进制

  • 在日常生活中采用十进制进行数据的描述,逢十进一,十进制权重是:100、101、10^2、…
    image-20210507203720222
  • 在计算机的底层采用0和1组成的二进制序列进行数据的描述,逢二进一,二进制的权重是20、21、2^2、…
  • 二进制中的最高位(最左边)用于代表符号位,若该位是0则表示非负数,若该位是1则表示负数。
  • 八进制和十六进制其实都是二进制的简写

9.正十进制转换为二进制的方式一

  • 正十进制转换为二进制的方式
    • a.除2取余法,使用十进制整数不断地除以2取出余数,直到商为0时将余数逆序排序。
    • 0b/0B可以作为二进制的前缀
    • 45-二进制101101:是64位的二进制。

10.正十进制转换为二进制的方式二

  • 拆分法,将十进制整数拆分为若干个二进制权重的和,有该权重下面写1,否则写0

image-20210507205713378

11.正二进制转换成十进制的方式

  • 加权法,使用二进制中的每个数字乘以当前位的权重再累加起来。

12.负十进制转换为二进制的方式

  • 先将十进制的绝对值转换为二进制,然后进行按位取反再加1.
  • 负数的需要补码:按位取反,再加1

image-20210507214733975

13.负二进制转换为十进制的方式

  • 先减1再按位取反,合并为十进制整数后添加负号

image-20210507215554649

14.单个字符所能表示的整数范围

  • 在计算机中单个字节表示八位二进制位,其中最高(最左边)代表符号位,使用0代表非负数,使用1代表负数,具体表示的整数范围如下:

image-20210507220343225

15.整数类型的概念

  • Java语言中描述整数数据的类型有:byte、short、int、long,推荐int类型。

image-20210507221549137

16.整数类型的编程使用(上)

package com.lagou.Day02;

/**
 * 编程实现整数类型的声明和使用
 */
public class IntTest {
    public static void main(String[] args) {

        //1.声明一个byte类型的变量并初始化
        byte b1 = 25;
        System.out.println(b1);//25

        //byte b2 = 250;//超过byte的范围
        //250这样直接写出来的整数数据叫做直接量/常量/字面值 默认int类型

        short s1 = 250;
        System.out.println(s1);//250 short 3万多

        int i1 = 250250;
        System.out.println(i1);//21亿多
    }
}

17.整数类型的编程使用(下)

  • 在Java程序中直接写出的整数数据叫做直接量/字面量/常量,默认为int类型。若希望表达更大的直接量,则在直接量的后面加上l或者L,推荐L。
//int i1 = 2502505006;//错误:整数太大,默认为int类型,这个数据自身已经出错,无法表示
        //int i1 = 2502505006L;//错误:不能兼容的类型:从long转换到int可能会有损失

        //声明一个long类型到变量并初始化
        long g1 = 2502505006L;
        System.out.println(g1);
  • 若描述比long类型还打到数据,则使用java.math.BigIntger类型

18.整数类型的笔试考点

package com.lagou.Day02;

/**
 * 面试题
 */
public class IntTest01 {
    public static void main(String[] args) {
        int i = 25;
        //byte b = i;错误:不兼容的类型:从int转换到byte可能会损失精度
    }
}

19.浮点类型的概念

  • Java语言中用于描述小数数据的类型:float和double,推荐double类型
  • 其中float类型在内存空间占4个字节,叫做单精度浮点数,可以表示7位有效数字,范围:-3.403E38~3.403E38
  • 其中double类型在内存空间占8个字节,叫做双精度浮点数,可以表示15位有效数字,范围:-1.798E308~1.798E308.

20.浮点类型的编程使用

package com.lagou.Day02;

public class DoubleTest {
    public static void main(String[] args) {
        //1.声明一个float类型的变量并初始化
        //错误:不兼容的类型:从double转换到float可能会有损失;默认是double
        //float f1 = 3.1415926;
    }
}

21.布尔类型的概念和编程使用

  • Java语言中用于描述真假信息类型:boolean,数值只有true和false
  • 布尔类型在内存空间中所占大小没有明确的规定,可以认定为是1个字节。
package com.lagou.Day02;

/**
 * 编程实现布尔类型的使用
 */
public class BooleanTest {
    public static void main(String[] args) {
        //1.声明一个boolean类型的变量并初始化
        boolean b1 = true;
        //2.打印变量的数值
        System.out.println(b1);
    }
}

22.字符类型的概念

  • Java语言中用于描述单个字符的数据类型:char类型。如:‘a’、'中’等。
  • 其中char类型在内存空间中占2个字节并且没有符号位,表示的范围是:0-65535,由于实现生活中很少有数据能够被单个字符描述,因此以后的开发中更多的使用由多个字符串组成的字符串,使用String类型加以描述,如:‘hello’、'科比’等
  • 计算机的底层只识别0和1组成的二进制序列,对于字符’a’这样的团来说不满足该规则,因此该数据无法直接在计算机中存储,但现实生活中存在这样的图案数据需要计算机存储,为了使得该数据能够存储起来就可以给该数据指定一个编号,然后将编号存储起来即可,该编号就叫做ASCII。

23.字符类型和编号的使用

package com.lagou.Day02;

/**
 * 编程实现字符类型的使用
 */
public class CharTest {
    public static void main(String[] args) {

        //1.声明一个char类型的变量并初始化
        char c1 = 'a';
        //2.打印变量的数值
        System.out.println("c1 = "+c1);//c1=a
        System.out.println("对应的编号是:"+(int)c1);//表示将char类型的c1强制转换为int类型并打印 97
        System.out.println("-------------------");

        //2.声明一个char类型的变量并初始化
        char c2 = 98;
        System.out.println("c2 = "+c2);//c2=b
        System.out.println("对应的编号:"+(int)c2);//98
    }
}
  • 记住:‘0’=48;‘A’=65;‘a’=97;空格=32;换行符=10

24.Unicode字符集的概念和使用

  • Java字符类型采用Unicode字符集编码,Unicode是世界通用的定长字符集,所有的字符都是16位。
  • Unicode包含ASII
package com.lagou.Day02;

/**
 * 使用Unicode字符集来表示一下我的名字
 */
public class Demo01 {
    public static void main(String[] args) {

        char c1 = '\u5947';
        char c2 = '\u70b9';
        System.out.println(c1+c2);
    }
}

25.转义字符的概念和使用

  • 特殊字符的使用
package com.lagou.Day02;

/**
 * 特殊字符的使用
 */
public class Demo02 {
    public static void main(String[] args) {
        /**
         * 双引号
         * a.字符串的开头和结尾标志
         * b.双引号自身
         * \ 转义就是转换原有的含义
         */
        System.out.println("我想过过\"过过过过的生活!");// \" -" 我想过过"过过过过的生活!
        System.out.println("我想过过\'过过过过的生活!");// \'    我想过过'过过过过的生活!
        System.out.println("我想过过\\过过过过的生活!");// \\    我想过过\过过过过的生活!
        System.out.println("我想过过\t过过过过的生活!");// \t    我想过过 过过过过的生活!
        System.out.println("我想过过\n过过过过的生活!");// \n    我想过过
                                                    //       过过过过的生活!
    }
}

26.自动类型转换的概念和使用

  • Java语言中基本数据类型之间的转换方式:自动类型转换和强制类型转换。
  • 其中自动类型转换主要指的是从小类型到大类型之间的转换

image-20210510203533134

package com.lagou.Day02;

/**
 * 编程实现基本数据类型之间转换的使用
 */
public class Demo03 {
    public static void main(String[] args) {
        //1.声明两个变量并初始化
        byte b1 = 10;
        short s1 = 20;
        //2.打印变量的数值
        System.out.println("b1 = "+b1);//10
        System.out.println("s1 = "+s1);//20

        System.out.println("-------------");
        //3.实现自动类型转换的使用
        //表示将变量b1的数值赋值给变量s1,并覆盖变量s1中原来的数值,相当于从byte类型的转换。
        //自动转换
        s1 = b1;
        System.out.println("b1 = "+b1);//10
        System.out.println("s1 = "+s1);//10
    }
}

27.强制类型转换的概念和使用

  • 大类型到小类型
  • 目标类型 变量名 = (目标类型)源类型变量名;
  • 强转有风险,操作需谨慎!
package com.lagou.Day02;

public class Demo04 {
    public static void main(String[] args) {
        //1.强制类型转换
        byte b1 = 10;
        short s1 = 20;
        b1 = (byte) s1;
        System.out.println(b1);//20
        System.out.println("-------------");

        //2.错误
        /**
         * 128:0000 0000 1000 0000=>1000 0000=>0111 1111=>1000 0000=>128=>-128
         */
        short s2 = 128;
        b1 = (byte) s2;
        System.out.println("b1 = "+b1);//-128
        System.out.println("s2 = "+s2);//128
    }
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

coder-N

踏实 勤奋 努力 拼搏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值