Java小试牛刀—数据类型与变量

目录

1、前言

2、字面常量

3、数据类型

 4、变量

4.1 什么是变量

4.2 整型变量

4.2.1整型变量(int型,4个字节)

4.2.2 长整型变量(long型,8个字节)

4.2.3 短整型变量(short,2个字节)

4.2.3 字节型变量(byte,1个字节)

4.3 浮点型变量 

4.3.1 双精度浮点型(double,8个字节)

4.3.2 单精度浮点型(float,4个字节)

4.4 字符型变量(char,2个字节)

4.5 布尔型变量(boolean)

5、字符串类型(String)

6、结语


1、前言

  • 从本次博客开始,博主开始更新Java相关技术,由于也是最近才接触学习,希望各位大佬多多指教,如果文章对您有帮助的话,麻烦帮忙点点赞,万分感谢!
  • 本次blog会详细讲解Java的数据类型与变量的相关知识。

2、字面常量

其实最简单的"HelloWorld",就是字面常量,如下代码:

public class Demo{
  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);
    System.Out.println(false);
  }
}
  • 其中:100、3.14、‘A’、true/false都是常量,将其称为字面常量。
  • 字面常量的分类:
  1. 字符串常量:由" "括起来的,比如“12345”、“hello”。
  2. 整形常量:程序中直接写的数字(注意没有小数点),比如:100、1000
  3. 浮点数常量:程序中直接写的小数,比如:3.14、0.49
  4. 字符常量:由 单引号 括起来的当个字符,比如:‘A’、‘1’
  5. 布尔常量:只有两种true和false
  6. 空常量:NULL

注意:字符串、整形、浮点型、字符型以及布尔型,在Java中都称为数据类型。

3、数据类型

在Java中数据类型主要分为两类:基本数据类型和引用数据类型
基本数据类型有四类八种:

  1. 四类是指:整型、浮点型、字符型以及布尔型
  2. 八种:分别是:
  • 整型:字节型、短整型、整型、长整型
  • 浮点型:单精度浮点数、双精度浮点数
  • 字符型
  • 布尔型
  • 下图为了方便大家记忆,给出了内存中所占用的字节数和取值范围,详细的讲解在第4点变量中:

注意

  1. 不论是在16位系统还是32位系统,int都占用4个字节,long都占8个字节。
  2. 所有类型默认都是有符号的,Java中没有无符号一说。
  3. Java在存储数据的时候,整型默认为int型,浮点型默认为double
  4. 字符串类型(String)属于引用类型。

 4、变量

4.1 什么是变量

  • 就相当于是一个小箱子,箱子的大小就是你的类型决定的,箱子就是你的变量名。 
  • 在Java中没有无符号型,所以存储都是有符号型,第1位是符号位,剩下的31位(或其他位)作为数据位。

4.2 整型变量

4.2.1整型变量(int型,4个字节)

  • 代码如下:
    // 方式一:在定义时给出初始值
    int a = 10;
    System.Out.println(a);
    // 方式二:在定义时没有给初始值,但使用前必须设置初值
    int b;
    b = 10;
    System.Out.println(b);
    // 使用方式二定义后,在使用前如果没有赋值,则编译期间会报错
    int c;
    System.Out.println(c);
    c = 100;
    // int型变量所能表示的范围:
    System.Out.println(Integer.MIN_VALUE);
    System.Out.println(Integer.MAX_VALUE);
    // 注意:在定义int性变量时,所赋值不能超过int的范围
    int d = 12345678901234; // 编译时报错,初值超过了int的范围

    需要注意

  1. 建议定义整型变量的时候,直接赋值初值,如果不知道初值是什么,可以赋值为0,如果没有初值的话,编译器会报错。

  2. int不论在何种系统下都是4个字节。

  3. 在给变量设置初始值时,值不能超过int的取值范围,否则会导致溢出,程序编译出错。

  4. int的包装类型为 Integer(比较特殊,与char类型单独记一下)。

4.2.2 长整型变量(long型,8个字节)

  • 代码如下:
int a = 10;
long b = 10; // long定义的长整型变量
long c = 10L; // 为了区分int和long类型,一般建议:long类型变量的初始值之后加L或者l
long d = 10l; // 一般更加以加大写L,因为小写l与1不好区分

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

注意:

  1. 长整型变量的初始值后加L或者l,推荐加L,因为l与1很像,难以区分。
  2. 长整型不论在那个系统下都占8个字节。
  3. long的包装类型为Long(首字母大写即可)。

4.2.3 短整型变量(short,2个字节)

short a = 10;
System.Out.println(a);
// short型变量所能表示的范围:
System.Out.println(Short.MIN_VALUE);
System.Out.println(Short.MAX_VALUE);

注意

  1.  short在任何系统下都占2个字节。
  2. short的取值范围为:-32768 ~ 32767,注意使用的时候不要超过取值范围,否则会报错。
  3. short的包装类型为Short。

