初学JAVA-5-基本数据类型

本文详细介绍了Java中的八种基本数据类型,包括整数型、浮点型、布尔型和字符型的特点及定义方法,并提供了实例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    JAVA里面有8中基本数据类型,分别是

    整数型:

    byte:长度为8位。最前面一位表示正负号,后面7位表示这个整数的绝对值,所以byte的取值范围时-128 ~ 127 (-2^7  ~2^7-1)

    short:长度为16位。和byte类型一样,首位表示正负号。取值范围变成了-2^15 ~ 2^15-1(-32768~32767)

    int:长度为32位。首位表示正负号,所以取值范围是-2^31 ~ 2^31-1(-2147483648 ~ 2147483647).一般整数型变量默认是int类型

  long:长度为64位。首位表示正负号,所以取值范围是-2^63 ~ 2^63-1(-9223372036854775808 ~ 9223372036854775807)可以看到即使将二进制转换为十进制,这也是一个极大的数字,所以一般32位的int型就够我们使用了

     浮点型:

     float:单精度32位的浮点数,可以用于表示整数或者小数。

     double:双精度64位的浮点数,可以用于表示整数或者小数。浮点型的数默认是double类型。

     请注意,由于有精度限制,浮点型是不能用于精确计算的,尤其是涉及到金额计算,绝对不能用浮点型计算

      布尔型

      boolean: boolean只有两个取值,ture和false,通常用于判断某个条件是否满足

      字符型:

      char:char类型是一个单一的16位Unicode字符,取值范围是\u0000 到\uffff,可以储存任何字符,如字母'A'、'z',符号'%'

        

      以上是JAVA的8种基本数据类型,那么在java中怎么定义一个变量呢?首先我们要确定我们想要的类型,然后给这个变量取号名字(也就是标识符,前面我们说过标识符就是类的名字、方法的名字和变量的名字),比如我们想定义一个int型的变量x,

        int x = 123456;

        short s = 321;

        byte b = 10;

        long y = 76153L;

        float f = 217.6f;

        double d = 333.33;

        boolean flag = true;

        char letter = 'A';

        前面我们已经知道怎么输出内容,那现在我们又定义了一些变量,我们现在尝试输出这些变量

        

public class MyFirstJavaClass{
  public static void main(String[] args){
        int x = 123456;
 	System.out.println(x);
        short s = 321;
	System.out.println(s);
        byte b = 10;
	System.out.println(b);
        long y = 76153L;
	System.out.println(y);
        float f = 217.6f;
	System.out.println(f);
        double d = 333.33;
	System.out.println(d);
        boolean flag = true;
	System.out.println(flag);
        char letter = 'A';
	System.out.println(letter);
  }

}
   

    可能有的朋友已经注意到,我们在定义long类型的变量y时后面加上了大写的L,定义float类型变量f时后面加上了小写的f  ,为什么这么写,因为我们已经说过,整数型的数字默认是int类型,浮点型的数字默认是double类型,如果我们需要明确定义一个long类型的或者一个short类型的数字,需要在数值后面加上大写的L(小写的也可以,但是小写的l与数字1容易混淆,建议大写)或者大写的F(小写的也可以,这个我们已经通过例子验证过)。所以,217.6f,这表示一个单精度的float类型数字217.6,而217.6,它默认是一个双精度的double类型,我们也可以写成217.6d,尝试一下以下代码

        

public class MyFirstJavaClass{
  public static void main(String[] args){
        float f = 217.6f;
	System.out.println(f);
        double d = 217.6d;
	System.out.println(d);
        double d1 = 217.6;
	System.out.println(d1);
  }

}

    可以看到,217.6d的效果和217.6是一样的,即217.6默认是等价于217.6d的,所以我们不能定义float f = 217.6;因为这样等效于float f = 217.6d,float是单精度的32位浮点数,它的精度没有double高。我们尝试定义float f = 271.6; 然后编译代码,会发现编译时错误


    那么反过来我们可不可以用float类型的数值来赋给double类型的变量呢?double d = 217.6f; 这样可以吗?当然是可以的,因为双精度类型数值精度高。那我们执行一下看看会是什么结果。

    

