数据类型与变量——Java基础知识点

计算机计算数据的方式

 我们知道计算机是有计算器演变过来的 , 对于计算机 , 它只实现了加法器 , 没有实现减法器,  对于减法的实现是通过 相加一个负数来计算的,  所以 引出了俩个 概念 正数 与负数 ,相对应的 原码 与反码,  其中原码可以认为是正数, 反码可以认为是负数, 但是计算机使用的补码进行运算 是为什么呢? 答案是 : 反码中 表示 0 的编码 可以有俩个, 但是在计算机中 唯一的字符只能有唯一的编码方式 ,所以引出了补码, 补码的定义是 : 原码的补码就是它本身, 反码的补码是它除了符号位 , 其余按位取反 ,末位加 1 . 其中, 反码的运算中,  符号位也是参与的, 如果有溢出的符号位, 直接舍弃, 得到的最终结果就是答案

Java字节和字符的区别

字节(byte):是计算机中数据处理的基本单位,习惯上用大写B来表示,1B(byte,字节)=8bit(位)

字符(char):是指计算机中使用的字母、数字、字和符号。依据字符不同的编码格式,每个字符单位对应的字节数是不一样的。

数据类型            

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

                四类:整型、浮点型、字符型以及布尔型

                八种:八种数据类型都有其包装类,这个会在后面说。

数据类型 关键字 内存占用 范围
字节型 byte 1 字节 -128 ~ 127
短整型 short 2 字节 -32768 ~ 32767
整型 int 4 字节 ~
长整型 long 8 字节 ~
单精度浮点数 float 4 字节 有范围,一般不关注
双精度浮点数 double 8 字节 有范围,一般不关注
字符型 char 2 字节 0 ~ 65535
布尔型 boolean 没有明确规定 true 和 false
  1.  在Java中,无论是16位系统还是32位系统,数据类型的内存占用都是不变的。
  2. 整形和浮点型都是带有符号的
  3. 整型默认为int型,浮点型默认为double , 无论是单精度和双精度 一般都是有误差的, 不是很准确
  4. 字符串属于引用类型

变量

变量定义:经常改变的量被称为变量,而数据类型就是用来定义不同种类变量的。

解释: 数据类型定义了一个范围, 而变量相当于容器, 不同类型定义的变量, 就相当于这个容器有多大的范围, 在这个范围中可以正常使用, 而超出这个范围就会发生溢出(你想 用 一升的瓶, 装5升的水, 那4升的水是不是溢出了) 用溢出的变量去计算,得到的结果肯定和你估计的相差甚远.

这也是为什么 Java支持 小范围自动先大范围的数据类型升级, 而不支持大范围的数据类型向小范围的降级(一般需要强制类型转换)

定义变量的语法格式为:

数据类型 变量名 = 初始值;

示例


int a = 10;
double d = 3.14;
char c = 'A';
boolean b = true;


整型变量的定义及使用

// 方式一:在定义时给出初始值
int a = 10;
System.Out.println(a);
// 方式二:在定义时没有给初始值,但使用前必须设置初值
int b;
b = 10;
System.Out.println(b);
// int型变量所能表示的范围:
System.Out.println(Integer.MIN_VALUE);
System.Out.println(Integer.MAX_VALUE);
// 注意:在定义int性变量时,所赋值不能超过int的范围

长整型变量


long b = 10; // long定义的长整型变量
long c = 10L; // 为了区分int和long类型,一般建议:long类型变量的初始值之后加L或者l
// long型变量所能表示的范围:这个数据范围远超过 int 的表示范围. 足够绝大部分的工程场景使用.
System.Out.println(Long.MIN_VALUE);
System.Out.println(Long.MAX_VALUE);
//long的包装类型为Long


短整型变量
 

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

字节型变量

byte b = 10;
System.Out.println(b);
// byte型变量所能表示的范围:
System.Out.println(Byte.MIN_VALUE);
System.Out.println(Byte.MAX_VALUE);
//字节的包装类型为Byte

