《从C/C++到Java入门指南》- 4.变量与数据类型

变量与数据类型

本笔记所有建立在会 C/C++ 以及 Python 基本语法的基础上。

Java 中的基本数据类型:

  • 整数类型:byte,short,int,long
  • 浮点数类型:float,double
  • 字符类型:char
  • 布尔类型boolean

可以看出,除了布尔型,其余和 C/C++ 一样,下文主要探讨 C/C++ 中有差异的类型。

byte

计算机中,一个字节是 8 个 bit

下面是 java 中基本数据类型的占用字节数图片(一个方格表示一个字节)

image-20240716202904808

图片:摘自廖雪峰的官网

可以总结出规律:

short 是两个字节,short~long 依次扩大两倍。

floatint 一致,float~double 也依次扩大两倍。

char 是两个字节。

同时也可以看出相同性质,但是不同长度的数据类型之间字节数相邻之间相差两倍。

int

// int 类型的一些写法
public class Hello {
	public static void main(String[] args) {
		int i1 = 2147483647;
		int i2 = -2147483647;
		int i3 = 2_000_000_000;	// 添加下划线便于识别
		int i4 = 0xff0000;		// 十六进制表示方法
		int i5 = 0b1000000000;	// 二进制表示的 512
		System.out.println(i1);
		System.out.println(i2);
		System.out.println(i3);
		System.out.println(i4);
		System.out.println(i5);
	}
}

long

需要说明的是,Java 中直接使用 long / long long

public class Hello {
	public static void main(String[] args) {
		long n1 = 9000000000000000000L;	// 需要加 L
		long n2 = 900;					// 没有加 L,本质是右边为整型并赋值给左边
		System.out.println(n1);
		System.out.println(n2);
	}
}

注意:不能将长的赋值给段的否则会溢出:

public class Hello {
	public static void main(String[] args) {
		long n1 = 9000000000000000000L;	// 需要加 L
		long n2 = 900;					// 没有加 L,本质是右边为整型并赋值给左边
		int n3 = 900L;
		System.out.println(n1);
		System.out.println(n2);
	}
}

报错提示:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
	Type mismatch: cannot convert from long to int

	at Hello.main(Hello.java:6)

浮点型(float/double)

Java 中

  • float后跟f,形式如3.14f
  • double用点分隔,形式如2.14或者2.0

所以这些写法是正确的:

public class Hello {
	public static void main(String[] args) {
		float f1 = 3.14f;
		float f2 = 3.14e38f; // 表示科学计数法3.14*10^38
		
		double d1 = 1.14e308;
		double d2 = -1.14e308;
		double d3 = -1.14e-308;		
	}
}

特别说明,不要这样写

float f1 = 3.0;

布尔类型

在 Java 中用 boolean 来进行申明:

public class Hello {
	public static void main(String[] args) {
		boolean my_bool = true;
		System.out.println(my_bool);
	}
}

Char

字符类型和C中一致

引用类型

除了上述基本类型的变量,其余类型都是引用类型,例如最常用的 String 类型。

代码:String s = "你好吗?";

常量

Java 中用 final 而不是 const 来表示常量

var 关键字

比较有意思的是,JavaC/C++ 不同,但是和 JavaScript 一样,也有 var 这个关键字,刚学习 Java 的我,知道这一点还是感觉很惊喜的。众所周知,var 关键字是用于偷懒的一个糖果语法。

public class Hello {
	public static void main(String[] args) {
		StringBuilder sb = new StringBuilder();
		var sb2 = new StringBuilder();	// 可以使用 var 来进行偷懒,虽然偷懒了没多少,但是,爽!
	}
}

变量的作用范围

在 Java 中,很多语句用 {} 扩起来,比如一些控制语句,判断循环等。对于这个定义我是第一次

if (...) {
    ...
    while (...) {
        ...
        if (...) {
            ...
        }
        ...
	}
    ...
}

变量的作用范围:

public class Hello {
	public static void main(String[] args) {
		{			
			String s = "Hello?";
			System.out.println(s);
		} // 变量 s 的作用范围到这里结束
		// System.out.println(s); // 会报错
	}
}

对于变量的作用域有一个原则,那就是尽量将变量的作用域定义在最小化,及时回收变量,避免空闲占用资源。

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值