5-1. java变量和数据类型

举报
数据分析与统计学之美 发表于 2021/09/28 17:59:18 2021/09/28
2.1k+ 0 0
【摘要】 Java系列第五课

1、计算机中变量的存储方式

在这里插入图片描述
图示详解:

	我们在电脑中每运行一个程序,相当于在计算机内存中开辟了一块空间(分配一
块内存)。例如:QQ有扣扣的运行内存,微信有微信的运行内存。当然,运行java程
序时,计算机也分配给java虚拟机jvm一个虚拟机内存。
    jvm虚拟机内存,好比一个“大广场”,里面盖了很多很多个“小房子”(内存空间)
当我们村存储一个整数22进去,这个jvm虚拟机内存,会分配一间“小房子”给22,当
然这块小房子会附带一个地址id,当我们想要找到这个22的时候,带着这个地址id就
可以找到22。
    当然,我们肯定不会这么做,因为id太长了,也没有规律,不便于记忆,就好
 像我们访问百度的网站,使用的是www.baidu.com,而不是直接输ip,因为我们
记不住这么多ip,因此,我们也记不住这么多的id。
    于是,我们给22住的地方取了一个“别名”,比如“age”,当我们叫“age”,22
便会回应你(因为一个房子只能住一个人,不同房子不能取相同的别名),我们找到
了age,就相当于找到了22

2、什么是变量?

1)内存中的一个存储空间,空间中的数据可以改变。每一块内存只能存一个数据。
2)同一个作用域内(就是同一对大括号内),变量不要同名。
3)变量一定要先声明,再使用。(java语言属于“强类型”的语言,使用变量之前,必
须先声明变量的类型。)
4)局部变量必须初始化之后才可以使用,在主方法中定义的变量,叫做"局部变量"。在主方法之外,类之内定义的变量叫做"成员变量","成员变量"不进行初始化也可以使用,因为系统会帮它进行初始化。

3、变量的命名规则

1)标识符的命名规则:

  • 由字母,数字,下划线_,$组成。
  • 不能以数字开头。
  • 不能是java的关键字。(java中关键字如下)。
  • 不能是true false null这样的字面值 。

java中常用的关键字如下:
在这里插入图片描述
注:关于保留字的说明:const、goto,保留字在java中没有实际用处,我们不用管它就行,只要记住不用保留字作为变量名就可以啦。

2)变量名的命名规范:

骆驼命名法:多个单词组成,第一个单词首字母小写,后边单词首字母大写。

  • age
  • ageValue
  • ageValueNumber

4、变量声明与初始化

声明:给计算机打一个招呼,告诉它,我想存一个整数。
初始化:在内存中开辟一块空间,赋一个值,把数字存进去。
因此,变量只有初始化以后,才算是真正创建成功了。

1)以int整型为例

Ⅰ 先声明,再初始化
# 声明一个整型变量,叫做“age”
int age;
# 初始化
age = 22;
Ⅱ 边声明,边初始化
int age = 22;

5、变量交换(很重要,记住)

交换原理如图所示:
在这里插入图片描述
代码如下:

/** 示例:变量值互换 */
public class  Exchange{
    	public static void main(String[] args) {
    		int n1 = 22;
    		int n2 = 33;
    		int temp;
    		temp = n1;
    		n1 = n2;
    		n2 = temp;
    	System.out.println("n1的值为:" + n1);
    	System.out.println("n2的值为:" + n2);
   }
}

6、java中的数据类型

我们知道,创建一个变量,相当于在内存中开辟了一块儿空间,空间有大小,就好比一间大房子,假如你只放一本书就显得很浪费了。

因此,在声明变量的时候,就相当于给这个变量一个空的房子,房子的大小就与你存放东西得多少有关,东西少,就给你一个小房子;东西多,就给你大房子。
在这里插入图片描述

1)整型

