java第三课——数据类型与变量

目录

一:字面常量

二:数据类型

2.1数据类型的分类 

​ 2.2详解基本数据类型

三:变量

3.1定义变量的语法格式

 3.2整型变量

3.3浮点型变量

 3.4字符型变量

3.5布尔型变量

3.6类型转换

3.6.1自动类型转换实例

 3.6.2强制类型转换实例

3.7 类型提升

四:字符串类型

4.1基本实现

 4.2int和String的相互转化

4.2.1int转化成String

4.2.2String转化成int



一:字面常量

例如,将下面这些字面常量进行输出:

public class HelloIDEA{
    public static void main(String[] args) {
        System.out.println("hello world!");
        System.out.println(100);
        System.out.println(3.14);
        System.out.println('A');
        System.out.println(true);
    }
}

运行结果如下:

二:数据类型

2.1数据类型的分类 

 2.2详解基本数据类型

        基本数据类型一共有8种: 

基本数据类型

 注意:

1.不论是在16位系统还是32位系统,int都占4个字节,long都占8个字节。
2.java中没有类似C语言中计算内存大小的关键字sizeof。
2.整形和浮点型都是带有符号的。
3.整型默认为int型,浮点型默认为double型。

三:变量

3.1定义变量的语法格式

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

public class HelloIDEA{
    public static void main(String[] args) {
        int a = 10;   // 定义整形
        double d = 3.14;
        char c = 'C';
        boolean b = true;
        System.out.println(a); System.out.println(d); System.out.println(c); System.out.println(b);

        System.out.println("-------------------");
// 注意:在一行可以定义多个相同类型的变量
        int a1 = 10, a2 = 20, a3=30;
        System.out.println(a1); System.out.println(a2); System.out.println(a3);

    }
}

运行结果如下:

 3.2整型变量

public class HelloIDEA{
    public static void main(String[] args) {
        //1.最简单的定义
        int a = 10;
        //System.out.println(a);

        //2.int型变量所能表示的范围
        System.out.println("int型变量所能表示的范围");
        System.out.println(Integer.MIN_VALUE);
        System.out.println(Integer.MAX_VALUE);

        //3.long定义的长整型变量
        long b=10;//等价于long b=10L;
        //System.out.println(b);

        //4.long型变量所能表示的范围:这个数据范围远超过 int 的表示范围. 足够绝大部分的工程场景使用.
        System.out.println("long型变量所能表示的范围:");
        System.out.println(Long.MIN_VALUE);
        System.out.println(Long.MAX_VALUE);

        //5.short 定义的短整型变量
        short d = 10;
        //System.out.println(d);

        //5.short型变量所能表示的范围:
        System.out.println("short型变量所能表示的范围:");
        System.out.println(Short.MIN_VALUE);
        System.out.println(Short.MAX_VALUE);

        //6.byte定义e的字节型变量
        byte e = 10;
        //System.out.println(e);

        //7.byte型变量所能表示的范围:
        System.out.println("byte型变量所能表示的范围:");
        System.out.println(Byte.MIN_VALUE);
        System.out.println(Byte.MAX_VALUE);
    }
}

运行结果为:

总结:

  • byte:8位,最大存储数据量是2的8次方减1,数据范围是-128~127之间。
  • short:16位,最大数据存储量是2的16次方减1,数据范围是-32768~32767之间。
  • int:32位,最大数据存储容量是2的32次方减1,数据范围是负的2的31次方到正的2的31次方减1。
  • long:64位,最大数据存储容量是2的64次方减1,数据范围为负的2的63次方到正的2的63次方减1。
整型变量​​​​

        疑问:什么是包装类型?
        简单来讲,Java是一个面向对象的语言,基本类型并不具有对象的性质,为了与“其他对象“接轨,于是就出现了包装类型,它相当于将基本类型“包装起来”,使得它具有了对象的性质,并且为其添加了属性和方法,丰富了基本类型的操作。“包装类型”相当于是“基本类型”的plus版本。

3.3浮点型变量

public class HelloIDEA{
    public static void main(String[] args) {
        double a=23;
        System.out.println(a);
        float b=3.7f;
        System.out.println(b);
    }

运行结果为:

总结:

浮点型变量

