文章36 | 阅读 17119 | 点赞0
变量是内存中的小容器,用来存储数据。那么计算机内存是怎么存储数据的呢?无论是内存还是硬盘,计算机存储设备的最小信息单元叫“位(bit)”,我们又称之为“比特位”,通常用小写的字母b表示。而计算机最小的存储单元叫“字节(byte)”,通常用大写字母B表示,字节是由连续的8个位组成。
1B(字节) = 8bit(位)
1KB = 1024B
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB
数据类型概要图
基本数据类型(4类8种)
注:数值类型取值范围计算方法为 -2(字节数8)%2 ~ -2(字节数8)%2-1
举例: byte为1字节 则 -2(18)%2 ~ -2(18)%2-1= -128~127
原理:
1个字节有8位,而二进制每一位有(0,1)两种取值,按照排列组合原理,8位共有28=256 种可能取值。
其中由于正负数原因,第一位要用于判断正负号,不用于计算二进制实际值,所以要%2。
其中0归到正数范围中,所以正数取值范围要去掉0这个数,所以要-1。
0 转二进制 => 0000 0000
-128转二进制 => 1000 0000
同理 int类型
最小值:Integer.MIN_VALUE= -2147483648 (-2的31次方)
最大值:Integer.MAX_VALUE= 2147483647 (2的31次方-1)
概念
对于一个数, 计算机要使用一定的编码方式进行存储。 原码,反码,补码是机器存储一个具体数字的编码方式。
补码比源码和反码能多表示一位,是因为原码和反码中,1000 0000 表示-0,没有实际意义,补码中将其利用了起来。
作用:
以byte类型为例:
代码:
package Java_study;
public class yichu {
public static void main(String[] args) {
//不可以直接给 byte 类型赋值一个溢出值,会报错
// byte b1 = 130
// 127 二进制取值为 0111 1111
byte b = 127;
// 0111 1111 + 0000 00001 = 1000 0000 = -128
b++;
System.out.println("a: " + b);
// 1000 0000 + 0000 0001 = 1000 0001 = -127
b += 1;
System.out.println("b: " + b);
// 1000 0001 + 0000 0001 = 1000 0010 = -126
b = (byte)(b+1);
System.out.println("c "+ b);
}
}
测试记录:
a: -128
b: -127
c -126
取值范围小的数据类型与取值范围大的数据类型进行运算,会先将小的数据类型提升为大的,再运算
代码:
package Java_study;
public class zhuanhuan1 {
public static void main(String[] args) {
//定义两个int 类型的变量
int a = 10;
int b = 20;
System.out.println(a + b);
//我可以把a+b的结果进行输出,说明这个计算的结果是没有问题
//那么,我应该也可以把这个结果接收一下
int c = a + b;
System.out.println(c);
System.out.println("---------------");
//定义两个变量,一个 int 类型,一个 byte 类型
int aa = 10;
byte bb = 20;
System.out.println(aa + bb);
//byte cc = aa + bb;
int cc = aa + bb;
System.out.println(cc);
}
}
测试记录:
30
30
---------------
30
30
代码:
package Java_study;
/*
* 强制转换:
* 目标类型 变量名= (目标类型)(被转换的数据);
*
* 虽然可以做强制转换,但是不建议。因为强制转换可能会有数据的丢失。
*/
public class zhuanhuan2 {
public static void main(String[] args) {
// 定义两个变量,一个int类型,一个byte类型
int a = 10;
byte b = 20;
int c = a + b;
System.out.println(c);
byte d = 30;
byte e = (byte)(a + b);
System.out.println(e);
}
}
测试记录:
30
30
代码:
package Java_study;
/** 隐式转换
* char 隐式转换为 int时,只是将该字符的 Unicode 序号作为int值,然后输出
* 强制转换:
* 把 int 数做 char 强制转化时,只是转化成其在 Unicode 上的字符,然后输出
*/
public class zhuanhuan3 {
public static void main(String[] args) {
//定义四个变量
char c = '6';
int i = 54;
//隐式转换: '6'的Unicode为54,得出 i1 = 54
int i1 = c;
//强制转换: 54 在Unicode中表示字符'6',得出c1 = '6'
char c1 = (char)i;
System.out.println("======int与char的转换======");
System.out.println("i1:" + i1);
System.out.println("c1:" + c1);
//byte与char的转换
byte b = 44;
//强制转换: '54'的unicode序号为54, 得出 b1 = 54
byte b1 = (byte)c;
//强制转换: 44在unicode中表示字符'',得出c1 = ','
c1 = (char)b;
System.out.println("======byte与char的转换======");
System.out.println("b1:" + b1);
System.out.println("c1:" + c1);
//short与char的转换
short s = 34;
//强制转换+隐式转换: '54' 的unicode序号为54,得出 s1 = (byte)54
//byte 向 short 为隐式转换 所以 s1 = 54
short s1 = (byte)c;
//强制转换: '54' 的unicode序号为54,得出 s1 = 54
short s2 = (short)c;
//强制转换: 44 在Unicode中表示字符'"',得出c1 = '"'
c1 = (char)s;
System.out.println("======short与char的转换======");
System.out.println("s1:" + s1);
System.out.println("s2:" + s2);
System.out.println("c1:" + c1);
//string与int的转换
//st = "54" = String.valueOf(c)
String st = "54";
int in = 54;
//stringC = Integer.toString(54) = "54";
String stringC = Integer.toString(i);
//inti = Integer.valueof("54") = 54;
int inti = Integer.valueOf(st);
System.out.println("=====int与string的转换======");
System.out.println("inti:" + inti);
System.out.println("stingC:" + stringC);
}
}
测试记录:
======int与char的转换======
i1:54
c1:6
======byte与char的转换======
b1:54
c1:,
======short与char的转换======
s1:54
s2:54
c1:"
=====int与string的转换======
inti:54
stingC:54
关键字是被Java语言赋予特定含义的单词,不能被当成变量来使用。
关键字特点:
常量定义:
在程序执行的过程中,其值不可以发生改变的量
常量分类:
代码:
package Java_study;
public class changliang {
public static void main(String[] args) {
//声明局部常量
final double x = 3.3;
System.out.println(x);
}
}
测试记录:
3.3
变量定义:
在程序执行的过程中,在某个范围内其值可以发生改变的量.
变量定义格式:
代码:
package Java_study;
public class bianliang {
public static void main(String[] args) {
// 定义一个变量
int a = 10;
System.out.println(a);
int b;
b = 20;
System.out.println(b);
{
// 代码块
int c = 30;
System.out.println(c);
}
}
}
测试记录:
10
20
30
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/u010520724/article/details/119568008
内容来源于网络,如有侵权,请联系作者删除!