4.2.3 字节型变量(byte,1个字节)

  • 代码如下:
byte b = 10;
System.Out.println(b);
// byte型变量所能表示的范围:
System.Out.println(Byte.MIN_VALUE);
System.Out.println(Byte.MAX_VALUE);

注意

  1. byte在任何系统下都占1个字节
  2. byte的取值范围是:-128 ~ 127(单独记一下,以后用到的地方很多)。
  3. 字节的包装类型为Byte
  • 神奇的代码,接下来我们看一个神奇的代码:
byte a = 127;
byte b = a+1;
  • 这个代码当然有问题,但是问题出在哪里呢?是a+1的值超出byte的最大取值范围吗? 
  • 答案是否定的,其实编译器并不知道(a+1)的取值是多少,只有在运行的时候,才会知道他的取值,所以一开始是检测不出来越界的,那么问题出在哪里呢?
  • 其实上面也有提到,在整型变量进行计算的时候,所有小于4个字节的数据,都会提升为4个字节(int型),再去参与计算,也就是我们说的整形提升
  • 所以这个代码最本质的问题是,a+1返回的是int类型,用byte类型接收,会发生精度丢失的情况,这才是本质问题!
  • 如果实在想用byte来接收,就要进行强制类型转换,代码如下:
byte a = 127;
byte b = (byte)a+1;
  • 强制类型转换成byte类型之后,就按byte的类型规则,相当于127+1转过来了,如下图所示,结果为-128。
  • 强制类型转换,一定会让程序员自己确认,要不程序就会报错。

4.3 浮点型变量 

4.3.1 双精度浮点型(double,8个字节)

double d = 3.14;
System.Out.println(d);

注意

  1.  double在任何系统下都占8个字节。
  2. double和float这种浮点数,就算的都是近似值。
  3. double和float的浮点数与整数在内存中的存储方式不同,不能单纯使用的形式来计算
  4. double的包装类型为Double
  • 一个神奇的代码
int a = 1;
int b = 2;
System.out.println(a / b); 
  • 这个输出会是0.5嘛?答案是否定的,两个整型相除,结果一定是整型,结果为0。
  • 如果想要结果是小数,那么a,b中至少有一个类型要是浮点型,即可得出0.5,改进的代码如下:
double a = 1.0;
double b = 2.0;
System.out.println(a / b); // 输出0.5

4.3.2 单精度浮点型(float,4个字节)

float num = 1.0f; // 写作 1.0F 也可以
System.out.println(num);
  • float类型必须在数据后面+小写或大写的f。
  • 如下代码,java默认浮点型是double类型的(8个字节的,你用4个字节float接收就会出错) 
float num = 1.0;//默认为double类型,编译错误
System.out.println(num);

4.4 字符型变量(char,2个字节)

char c1 = 'A'; // 大写字母
char c2 = '1'; // 数字字符
System.out.println(c1);
System.out.println(c2);
// 注意:java中的字符可以存放整形
char c3 = '帅';
System.out.println(c3);

注意

  1. 不是整数类型,因为采用的是Unicode不是ASCII,所以占两个字节,可以赋值为中文
  2.  不能赋值负数,如果赋值为整数,输出的是整数对应的字符。 
  3. java用的是Unicode字符集,比ASCII(255截止)码字符集表示的范围更大。所以java中的char可以写中文
  4. char的包装类特殊:为character,较为特殊。
     

4.5 布尔型变量(boolean)

boolean b = true;
System.out.println(b);
b = false;
System.out.println(b);

注意:

  1. boolean类型,true表示真,false表示假不存在 1 表示 true, 0 表示 false 这样的用法。 
  2. Java 的 boolean 类型和 int 不能相互转换。
  3. 如下代码,不能写成boolean(value + 1);这种形式,因为1是整型,不能与boolean类型相加。 
boolean value = true;
System.out.println(value + 1);
// 代码编译会出现如下错误
Test.java:4: 错误: 二元运算符 '+' 的操作数类型错误
System.out.println(value + 1);
第一个类型: boolean
第二个类型: int
1 个错误

5、字符串类型(String)

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); // s1+s2表示:将s1和s2进行拼接
}
  • int类型转成String类型代码:
int num = 10;
// 方法1
String str1 = num + "";
// 方法2
String str2 = String.valueOf(num);
  • String类型转成int类型代码: 
String str = "100";
int num = Integer.parseInt(str);
  •  因为String是引用数据类型,我们在这里不过多介绍,之后的blog会详细介绍这部分内容,大家可以持续关注博主呦!

6、结语

本次的blog详细介绍了java的常见类型与变量,初步了解了四类八种的数据类型,接下来会持续更新java相关blog,欢迎大家来关注点赞!

猜你喜欢

转载自blog.csdn.net/weixin_44580000/article/details/124315358