 3.4字符型变量

public class HelloIDEA{
    public static void main(String[] args) {

        char c1 = 'A';    // 大写
        char c2 = '5';    // 数字
        System.out.println(c1);
        System.out.println(c2);

        char c3 = '白';
        System.out.println(c3);

    }
}

运行结果如下:

注意:

1. Java 中使用   单引号 + 单个字母   的形式表示字符字面值。
2. 计算机中的字符本质上是一个整数.。在 C 语言中使用 ASCII 表示字符, 而 Java 中使用 Unicode 表示字符. 因此一个字符占用两个字节, 表示的字符种类更多, 包括中文。
3. char的包装类型为Character。

3.5布尔型变量

public class HelloIDEA{
    public static void main(String[] args) {
        boolean a = true;
        System.out.println(a);
        a = false;
        System.out.println(a);

    }
}

注意:
1. boolean 类型的变量只有两种取值, true 表示真, false 表示假。|
2. Java 的 boolean 类型和 int 不能相互转换, 不存在 1 表示 true, 0 表示 false 这样的用法。 
3. Java虚拟机规范中,没有明确规定boolean占几个字节,也没有专门用来处理boolean的节码指令。
4. boolean的包装类型为Boolean。

3.6类型转换

3.6.1自动类型转换实例

public class HelloIDEA{
    public static void main(String[] args) {

        int a = 100;
        long b = 10L;
        b = a;   // a和b都是整形,a的范围小,b的范围大,当将a赋值给b时,编译器会自动将a提升为long类型
        a = b;   // 编译报错,long的范围比int范围大,会有数据丢失,不安全
        
        float f = 3.14F;
        double d = 5.12;

        d = f; // 编译器会将f转换为double,然后进行赋值
        f = d; // double表示数据范围大,直接将double交给float会有数据丢失,不安全

        byte b1 = 100;  // 编译通过,100没有超过byte的范围,编译器隐式将100转换
        byte b2 = 128;  // 编译失败,128超过了byte的数据范围,有数据丢失
    }
}

 3.6.2强制类型转换实例

public class HelloIDEA{
    public static void main(String[] args) {

        int a = 10;
        long b = 100L;
        b = a;      // int-->long,数据范围由小到大,隐式转换
        a = (int)b; // long-->int, 数据范围由大到小,需要强转,否则编译失败
        float f = 3.14F;
        double d = 5.12;
        d = f;        // float-->double,数据范围由小到大,隐式转换
        f = (float)d; // double-->float, 数据范围由大到小,需要强转,否则编译失败
    }
}

注意:

 在所有八种数据类型中,只有boolean类型不能转换,只能是true或者false。除此之外其他七种类型之间都可以进行转换。

3.7 类型提升

不同类型的数据之间相互运算时,数据类型小的数据会被提升为数据类型大的。

1.int与long之间:int会被提升为long;

public class HelloIDEA{
    public static void main(String[] args) {
        
        int a = 10;
        long b = 20;
        long d = a + b;   // 编译成功:a + b==>int + long--->long + long 赋值给long
    }
}

2.byte与byte的运算

public class HelloIDEA{
    public static void main(String[] args) {

        byte a = 10; 
        byte b = 20; 
        byte c = a + b;
        System.out.println(c);

    }
}

        猜测一下这段代码的输出?你是不是会以为能够正常编译通过?错!

        byte 和 byte 都是相同类型, 但是出现编译报错. 原因是, 虽然 a 和 b 都是 byte, 但是计算 a + b 会先将 a 和b 都提升成 int, 再进行计算, 得到的结果也是 int, 这时赋给 c, 就会出现上述错误。
        由于计算机的 CPU 通常是按照 4 个字节为单位从内存中读写数据. 为了硬件上实现方便, 诸如 byte 和 short 这种低于 4 个字节的类型, 会先提升成 int, 再参与计算。

正确写法如下:

public class HelloIDEA{
    public static void main(String[] args) {

        byte a = 10;
        byte b = 20;
        byte c = (byte)(a + b);
        System.out.println(c);
    }
}

运行结果如下:

四:字符串类型

4.1基本实现

与C++类似,java中也支持用string定义字符串。

public class HelloIDEA{
    public static void main(String[] args) {
        String s1 = "hello";
        String s2 = "world";
        System.out.println(s1);
        System.out.println(s2);
        System.out.println(s1+s2);
    }
}

运行结果如下:


 4.2int和String的相互转化

4.2.1int转化成String

public class HelloIDEA{
    public static void main(String[] args) {
        int num = 100;
        // 方法1
        String str1 = num + "";
        System.out.println(str1);
        // 方法2
        String str2 = String.valueOf(num);
        System.out.println(str2);
        //方法3
        String str3=Integer.toString(num);
        System.out.println(str3);
    }
}

运行结果如下:

4.2.2String转化成int

//Sting--->int
public class HelloIDEA{
    public static void main(String[] args) {
        String str = "100";
        int num1= Integer.parseInt(str);
        int num2= Integer.valueOf(str).intValue();
        System.out.println(num1);
        System.out.println(num2);
    }
}

运行结果如下:


本课内容结束! 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值