java中引用数据类型和基本数据类型的一些区别(貌似不完整,但会有些启示)
Ø 首先先举几个引用数据类型的例子:
String StringBuffer 类(包括自己定义的一些类和包中有的类) integer 等
Ø 下面的是基本数据类型
Int double char Boolean 等
表面上可以看出两个区别(单从类的角度来看):
1. 引用数据类型必须要实例化之后才可以使用,(String 和 integer除外)
注:String是一个很特殊的引用数据类型
Inteter是在在使用的过程中会自动的装箱和拆箱
例如:StringBuffer sb = new StringBuffer();
2. 引用数据类型或多或少的会有一些属性和方法
例如:类里面包含的就是属性和方法,比如StringBuffer里面就有append()方法 还有charAt()方法
深入点看:
3. 引用数据类型是指针的指向,基本数据类型则在内存中直接得到
1.下面一个例子是一个值传递的过程
例如:
下面是一个类的方法
public void changeNumber(int a,int b){int temp=a;a=b;b=temp;System.out.println("交换后的两数 a="+a+" b="+b);}在main方法中public static void main(String[] args){//实例化的一个过程Exam9 ex=new Exam9();int a=10;int b=5;System.out.println("交换前的两数 a="+a+" b="+b);//调用交换的方法ex.changeNumber(a, b);System.out.println("方法调用后的两数 a="+a+" b="+b);
}
运行的结果是:
交换前的两数 a=10 b=5
交换后的两数 a=5 b=10
方法调用后的两数 a=10 b=5
这个是许多人都会犯的错误,包括我也犯了这个错误
就是:方法调用后的两数 a=5 b=10
解释:a变量和b变量在内存中的值已经有了,并且值是固定的
基本数据类型的传递是一个值传递的过程
2.下面的一个例子是一个引用类型的传递
里面有一个user类:里面有一个属性:String name =“tom”;
public void changeName(User user,String name){user.name=name;
}User user=new User();System.out.println("更改前的用户姓名:"+user.name);//调用更改名字的方法ex.changeName(user, "jack");System.out.println("更改后的用户姓名:"+user.name);
结果是:更改前的用户姓名:tom
更改后的用户姓名:jack
这个是个引用的数据类型,
引用数据类型就是一个指针的一个指向。
1. 这个例子也是一个引用数据类型的例子
public void change(StringBuffer bufferA,StringBuffer bufferB,StringBuffer bufferC){bufferA=new StringBuffer("AA");bufferB.append("B");bufferC=bufferA;bufferC.append("C");System.out.println("方法中:");System.out.println(bufferA);System.out.println(bufferB);System.out.println(bufferC);}/*** @param args*/public static void main(String[] args){StringBuffer bufferA=new StringBuffer("A");StringBuffer bufferB=new StringBuffer("B");StringBuffer bufferC=new StringBuffer("C");Exam10 ex=new Exam10();ex.change(bufferA, bufferB, bufferC);System.out.println("方法外");System.out.println(bufferA);System.out.println(bufferB);System.out.println(bufferC);}
运行的结果:
方法中的值大家都会的:
方法中:
AAC
BB
AAC
方法外
A
BB
C
关键是方法外面的System.out.println(bufferA);
这个比较难理解:
因为在方法体内部,有实例化了一个A对象,所以在方法里面的bufferA指向的是方法里面的A对象。和外面的没有联系。所以外面的还是指向原来的A对象,所以结果是A。
摘自百度文库lxl467344991
java中引用数据类型和基本数据类型的一些区别(貌似不完整,但会有些启示)相关推荐
- java中引用数据类型有哪几种
本文主要介绍了java中引用数据的类型,具有很好的参考价值.希望对你有帮助.如有错误或不足之处,请不吝赐教. 目录 Java中的引用数据类型有哪些?先说Java中的引用数据类型:1.类别引用2.接口参 ...
- java中引用数据类型
Java中有俩种数据类型,其中主要有8中基本数据类型和引用数据类型,除了8中基本数据类型以外都是引用数据类型,8中基本数据类型分别是byte,short,int,long,char,boolean,f ...
- java 字符串是对象吗_解析Java中的String对象的数据类型
解析Java中的String对象的数据类型 2007-06-06 eNet&Ciweek 1. 首先String不属于8种基本数据类型,String是一个对象. 因为对象的默认值是null,所 ...
- java中 引用传递_Java中的引用传递
我觉得引用传递 真的很好理解,不知道为什么大家觉得这么难,你只要掌握这几点就可以了 在Java机制中他自己提供的那些数据类型(String ,Object等)要这样理解: 1)在Java中 引用 ...
- Java 基础 | Java 中引用与指针的关系
前言:关键字包含 #指针,java 引用,空指针,地址访问,引用类型,在 Java 编程语言中,程序员不需要担心程序的内存使用.Java 语言的自动垃圾收集器会不时地清理那些变成垃圾的对象. 如果垃圾 ...
- java堆和栈 常量池_GitHub - han-guang-xue/difference-of-stack-heap-pool: Java中堆、栈和常量池的区别...
Java中堆.栈和常量池的区别 栈 堆 常量池的概念 首先我们先了解一下概念,Java把内存分成两种,一种叫做栈内存,一种叫做堆内存. 栈内存 存放基本类型的变量数据和对象类型的引用(请注意存放的是引 ...
- java中list,set,map集合的区别,及面试要点
Map集合:链接: Map集合的五种遍历方式及Treemap方法 Set集合:链接: Java中遍历Set集合的三种方法 TreeSet集合:链接: Java深入了解TreeSet,和迭代器遍历方法 ...
- Java中Array和ArrayList之间的9个区别
array和ArrayList都是Java中两个重要的数据结构,在Java程序中经常使用. 即使ArrayList在内部由数组支持,了解Java中的数组和ArrayList之间的差异对于成为一名优秀的 ...
- java中的NIO和IO到底是什么区别?20个问题告诉你答案
摘要:NIO即New IO,这个库是在JDK1.4中才引入的.NIO和IO有相同的作用和目的,但实现方式不同,NIO主要用到的是块,所以NIO的效率要比IO高很多. 本文分享自华为云社区<jav ...
- java中*和**的作用 以及 /和/*和/**的区别
一.java中*和**的作用 "*"就表示了所有的文件,但是"*"并不包括子目录下的文件: "**"匹配包含任意级子目录中所有的文件: 二. ...
最新文章
- 【项目实战课】基于ncnn框架与KL散度的8bit对称模型量化与推理实战
- 专注创新型蛋白工具研发,上海恺佧生物科技完成3000万元Pre-A轮融资
- java中对象的序列化和反序列化
- Linux常用命令--文件(夹)查找之find命令
- rocketmq中各个角色介绍
- 有哪些命令行的软件堪称神器?
- 2、安装和连接mysql
- 前端学习(3036):vue+element今日头条管理-复习
- REVERSE-PRACTICE-BUUCTF-6
- linux 命令启动菜单栏,Linux守护进程的启动方法
- 禁用 ssh agent_如何修复“禁用Agent XP”错误
- 游戏ai人工智能_AI与游戏,第1部分:游戏如何推动了两门AI研究流派
- NgDL:第三周:浅层NN
- 3种方法解除RAR压缩文件的密码保护
- Promise的resolve方法和reject方法
- 休假管理系统的问题描述与词汇表
- 出方向链路负载均衡技术(原理部分)
- 人脑的计算能力有多强?
- jQuery插件Magnify放大镜实现javascript图片放大功能
- .NET CORE WEBAPI+VUE前后端分离工作流引擎ROADFLOW3.0更新发布
热门文章
- Android学习笔记---SQLite介绍,以及使用Sqlite,进行数据库的创建,完成数据添删改查的理解
- c语言中static使用方法
- sql 单表/多表查询去除重复记录
- PHP错误提示的关闭方法详解
- siwper vue 上下滑动分页_支持移动端的vue滑动轮播图插件vueswiper
- 随想录(rtos和一般os的区别)
- C语言和设计模式(桥接模式)
- mysql内连接和外连接的区别_数据库左连接、右连接、内连接、全连接区别
- python历史5分钟数据_python每5分钟从kafka中提取数据的例子
- python备份目录下文件夹_Python备份目录及目录下的全部内容的实现方法