整型                     空间大小               取值范围
字节类型     byte         1字节              -128127
短整数类型   short        2字节             -3276832767
整数类型     int          4字节                  见下面
长整数类型    long        8字节                  见下面

查看不同整型的取值范围的代码如下:

public class Var {
    	public static void main(String[] args) {
    		System.out.println(Byte.MIN_VALUE);
    		System.out.println(Byte.MAX_VALUE);
    		System.out.println("--------------");
    		System.out.println(Short.MIN_VALUE);
    		System.out.println(Short.MAX_VALUE);
    		System.out.println("--------------");
    		System.out.println(Integer.MIN_VALUE);
    	System.out.println(Integer.MAX_VALUE);
    	System.out.println("--------------");
    	System.out.println(Long.MIN_VALUE);
    	System.out.println(Long.MAX_VALUE);
    	System.out.println("--------------");
    }
}

结果如下:

-128
127
--------------
-32768
32767
--------------
-2147483648
2147483647
--------------
-9223372036854775808
9223372036854775807
--------------

2)浮点类型

单精度   float       4字节                   
双精度   double      8字节      

查看浮点类型的取值范围的代码如下:

public class Var2 {
    	public static void main(String[] args) {
    		System.out.println(Float.MIN_VALUE);
    		System.out.println(Float.MAX_VALUE);
    		System.out.println("--------------");
    		System.out.println(Double.MIN_VALUE);
    		System.out.println(Double.MAX_VALUE);
    		System.out.println("--------------");
    	}
}

结果如下:

1.4E-45
3.4028235E38
--------------
4.9E-324
1.7976931348623157E308
--------------

3)字符类型

字符类型        空间大小          取值范围
 char            2字节          065535"a"  "中"  "2"

4)布尔类型

booleantruefalse

7、引用数据类型

字符串        String
 数组          [ ]class
 接口        interface

8、习题

在这里插入图片描述
操作如下:

public class Test{
    public static void main(String[] args){
        String brand = "嘉士利";
        int weight = 1000;
        double price = 17.8;
        System.out.println(brand);
        System.out.println(weight);
        System.out.println(price);
    }
}

9、数据类型之间的相互转换

1、类型转换:一种类型的值赋值给另一种类型的变量。

1)自动类型转换

前提:类型兼容。范围小的 赋值给 范围大的。

注:取值范围double>=int,即double可以包括int,但是int不能包括double。因此,整型可以自动转换为浮点型,但是浮点型转换为整型,就会报错,提示“不兼容的类型: 从double转换到int可能会有损失”。

public class  Test{
	public static void main(String[] args) {
		int i = 12;
		double d = i;
		// 发生了类型自动转换,将整型转换为浮点型。
		// 前提:两者之间数据类型是兼容的。
            // 因为double类型可以完全包括这个int类型。
		System.out.println(d);
		/*
		思考:假如我们将double类型,赋值给int类型,可不可以呢?
	        回答:不可以。因为int类型肯定是不可能包括double类型的。
		会出现这个错误:Test.java:13: 错误: 不兼容的类型: 从double转换到int可能会有损失
		double d1 = 12.3;
		int i1 = d1;
		System.out.println(i1);
		*/
	}
}

自动类型转换的2条线:
在这里插入图片描述

2)强制类型转换(会出现类型损失)
范围高的    赋值给    范围低的。

语法格式如下:

(类型);

public class  Test{
	public static void main(String[] args) {
		double n = 54.78;
		int i = (int) n;
		System.out.println(i);
	}
}

# 结果是:
54

10. 习题

在这里插入图片描述
这里涉及到一个新的知识:“数据类型提升”。

数据类型提升:参与运算的时候,类型低的和类型高的,进行运算。类型低的会提升为类型高的类型的数据。

public class  Test{
	public static void main(String[] args) {
		int i = 2;
		int sum;
		sum = (int) (i * 5 + 5.58); # int + double 变为 double + double
		System.out.println(sum);
		
	}
}
# 结果为:
15
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。