java int 指针_如何在Java中使用指针?
小编典典
Java中的所有对象都是引用,你可以像使用指针一样使用它们。
abstract class Animal
{...
}
class Lion extends Animal
{...
}
class Tiger extends Animal
{
public Tiger() {...}
public void growl(){...}
}
Tiger first = null;
Tiger second = new Tiger();
Tiger third;
取消引用null:
first.growl(); // ERROR, first is null.
third.growl(); // ERROR, third has not been initialized.
混叠问题:
third = new Tiger();
first = third;
丢失的细胞:
second = third; // Possible ERROR. The old value of second is lost.
你可以通过首先确保不再需要第二个旧值或为另一个指针分配第二个值来确保此安全。
first = second;
second = third; //OK
请注意,以其他方式给second赋值(NULL,new …)同样可能引起错误,并可能导致丢失其指向的对象。
OutOfMemoryError当你调用new且分配器无法分配所请求的单元格时,Java系统将引发异常()。这是非常罕见的,通常是由于失控的递归导致的。
请注意,从语言的角度来看,将对象放弃到垃圾回收器根本不是错误。这只是程序员需要注意的事情。相同的变量可以在不同的时间指向不同的对象,并且当没有指针引用它们时,旧值将被回收。但是,如果程序的逻辑要求维护对对象的至少一个引用,则将导致错误。
新手经常会犯以下错误。
Tiger tony = new Tiger();
tony = third; // Error, the new object allocated above is reclaimed.
你可能要说的是:
Tiger tony = null;
tony = third; // OK.
铸造不当:
Lion leo = new Lion();
Tiger tony = (Tiger)leo; // Always illegal and caught by compiler.
Animal whatever = new Lion(); // Legal.
Tiger tony = (Tiger)whatever; // Illegal, just as in previous example.
Lion leo = (Lion)whatever; // Legal, object whatever really is a Lion.
C中的指针:
void main() {
int* x; // Allocate the pointers x and y
int* y; // (but not the pointees)
x = malloc(sizeof(int)); // Allocate an int pointee,
// and set x to point to it
*x = 42; // Dereference x to store 42 in its pointee
*y = 13; // CRASH -- y does not have a pointee yet
y = x; // Pointer assignment sets y to point to x's pointee
*y = 13; // Dereference y to store 13 in its (shared) pointee
}
Java中的指针:
class IntObj {
public int value;
}
public class Binky() {
public static void main(String[] args) {
IntObj x; // Allocate the pointers x and y
IntObj y; // (but not the IntObj pointees)
x = new IntObj(); // Allocate an IntObj pointee
// and set x to point to it
x.value = 42; // Dereference x to store 42 in its pointee
y.value = 13; // CRASH -- y does not have a pointee yet
y = x; // Pointer assignment sets y to point to x's pointee
y.value = 13; // Deference y to store 13 in its (shared) pointee
}
}
2020-03-15
java int 指针_如何在Java中使用指针?相关推荐
- java 正则表达式 开头_如何在Java中修复表达式的非法开头
java 正则表达式 开头 您是否遇到过这个令人难以置信的错误,想知道如何解决它? 让我们仔细阅读一下,研究如何解决表达式Java非法开头错误. 这是一个动态错误,这意味着编译器会发现某些不符合Jav ...
- java实现递归算法_如何在Java中实现二进制搜索算法而无需递归
java实现递归算法 by javinpaul 由javinpaul 流行的二进制搜索算法的迭代实现,用于在排序数组中查找元素. (An Iterative implementation of the ...
- java 全局数组_如何在Java中声明全局数组?
我有一个程序在Java中乘以两个矩阵.我在全局错误声明中发现了一些错误. 这里是我的代码如何在Java中声明全局数组? import java.util.Scanner; /**WAP in Java ...
- java soap 头_如何在Java中添加Soap标头
我有一个来自oracle的NO.net Web服务,要访问,我需要添加soap标头.如何在Java中添加soap标头? Authenticator.setDefault(new ProxyAuthen ...
- java安卓计时器_如何在android中设置计时器
通过java.util.Timer和java.util.TimerTask使用计时器的标准Java方法在Android中运行良好,但是你应该知道这个方法创建了一个新线程. 您可以考虑使用非常方便的Ha ...
- java jcombobox长度_如何在JToolBar中设定JComboBox的大小?
如何在JToolBar中设定JComboBox的大小? 我设计了一个JToolBar,并且在上边添加了一个JComboBox,可是我发现这个JComboBox长度无法控制,它将JToolBar上剩余空 ...
- java jsonnode 创建_如何在Java中访问JsonNode的JSON字段,数组和嵌套对象?
一个JsonNode是杰克逊的树模型为JSON,它可以读取JSON成JsonNode实例,写一个JsonNode出来JSON.通过创建ObjectMapper实例并调用readValue()方法,使用 ...
- java插入图片_如何在java窗体程序中添加图片
打开eclipse,创建一个java工程项目,创建完后在src下新建一个类Window,由于要插入图片,所以还在工程目录下创建一个文件夹imgs,里面放了一张60*60的图片,创建后的工程目录和图片, ...
- java cpu监控_如何在Java中监视计算机的CPU,内存和磁盘使用情况?
问题 我想用Java监视以下系统信息: 当前CPU使用率**(百分比) 可用内存*(免费/总计) 可用磁盘空间(空闲/总计)*请注意,我的意思是整个系统可用的总内存,而不仅仅是JVM. 我正在寻找一种 ...
最新文章
- Tomcat容器做到自我保护,设置最大连接数(服务限流:tomcat请求数限制)
- 使用ifstream从文件中读取内容
- [scala-spark]12. RDD行动操作
- 天天象棋 残局闯关 第19关
- c语言一维数组课件,第9章:c语言一维数组课件
- 第一 二章 计算机基础知识,[精品]第二章-计算机基础知识.doc
- 2021年中国宠物食品加工设备市场趋势报告、技术动态创新及2027年市场预测
- python基础学习-字符串
- mac连接windows远程桌面不能复制粘贴解决办法
- Qt配置使用VS2010进行开发
- mysql 连接数和内存的关系_php-fpm进程数和mysql连接数之间的关系
- 视频教程- Docker入门与进阶实战(上)-Docker/K8S
- 生活是苦难的,我又划着我的断桨出发了
- 基于深度学习的13种通用图像分类模型及其实现
- 【Web_UI自动化_Python3_大众点评霸王餐_Seleniumpprint】(美团)大众点评霸王餐免费抽取,网址爬虫+自动报名,自动化测试案例
- 国际贸易的价格表示方法贸易术语
- 设计模式-装饰器模式 C++
- 【php图片上传在网页显示】
- 记一次数据结构与算法作业:利用循环和递归输出1-N的正整数的程序分析比较
- 刷脸支付是顺应时代和科技发展趋势的创新