浮点型变量

  1. 在 Java 中, int 除以 int 的值仍然是 int(会直接舍弃小数部分)
  2. double:在Java中是个近似值,而不是精确值。
double d = 3.14;
System.Out.println(d);
//double的包装类型为Double

单精度浮点型

  1. 一般写代码不是很常用float,因为表示数据范围较小
float num = 1.0f; // 写作 1.0F 也可以
System.out.println(num);
// float的包装类型为Float。

字符型变量

  1. Java 中使用 单引号 + 单个字母 的形式表示字符字面值.
  2. 计算机中的字符本质上是一个整数. 在 C 语言中使用 ASCII 表示字符, 而 Java 中使用 Unicode 表示字符. 因此一个字符占用两个字节, 表示的字符种类更多, 包括中文
char c1 = 'A'; // 大写字母
char c2 = '1'; // 数字字符
System.out.println(c1);
System.out.println(c2);
// 注意:java中的字符可以存放整形
char c3 = '帅';
System.out.println(c3);

布尔型变量

  1. boolean 类型的变量只有两种取值, true 表示真, false 表示假.
  2. Java 的 boolean 类型和 int 不能相互转换, 不存在 1 表示 true, 0 表示 false 这样的用法.所以不要和C搞混了
     
boolean b = true;
System.out.println(b);
b = false;
System.out.println(b);
//boolean的包装类型为Boolean

类型转换

自动类型转换(隐式),如下例:a=b;

代码不需要经过任何处理,在代码编译时,编译器会自动进行处理。特点:数据范围小的转为数据范围大的时会自动进行。

int a = 10;
long b = 100L;
b = a; // 可以通过编译
a = b; // 编译失败

   强制类型转换(显式)

特点:数据范围大的到数据范围小的,只能相同类型中转换。

int a = 10;
long b = 100L;
b = a; // int-->long,数据范围由小到大,隐式转换
a = (int)b; // long-->int, 数据范围由大到小,需要强转,否则编译失败
float f = 3.14F;
double d = 5.12;
d = f; // float-->double,数据范围由小到大,隐式转换
f = (float)d; // double-->float, 数据范围由大到小,需要强转,否则编译失败
a = d; // 报错,类型不兼容
a = (int)d; // int没有double表示的数据范围大,需要强转,小数点之后全部丢弃
byte b1 = 100; // 100默认为int,没有超过byte范围,隐式转换
byte b2 = (byte)257; // 257默认为int,超过byte范围,需要显示转换,否则报错
boolean flag = true;
a = flag; // 编译失败:类型不兼容
flag = a; // 编译失败:类型不兼容

字符串类型

在Java中”+"左右如果有字符串,那么代表的整体为字符串。

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);

关于引用类型与非引用类型的区别

我们都知道动物和植物的区别, 其中最主要的区别就是 ,植物 可以自给自足, 动物不行,  而Java中 引用类型与 非引用类型的主要区别也在此, 引用数据类型 不可以自给自足,必须有基础类型 , 而非引用类型 也就是 八大基础类型, 可以实现只调用基础类型. 

这里特指一下 字符串, 很多人都知道字符串是引用类型, 也知道在Java中 可以直接使用 String关键字来使用, 但是字符串 的本质 是字符组成的, 所以字符串和字符数组是能相互转换的 , 他俩的关系就相当于, 英语26个英语字母 与单词的区别 , 字母的不同排列组成了字符串

关于对象

Java中对象可以分为很多 ,  现在对Java对象做一个简单的介绍 

字符串对象: String 上面已经介绍过了 就不在重复介绍了

枚举: 它的作用是关联两个东西。举个例子。你对一个柜子进行了123标号,你告诉别人要想存储的柜子,  就要告诉你柜子对应标号, 这个标号和这个柜子就建立起来一种链接关系

接口: 主要定义的是一种规范 : 

类 : 是实现对象的一种模具

数据 : 是存储大量相同类型的对象

猜你喜欢

转载自blog.csdn.net/qq_56454895/article/details/128565339#comments_27444817