public class MyFirstJavaClass{
  public static void main(String[] args){
	double d = 217.6f;
	System.out.println(d);
  }

}

        编译正常,然而执行却得到了一个奇怪的数字,小数点后面多了很多位,这个数失真了!

        再来看整数类型。不同于浮点型的数值后面要加f或者d表示这个数值的精度范围,整数类型只有长整型(long类型)需要加L表示,比如我们不需要123b,123s,123i,如果你定义byte b = 12b; short s = 12s; int i = 12i;那虚拟机会果断的丢给你一个错误。只有long l = 12L;虚拟机才会欣然接受。那我们可以不写L吗?long l = 12;这样可以吗?当然是可以的,long是64位的,很显然可以把一个32位以内的数包含进来。但是int i = 12L;就行不通了,哪怕12是一个很小的数,但是后面的L代表它势力强大,是一个64位的长整型数,不是一个32位的int能吃的下的。

        

public class MyFirstJavaClass{
  public static void main(String[] args){
	int i = 12L;
	System.out.println(i);
  }

}

   

    看完了long这个大哥,再来看看超范围的问题,我们知道byte的取值范围是-128到127,如果超过这个范围会如何,比如byte b = 2046;

     

public class MyFirstJavaClass{
  public static void main(String[] args){
	byte b = 2046;
	System.out.println(b);
  }
}

    

  结果是显然的,超过范围的定义也是会报错的。

      整型和浮点型的数据类型已经讨论过,布尔型的比较简单,一般用于条件判断。例如我们假设全国平均工资水平是20000,我们现在的工资是12000,那我们有没有拖国家的后腿呢?

public class MyFirstJavaClass{
  public static void main(String[] args){
	double pre_salary = 20000.00; //平均工资2万
	double my_salary = 12000.00; //我的工资1万2
	System.out.println(my_salary<=pre_salary);
  }
}

     结果是令人伤心的,因为我们的工资低于平均工资是true,是事实,我们对不起国家。好吧,虽然伤心,但是也可以看到,我们并没有直接定义一个布尔型的数,但是我们输出的内容是一个表达式,它的结果是一个布尔型的值,最终这个值会被输出到控制台。

        最后剩下字符型的基本数据类型。我们上面说了char类型是一个单一的16位UNICODE字符,取值是从\u0000到\uffff,那我们怎么定义它呢?

   

public class MyFirstJavaClass{
  public static void main(String[] args){
	char letter1 = '\u0041';
	System.out.println(letter1);
	char letter2 = 'A';
	System.out.println(letter2);
  }
}

    从上面的例子可以看到,我们输出的两个字符结果是一样的,这是因为大写字母'A'的Unicode编码就是\u0041,所以,如果你知道每个字母,汉字,符号的Unicode编码,那你就可以直接用unicode的方式来定义它。另外,我们说过char类型是单一字符,就是说它只能表达一个字母,或者一个汉字,或者一个符号。尝试一下输出汉字和字符

public class MyFirstJavaClass{
  public static void main(String[] args){
	char letter1 = '你';
	System.out.println(letter1);
	char letter2 = '%';
	System.out.println(letter2);
  }
}

能不能定义一个词组呢?比如"你好"

public class MyFirstJavaClass{
  public static void main(String[] args){
	char letter1 = '你好';
	System.out.println(letter1);
	
  }
}

显然系统又残酷的拒绝了我们,不能,那要定义超过一个字符的一系列字符如何操作?我们可以使用String。

字符串:

String:用来标示一个由一系列字符组成的一串字符。定义字符串的方式和基本数据类型是一样的:

String str  = "你好";

String str1 = "Hello World!";

我们在我们的第一个例子中已经知道怎么输出Hello World!了,现在我们知道了我们输出的其实是一个字符串,程序可以这样写

public class MyFirstJavaClass{
  public static void main(String[] args){
	String str = "Helo World!";
	System.out.println(str);
	
  }
}

现在我们已经知道怎么定义整型、浮点型、布尔型、字符型和字符串了,请注意,定义字符型的变量时,我们要使用半角的单引号将字符包起来(即英文输出法状态下的单引号''),定义字符串变量时,我们要使用半角的双引号将字符串包起来(即英文输入法状态下的双引号"")


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值