目录在计算机编程中,实体类型的实现必然会涉及到数据类型的概念
了解数据类型的分类、特性和管理的过程有利于更灵活地使用和理解计算机语言
本博客中,将对于Java中数据类型的划分、划分原因和其他的数据类型的区别做出讲解
并且利用实际的编程,深化对于不同数据类型产生和存储的理解
- 第一章 Java数据类型
- 一、数据类型
- (1) 基础数据类型
- (2) 引用数据类型
- 二、编程比较
- (1) 对于多属性对象的相等判断
- (2) 对于字母内容不区别大小写情况下的相等判断
基础数据类型和其他数据类型的最大的区别是bit上的,在创立基础数据类型的时候,计算机会分配一个固定长度的内存来进行存储,本篇博客会给出数据类型对应的bit值。
Java中存在的4种主要的数据类型和它们对应的bit值:
- 整形(byte short int long)
- 浮点型(float double)
- 字符型(char)
- 布尔型(boolean)
| 名称 | bit值 | 名称 | bit值 |
|---|---|---|---|
| byte | 8 | float | 32 |
| short | 16 | double | 64 |
| int | 32 | char | 16 |
| long | 64 | boolean | 8 |
//小小提示:关于bit值和可以表示的数字的范围可以自行思考,比较简单,这里省略~
(2) 引用数据类型类 数组 接口
- String字符串
- 初始化默认值:null
- 创建的时候有两个原子操作,基础的数据类型就只有一个原子操作
String str;
str = " ";
- String类型和基本数据类型的区别
1)在内存中存在堆内存和栈内存,堆内存是共享的,而栈内存是私有的
2)在创建基础数据类型时,会在栈内存中直接占用一个固定大小(这个大小就和我们上面提到的bit值是一致的),在给数据赋值的时候,栈内存内的数据变动
3)而在创建String的时候,会在栈内存里面生成一个地址编码,这个编码指向堆内存中的一块内存,真正的数据存储在堆内存里面
4)如果比较两个String的话,其实是在比较两者的地址编码,而不是在比较其中的内容
直观的来看就是这样的:
而为什么要这样设置的原因,与所要表示的长度限制有关,比如String的长度位置,难以用bit来描述范围 - List类型和String类型同理:从概念上,它们都是类
//这个具体的更多之后展开补充~
二、编程比较talk is cheap,show me the code~
为了更加了解上述的内存的区别,编写程序来判断储存的区别
package com.cjx0929;
public class User{
// 编写User的属性
String name;
String id;
int age;
int[] list;
// 初始化
public User(String name, String id, int age,int[] list){
this.name = name;
this.id = id;
this.age = age;
this.list=list;
}
// 判断字符串是否相等的函数,如果长度不等就直接不等,如果相等再一个个比较内容
//也可以使用.equals()的方法进行比较,!=比较的是地址
public boolean equalsString(String a,String b) {
if(a.length()!=b.length())
{
return false;
}
for(int i=0;i
输出结果
false
true
符合之前的学习知识,改变实例的值,发现也符合我们的判断~
(2) 对于字母内容不区别大小写情况下的相等判断
对于属性是字符串的形式,如果字母不区分大小写认为是相等的话,编程实现:
package com.cjx0929;
public class Alpha {
String name;
public Alpha(String name)
{
this.name = name;
}
// 可以将字母全部转化为大写的函数
public char transformAlpha(char a){
int number1= Integer.valueOf(a);
if(number1>96) {
int number2 = number1-32;
char b = (char)number2;
return b;
}
return a;
}
public boolean equalChar(Alpha b){
String name1 = this.name;
String name2 = b.name;
if(name1.length()!=name2.length())
{
return false;
}
for(int i=0;i
输出结果
true



