A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

陈锐涛

中级黑马

  • 黑马币:48

  • 帖子:83

  • 精华:0

跪求啊??一直没有明白什么是 基本数据类型?引用数据类型?我要的不是内容的不同,我需要解释两者在用法,实际操作中的不同,如果能附上实例 那就最好了,我一直没有搞懂两者的 用法和实际区别 什么指针呀?基本数据类型存放的是一个值,而引用类型存放的是一个(对象)地址?又是怎么解释的?还真的 没有明白

8 个回复

正序浏览
601643498 发表于 2015-5-13 00:09
基本数据类型好像是数字引用好像是int i=1中的i,我也不太懂,

引用数据类型和基本数据类型的一些区别
        首先先举几个引用数据类型的例子:
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
这个是个引用的数据类型,




引用数据类型就是一个指针的一个指向。

4.        这个例子也是一个引用数据类型的例子
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。

这个算是我找到最完整的了~
回复 使用道具 举报
yufuhong 发表于 2015-5-13 00:18
基本数据类型;在任何操作系统中都具有相同大小和属性
引用数据类型;在Java程序中由人员自己定义的变量类 ...

谢谢啦~
回复 使用道具 举报
Always, 发表于 2015-5-13 13:37
基本数据类型就是已定义的不能更改的数据结构。引用类型就是自定义的东西,可以自己定义他的属性,名称。基 ...

谢谢啦~
回复 使用道具 举报
基本数据类型就是已定义的不能更改的数据结构。引用类型就是自定义的东西,可以自己定义他的属性,名称。基本数据类型主要用于定义匹配的数据。至于指针暂时不需要管的,
回复 使用道具 举报
空--格 发表于 2015-5-13 00:14
基本类型
(四类八种)
                          整型byte short int long

正解           
回复 使用道具 举报
基本数据类型;在任何操作系统中都具有相同大小和属性
引用数据类型;在Java程序中由人员自己定义的变量类型
回复 使用道具 举报
基本类型
(四类八种)
                          整型byte short int long
                          浮点型 float double
                          字符型 char
                          布尔型Boolean
引用类型:
            类(class),接口(interface), 数组,枚举(enum),注释  
回复 使用道具 举报
601643498 来自手机 初级黑马 2015-5-13 00:09:58
沙发
基本数据类型好像是数字引用好像是int i=1中的i,我也不太懂,
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马