Java的变量、数据类型

一、变量

1.变量

1.什么是变量?
    变量是内存当中存储数据的基本单元。

2.为什么要使用变量机制?
    想重复使用字面量这块空间

3.变量的三要素?
    数据类型:不同的数据类型分配不同的空间,1byte = 8bit
    变量名:为了方便以后使用/访问
    字面量:值/数据

2.什么是字面量?

1.实生活中的,这其实就是对数据的处理,一门编程语言首先能够表示数据才能处理数据。所以java程序就是通过字面量来表示数据的。

2.字面量的分类:整数型,浮点型,布尔型,字符型,字符串型,字符用单引号引用,字符串型用双引号引用

3.思考以下的字面量 10 是存储再同一块空间中,还是不同的空间中?
System.out.println(10);
System.out.println(10);
System.out.println(10);

4.如果我们在内存中开辟一块空间并存储字面量10,并且想重复使用这块空间,怎么办?使用变量机制。
int i = 10;

3.使用变量 (在java语言中有规定,变量必须先声明,再赋值,才能访问,没有赋值就意味着没有开辟空间)

1.怎么声明变量?

int i;

2.使用变量需要注意哪问题?

使用前,必须声明,赋值,没有赋值就意味着没有开辟空间

再同一个域中,变量可以重新赋值,不能重复声明

局部变量,成员变量:实例变量,静态变量

3.变量分类

成员变量:
局部变量:

 请思考如下问题:没有赋值变量可以访问吗?

public class A{
	int i;
	System.out.println(i);
}

//没有赋值变量可以访问吗?执行效果如下:
A.java:4: 错误: 可能尚未初始化变量i
        System.out.println(i);
                           ^
1 个错误
错误: 编译失败

 二、数据类型

1.数据类型的分类以及作用

1.数据类型有什么作用?
数据类型用来声明变量,并且为在程序运行过程中,根据不同的数据类型分配不同的大小的空间

2.基本数据类型:

分为4大类8小种:

整数型:byte short int long

浮点型:float double

字符型:char

布尔型:boolean

3.引用数据类型

String类型、JDK包中的其他类、自定义类等等

2.二进制、八进制、十进制

1.进制转换

2.进制的整数表示形式:
十进制:10
二进制:0b10    2
八进制:010        8
十六进制:0x10    16

 3.原码,反码,补码

计算机只能识别二进制
计算机在底层存储数据的时候一律存储的是二进制补码形式
对于正数来说:二进制原码,反码,补码时同一个
对于负数来说:第一位是符号位,
原码:二进制
反码:符号位不动,数值位取反
补码:反码加1

 4.字符编码

1.计算机最开始是不支持文字的,只支持科学计算。通过字符编码

2.对于char类型来说表示比较麻烦,因为每个国家文字不一样,文字不能通过***自然算法***转换成二进制,因此出现了字符编码来解决

3.在字符编码种规定了一系列文字对应的二进制

4.字符编码涉及编码和解码两个过程

5.字符编码的发展:起初是为了战争而开发的,为了计算导弹轨道,后来随着计算机的发展开始支持文字,最先支持的是英文,英文对应的编码方式是:ASCLL码    ASCLL码采用1byte进行存储,键盘上可以表示的符号不超过256个,1byte可以表示256个不同情况

6.之后国际标准组织指定了ISO-8859-1编码方式,又称为latin-1,向上兼容ASCLL码,不支持中文,后来发展到亚洲才支持中文,韩文,日文

7.中文的编码方式:GB2312<GBK<18030(容量的关系)简体中文    big5繁体中文

8.在java中为了支持所有文字:UTF-8    UTF-16    UTF-32

9.需要记住:ASCLL(a97 A65 0 48)    ISO-8859-1    GB2312    GBK    GB18030    big5    unicode(utf)

 5.转义字符

遇到 \ ,将后面紧挨着的字符进行转义
\t    表示制表符Tab键
\\    输出\字符
\n    换行
\"    转义"
\u    表示后面的是一个字符的unicode编码

6. 取值范围以及缺省默认值

byte:1字节    -128    127        0
short:2字节    -32768    32767    0
char:2字节    0    65535        \u0000
int:4字节        -2147483648    2147483647    0
long:8字节                    0L
float:4字节                    0.0F
double:8字节                    0.0
boolean:1字节    true(00000001)    false(00000000)

 

7.类型转换规则

1.boolean类型不能转换

2.自动转换:小容量的数据类型可以转换成大容量的数据类型

3.没有超过byte short char 的范围,整数字面量可以直接赋值,因为整数型字面量是int类型如果直接赋值给long类型会报错,需要

4.强制类型转换:大容量转换成小容量必须添加强制类型转换

5.只有byte short char 做混合运算时,全部转换成int类型在进行

6.多种数据类型运算时,全部转换成最大容量的类型,再进行转换

//向上隐式转型内存溢出情况
public class Int2LongOverflow {
    public static void main(String[] args) {
        // Integer.MAX_VALUE = 2147483647
        int a = Integer.MAX_VALUE;
        int b1 = 1;
        long sum1 = a + b1;

        long sum2 = 2147483647 + 1;

        long b2 = 1;
        long sum3 = a + b2;

        long sum4 = 2147483647 + 1L;

        System.out.println("sum1 = " + sum1);
        System.out.println("sum2 = " + sum2);
        System.out.println("sum3 = " + sum3);
        System.out.println("sum4 = " + sum4);
    }
}
sum1 = -2147483648
sum2 = -2147483648
sum3 = 2147483648
sum4 = 2147483648

 8.浮点型:

float、double
注意:用在财务方面或者说使用再财务方面,double也远远不够
在java中提供了一种精度更高的专门用在财务方面类型,java.math.BigDecimal

 byte short char混合运算

分析下面两个程序的区别?
char c1 = 'a';
byte b = 1;
short s = c1 + b;
short k = 98;

 9.强制类型转换

强制类型转换符:(int)12L

会造成精度损失:long类型占八个字节,int类型站4个字节强制转换导致long类型前面4个字节丢失

byte b = (byte)300;
System.out.println(b);

//强制类型转换:00000000 00000001 00101100
byte占用1个字节:00101100    代表44

byte b = (byte)150;//b是多少?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值