精华内容
下载资源
问答
  • java中指针

    千次阅读 2012-09-15 17:00:54
    尽管java中没有显示的使用指针并且也不允许程序员使用指针,而实际上对象的访问就是指针的实现。一个对象会从实际的存储空间的某个位置开始占据一定数量的存储体。该对象的指针就是保存了该对象的存储地址的变量,...

    尽管java中没有显示的使用指针并且也不允许程序员使用指针,而实际上对象的访问就是指针的实现。一个对象会从实际的存储空间的某个位置开始占据一定数量的存储体。该对象的指针就是保存了该对象的存储地址的变量,并且这个存储地址就是对象在改空间开始的位置。在需要编程语言中指针是一种数据类型 在java中指针实际上就是对象的引用。

    我们举个例子来说明下吧:

    1:People p=null;

    2:People q=new People("name","age");

    这里创建了2个对于对象的引用的变量p,q 。变量p被初始化为null 其实null就是一个空指针   每个对象的引用都可以初始化为null 他表示次对象不指向任何地方 也就是他不指向任何类的对象。


    变量q是一个对于people类的实例的引用 操作符new的意思是 告诉计算机申请足够的内存的 ,而引用q就是这个内存地址的指针。

    为此请读者考虑如下代码的运行结果:
    People p1 = new People("David","0004");
    People p2 = p1;
    p2.setName("Denny");
    System.out.println(p1.getName());

    估计很多人跟我考虑的结果一样   p1.getName="David" 但是结果并不是这样的    因为当你执行people p2=p1的时候 也就是说 原来p1跟p2都是对象的引用 当你执行完赋值之后

    他们2个都指向了同一个内存地址 因此对于p2的修改  同样也会影响到p1的



    请读者继续考虑以下代码的运行结果:
    People p1 = new People("David","0004");
    People p2 = new People("David","0004");
    System.out.println(p1= = p2);


    这虽然p1跟p2的值都相同 但是由于他们指向不同的存储空间 因此输出为false

    可见如果我们希望通过完成对象的拷贝 使用一个简单的赋值语句是无法完成的。要达到这个目的可以通过事项cloneable借口并重写clone方法来完成。如果我们希望判断两个对象的引用是否一致 可以通过equie方法来进行判断




    展开全文
  • Java指针

    万次阅读 多人点赞 2017-12-05 15:59:53
    Java中并没有显示的使用指针,而且也不允许编程的过程中使用指针,但实际上,一个对象的访问就是通过指针来实现的,一个对象会从实际的存储空间的某个位置开始占据一定的存储体。该对象的指针就是一个保存了对象的...

    Java中并没有显示的使用指针,而且也不允许编程的过程中使用指针,但实际上,一个对象的访问就是通过指针来实现的,一个对象会从实际的存储空间的某个位置开始占据一定的存储体。该对象的指针就是一个保存了对象的存储地址的变量,并且这个存储地址就是对象在存储空间中的起始地址。在许多高级语言中指针是一种数据类型,在Java中是使用对象的引用来替代的。
      创建一个People类,有name(String),id(String)两种属性;

    People p = null;
    People q = new People("Jack","0004");
    

    这里创建了两个对于对象引用的变量p和q。变量p初始化为nullnull是一个空指针,它不指向任何地方,也就是说它不指向任何类的对象,因此null可以复制给任何类的对象的引用。变量q是一个对于People类的实例引用,操作符new的作用实际上是为对象开辟足够的内存空间,而引用p是指向这一内存空间地址的指针。
      继续编写:

    People p1 = new People("David","0001");
    People p2 = p1;
    p2.setName("Denny");
    System.out.println(p1.getName());
    

    运行结果为:

    Denny
    

    这段代码中对People类的对象p2的name成员变量进行了设置,值为Denny。但是这时就会发现,p1的成员变量name的值也变成了Denny。
      原因就是p1和p2都是对对象的引用,在完成赋值语句People p2 = p1;后,p2和p1指向通一个存储空间,所以对于p2的修改也影响到了p1,如图所示:
    这里写图片描述
      
      继续编写:

    People p1 = new People("David","0002");
    People p2 = new People("David","0002");
    System.out.println(p1 == p2);
    

    在这里虽然p1与p2的所有成员变量的内容均相同,但是由于它们指向不同的存储空间,所以,输出语句输出结果为false。p1与p2的指向不同打的存储空间,如图所示:
    这里写图片描述

    由此可见,如果我们希望完成对象的拷贝,使用一个简单的赋值语句是无法完成的。要达到这一目的可以通过实现Cloneable接口并重写clone方法来完成。如果我们希望判断两个对象引用是否一致是可以覆盖继承自Object类的equals方法来实现。

    2018年11月06日,将本文标签更改为转载,原意本文为记录用,但今天无意间发现这篇文章的阅读量和其他文章相差甚远,特在此改正。

    展开全文
  • Java语言特点

    万次阅读 多人点赞 2019-06-30 19:37:45
    Java语言的语法与C语言和C++语言很接近,从某种意义上讲,它是由C和C++演变而来,使得大多数程序员很容易学习和使用。 对C++来说进行了简化和一定的提高,如:使用接口代替了复杂的多重继承以及取消了指针,还通过...

    Java图标

    Java语言是简单的

    1. Java语言的语法与C语言和C++语言很接近,从某种意义上讲,它是由C和C++演变而来,使得大多数程序员很容易学习和使用。
    2. 对C++来说进行了简化和一定的提高,如:使用接口代替了复杂的多重继承以及取消了指针,还通过实现垃圾自动回收机制,大大简化了程序员的资源释放管理工作。
    3. 提供了丰富的类库和API文档,以及第三方开发包工具包,还有大量的基于Java的开源项目,帮助程序设计人员参考学习,JDK就是开放的源代码之一,读者可以通过分析项目的源代码,来提高自己的编程水平。

    Java语言是面向对象的

    面向对象就是Java语言的基础,也是Java语言的重要特性。面向对象是指以对象为基本单元,包含属性和方法。对象的状态用属性表达,对象的行为用方法表达。

    面向对象技术使得应用程序的开发变得简单易用,节省代码。总之,Java语言是一个纯面向对象的程序设计语言。

    Java语言是分布式的

    1. 分布性主要包括两大方面,分别是操作分布和数据分布,其中操作分布指的是在多个不同的主机上布置相关操作,数据分布是将数据分别存放在多个网络中不同的主机上,借助的是URL(统一资源定位符)访问网络对象,访问方式和访问本地系统相似。
    2. Java语言具有一个强大的,易于使用的网络能力,这是非常适合于分布式计算程序的。
    3. Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java.net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。

    Java语言是多线程的

    多线程机制使应用程序在同一时间并行执行多项任务,Java语言提供多线程之间的同步机制,这些相应的同步机制可以很好的保证不同线程,能够正确的共享数据。多线程机制使程序具有更好的交互性和实时性。

    Java语言是高性能的

    1. Java是一种先编译后解释的语言,所以它不如全编译性语言快。但是有些情况下性能是很要紧的,为了支持这些情况,Java设计者制作了“及时”编译程序,它能在运行时把Java字节码翻译成特定CPU(中央处理器)的机器代码,也就是实现全编译了。Java字节码格式设计时考虑到这些“及时”编译程序的需要,所以生成机器代码的过程相当简单,它能产生相当好的代码。
    2. 与那些解释型的高级脚本语言相比,Java的确是高性能的。事实上,Java的运行速度随着JIT(Just-In-Time)编译器技术的发展越来越接近于C++。

    Java语言是跨平台的

    1. 所谓的跨平台性,是指软件可以不受计算机硬件和操作系统的约束而在任意计算机环境下正常运行。这是软件发展的趋势和编程人员追求的目标。之所以这样说,是因为计算机硬件的种类繁多,操作系统也各不相同,不同的用户和公司有自己不同的计算机环境偏好,而软件为了能在这些不同的环境里正常运行,就需要独立于这些平台。
    2. 在Java语言中,Java自带的虚拟机很好地实现了跨平台性。Java源代码经过编译后生成二进制的字节码是与平台无关的,Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。这就是Java的能够Write once, run anywhere(一次编译,到处运行)的原因。Java虚拟机提供了一个字节码到底层硬件平台及操作系统的屏障,使得Java语言具备跨平台性。

    Java语言是可移植的

    可移植性来源于跨平台性性,另外,Java还严格规定了各个基本数据类型的长度。Java系统本身也具有很强的可移植性,Java编译器是用Java实现的,Java的运行环境是用ANSI C实现的。

    Java语言是安全的

    在Java语言中删除了类似于C语言中的指针和内容释放等语法,有效的避免了非法操作内存,代码要经过校验之后才能够运行,所以未经允许的Java程序不可能出现损害系统平台的行为,最大的好处就是,Java可以编写防病毒和可修复的系统,Java通常被用在网络环境中,为此,Java提供了一个安全机制以防恶意代码的攻击,从而可以提高系统的安全性。

    Java语言是健壮的

    Java语言的强类型机制、异常处理、垃圾的自动收集等是Java程序健壮性的重要保证。对指针的丢弃是Java的明智选择。Java的安全检查机制使得Java更具健壮性。

    Java语言是动态的

    1. Java语言的设计目标之一是适应于动态变化的环境。Java程序需要的类能够动态地被载入到运行环境,也可以通过网络来载入所需要的类,这也有利于软件的升级。
    2. Java中的类有一个运行时刻的表示,能进行运行时刻的类型检查。
    展开全文
  • Java语言

    千次阅读 2020-01-19 12:22:35
    所以说Java就是是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承(Java里面是没有类的多继承的)、指针(Nopoint)等概念,因此Java语言具有功能强大和简单易用两个特征,所以...

                                                   Java语言

    目录

                                                       Java语言

     

    一:SUN概述:

    二:背景:

    三:Java语言的优点:

    1).简单性

    2).纯面向对象

    3).编译和解释性

    4).稳健性

    5).安全性

    6).可移植性

    7).高性能

    8).分布性

    9).类库丰富

    一:SUN概述:

    Sun 公司对Java语言的描述:“Java is simple,object-oriented,distributed,interproted,robust, secure,architecture neutral,portable,high-performance,multithreaded,and dynamic language。”

    二:背景:

    学习Java首先听到最多的应该就是面向对象了,所以说Java就是是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承(Java里面是没有类的多继承的)、指针(Nopoint)等概念,因此Java语言具有功能强大和简单易用两个特征,所以说Java的发展来自于C++,或者说Java语言就是有C++语言改进并重新设计而来的一门编程语言。

    Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程 。

    Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点 。Java可以编写桌面级应用程序、WEB应用程序、分布式系统和嵌入式系统应用程序等 。

    三:Java语言的优点:

    Java语言具有以下几个特点:

    1).简单性

    Java看起来设计得很像C++,上面就已经提到过Java的由来(Java发展史),但是为了使Java变得小巧和容易熟悉,所以设计者在设计之初就将C++中的一些特征去掉了(比如go to语句,操作符过载和多继承特征等)。因为Java变成了“一切皆对象”的理念,所以不需要指针。Java能够自动处理对象的引用和间接引用,实现自动的无用单元收集,使用户不必为存储管理问题烦恼,能更多的时间和精力花在研发上。

    2).纯面向对象

    Java是一个面向对象的语言(Everything is Object)。所以说对开发者来说,这意味着它可以直接反应现实生活中的对象(如:树,汽车,人等)。在一个面向对象的系统中,类是数据和操作数据的方法的集合。数据和方法一起描述对象的状态和行为。每一对象是其状态和行为的封装。类是按一定体系和层次安排的,使得子类可以从超类继承行为。在这个类层次体系中有一个根类,它是具有一般行为的类。Java程序是用类来组织的。

    3).编译和解释性

    Java编译程序生成字节码文件,而不是通常的机器码(即二进制)。Java字节码提供对体系结构中性的目标文件格式,代码设计成可有效地“搬运”程序到不同的平台和环境中。在一个解释性的环境中,程序开发的标准"链接"阶段大大消失了。如果说Java还有一个链接阶段,它只是把新类装进环境的过程,它是增量式的、轻量级的过程。因此,Java支持快速原型和容易试验,它将导致快速程序开发。这是一个与传统的、耗时的"编译、链接和测试"形成鲜明对比的精巧的开发过程。

    4).稳健性

    Java起初是用作编写消费类家用电子产品软件的语言(可以去看看Java的发展历程),所以它是被设计成写高可靠和稳健软件的。Java消除了一些编程错误,使得用它写软件与其他语言更加简单便捷。Java是一个强类型语言,它允许扩展编译时检查潜在类型不匹配问题的功能。Java要求显式的方法声明,而不是C语言式的隐式声明。这些严格的要求保证编译程序能捕捉调用错误,这就导致更可靠的程序。

    可靠性方面最重要的增强之一是Java的存储模型。Java不支持指针(空指针),它消除重写存储和讹误数据的可能性。类似地,Java自动的"无用单元收集"预防存储漏泄和其它有关动态存储分配和解除分配的有害错误。Java解释程序也执行许多运行时的检查,诸如验证所有数组和串访问是否在界限之内。

    异常处理是Java中使得程序更稳健的另一个特征。异常是某种类似于错误的异常条件出现的信号。使用try/catch/finally语句,开发者可以找到出错的处理代码或者觉得在代码运行时会出错的地方的进行异常处理,这就简化了出错处理和恢复的任务。

    5).安全性

    Java的存储分配模型是它防御恶意代码的主要方法之一。Java没有指针,所以开发者就不能得到隐蔽起来的内幕和伪造指针去指向存储器。更重要的是,Java编译程序不处理存储安排决策,所以程序员不能通过查看声明去猜测类的实际存储安排。编译的Java代码中的存储引用在运行时由Java解释程序决定实际存储地址。

    Java运行系统使用字节码验证过程来保证装载到网络上的代码不违背任何Java语言限制。这个安全机制部分包括类如何从网上装载。例如,装载的类是放在分开的名字空间而不是局部类,预防恶意的小应用程序用它自己的版本来代替标准Java类。

    6).可移植性

    Java使得语言声明不依赖于实现的方面。例如,Java显式说明每个基本数据类型的大小和它的运算行为。程序一次编写,各处运行。Java环境本身对新的硬件平台和操作系统是可移植的,而Java编译程序也用Java编写,而Java运行系统用ANSIC语言编写(这就是关键点),这样一来不管平台是否相同,编译环境一样即可运行Java程序。

    7).高性能

    Java是一种先编译后解释的语言,所以它不如全编译性语言快。但是有些情况下性能是很要紧的,为了支持这些情况,Java设计者制作了"及时"编译程序,它能在运行时把Java字节码翻译成特定CPU(中央处理器)的机器代码,也就是实现全编译了,Java字节码格式设计时考虑到这些"及时"编译程序的需要,所以生成机器代码的过程相当简单,它能产生相当好的代码。

    8).分布性

    Java设计成支持在网络上应用,它是分布式语言。Java既支持各种层次的网络连接,又以Socket类支持可靠的流网络连接,所以用户可以产生分布式的客户机和服务器。网络变成软件应用的分布运载工具。Java程序只要编写一次,就可到处运行。

    9).类库丰富

    Java提供了很多丰富的内置类库,通过这些类库,可以简化开发者的程序设计工作,简化操作,同时缩短了项目开发时间(时间就是金钱嘛)。

    展开全文
  • Java指针

    千次阅读 2012-02-27 13:57:14
    实际 的编程,经常有人问我关于两个对象相同,一个...尽管java不使用显示指针而且不允许编程者使用指针,可是访问对象依然以来指针。一个对象占用了从某个位置开始的一段内存空间,指针对于该对象而言只是一个保
  • java引用与指针

    千次阅读 2018-05-06 17:45:30
    没有指针java语言 java语言中使用了引用代替了指针,引用实质就是指针,但它是受控的、安全的。我们知道,一个引用,比如说person p 等于new person,实际上就是p这个引用指向了这个对象实体,所以本质上就是指针...
  • java 的空指针为空,的理解

    千次阅读 2015-11-13 10:05:59
    一、null是代表确定的对象   Java中,null是一个关键字,用来标识一个确定的对象。...Java中,变量的适用都遵循一个原则,先定义,并且初始化后,才可以使用。我们能int a后,给a指定值,就去打印a的值。这
  • 由于很多重要原因,Java 语言在实时系统的应用非常有限。这些原因包括 Java 语言设计固有的确定性性能影响,例如动态类加载,以及 Java 运行时环境(Java Runtime Environment,JRE)本身的确定性性能影响,...
  • Java语言编写计算器

    万次阅读 多人点赞 2018-03-15 15:52:51
    本文讲述Java图形用户界面的编写,重点讲述一个简单计算器的实现。文中程序的运行环境为Windows10 ,编译环境为MyEclipse 8.5。一个简单的计算器主要实现一下功能和要求:一:输入,输出 ①输入:允许输入带有括号...
  • java语言编程知识总结

    2018-01-23 09:51:35
    Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向...
  • java语言的主要特点

    千次阅读 2019-05-26 21:36:40
    Java语言是是一门面向对象编程语言,具有以下九大特点: 一.简单性: Java是纯面向对象语言,语法简单明了,易于掌握。 Java使用接口取代了多重继承,并且取消了指针,因为多重继承和指针会使程序变得复杂。 Java还...
  • JAVA语言概述

    千次阅读 2015-12-26 15:09:10
    在JAVA语言出现之前,互联网网页实质就像一张纸,没有任何动态的内容。有了JAVA语言之后,浏览器的功能被扩大了,Java可以直接浏览器里运行,可以直接与远程服务器交互。可以互联网上像传送电子邮件一样传递程序...
  • java语言程序设计A,第三讲类与对象,Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向...
  • 一:Java语言概述

    万次阅读 多人点赞 2021-02-01 21:15:16
    文章目录01、 软件开发介绍1.1、常用的DOS命令02、计算机编程语言介绍03、 Java语言概述3.1、Java简史3.2、Java技术体系平台04、 Java程序运行机制及运行过程4.1、Java两种核心机制05、Java语言的环境搭建06、 开发...
  • Java到C++——指针与引用

    千次阅读 2014-07-30 22:50:48
    Java到C++——指针与引用C++即有指针又有引用,而且很多时候具有相似的功能,常常容易让人混淆,着实让人头痛。用两句通俗的话说明两者本质的含意:引用就是一个变量或对象的别名(引用的本质是一个对象);指针是...
  • Java语言程序设计》✍基础知识整理

    万次阅读 多人点赞 2020-12-29 09:01:48
    但Java字节码能直接运行,只能Java虚拟机环境被解释执行,因此称之为解释型语言 Java程序是由虚拟机负责执行,并非是操作系统,这样做的优点是可以实现程序的跨平台运行 Java语言的特点 简单性 与C++语言...
  • Java基础-Java语言简介

    千次阅读 2017-01-11 15:34:57
    简述了JAVA语言的起源、特点和应用领域
  • 【java后端学习】java语言基础(夯实基础)

    千次阅读 多人点赞 2021-04-28 17:50:34
    Java是一门面向对象编程语言,它吸收了C++语言抽象化对象与封装继承等优点,摒弃了C++里较为难理解的多继承、指针等概念,因此Java语言不仅功能强大而且简单易用。 Java语言作为静态面向对象编程语言的代表,极好...
  • Java考试试题总结 一、单选题(每题1分 * 50 = 50分) 1.java程序的执行过程中用到...2.在Java语言中不允许使用指针体现出的Java特性是( D ) A.可移植 B.解释执行 C.健壮性 D.安全性 3. 00101010(&...
  • Java出现null指针的九种情况

    千次阅读 2017-08-19 17:32:24
    时常会受到空指针异常(NPE)的骚扰。连Java的发明者都承认这是他的一项巨大失误。Java为什么要保留null呢?null出现有一段时间了,并且我认为Java发明者知道null与它解决的问题相比带来了更多的
  • Java语言概述与开发环境

    千次阅读 2016-08-15 17:59:33
    Java的诞生,以及java语言java开发环境,java基础知识
  • Java大佬地表最强Java企业(阿里)面试总结

    万次阅读 多人点赞 2020-08-23 19:48:06
    面试题真的是博大精深,也通过这个面试题学到了很多...Hashtable 的方法是Synchronize的,而HashMap的方法缺省情况下是非Synchronize的。 HashMap把Hashtable的contains方法去掉了,改成containsValue和contains.
  • 1.2 Java语言的特性

    千次阅读 2016-04-24 11:46:44
    Java语言的作者们编写了具有广泛影响的Java白皮书,里面详细地介绍了他们的设计目标以及...Java语言的简单性主要体现以下几个方面: 语法规则和C++类似。从某种意义上讲,Java语言是由C和C++语言转变而来的,所以C
  • Java引用实现类似C++指针操作

    千次阅读 2011-11-08 10:09:58
    我一直学习C++,是java的初学者,这一周正学习java的对象、引用,转载一些自己觉得很有意义的东东,以及java同C++的区别。 Public class Person{  Public String name;  Public int age;  Public void say...
  • 语言概述 JDK的全称是Java SE Development Kit,即Java标准版开发包。它提供了编译、运行Java程序所需的各种工具和资源,包括Java编译器、Java运行时环境以及常用的Java类库等。JRE全称是Java Runtime Environment,...
  • 002_Java语言的八大特性

    千次阅读 2020-04-28 09:50:26
    文章目录一、Java语言的特性 (开源、免费、跨平台、纯面向对象)1、简单性2、面向对象3...相对而言,C++指针,java屏蔽了指针                   C++支持多继承(...
  • Java是一个拥有悠久历史的老牌编程语言众多编程语言中起着举足轻重的作用。随着互联网+政策推行的如火如荼,Java开发也是越来越火爆。无论是传统行业还是新兴产业,无论是吃饭穿衣,还是旅行游玩,或者上学和...
  • Java语言的特点

    千次阅读 2017-03-28 10:39:36
    Java语言的特点 简单性、面向对象技术、分布性、健壮性、安全性、体系结构中立、可移植性、解释执行、高性能、多线程 1、精简的系统,力图用最小的系统实现足够多功能。无需强大的硬件环境,小型的机器上便可以...
  • Java简介

    万次阅读 多人点赞 2019-06-30 19:33:56
    Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 85,943
精华内容 34,377
关键字:

在java语言中不允许使用指针

java 订阅