抽象 abstract 和 接口 interface。 java 的 堆 和 栈。 参数传递(基本类型和普通对象的区别)
package com.test; import com.test.Pro;
//protected 修饰的成员只能在本包中和 继承该类的方法中使用
public abstract class Testpro {
public void aa(){
Pro p=new Pro();
p.getProtex();
} //抽象方法不需要 方法体,但是 如果一个类中有abstract方法是,该类也必须是抽象的。
//抽象类中 可以有非抽象方法
//抽象类可以被继承,但是必须重写抽象类中的抽象方法,否则该类仍然是抽象类。
// 抽象类中可以 有成员变量,接口中也可以有成员变量,但是必须给与初值, //接口与抽象类: 如果许多类实现了一个接口,但是 这些类 又有一些重复的部分,这时可以考虑将这些重复放到抽象类中,
//其他仍然作为 抽象方法,如本例中的 happFood() (重复部分),eat()(其他部分) 。抽象类是为了简化接口的实现
private String aa; public abstract void eat(); public void haapyFood(){
System.out.println("happy food");
}
}
java 堆和栈
Pro p=new Pro(); // pro 普通java 类 1.new 是在内存中为对象开辟空间,即在内存的堆(heap)上为对象开辟空间。
p 是 一个Pro 对象,是对象引用 ,p 并不是对象本身,而是相当于一个指针,指向该对象。而p 存在与
内存的栈(stack) 上
2.栈的读取速度比堆 快,但是 栈上存储的数据 受到有效范围的限制 , 方法调用等 完成后 相应的栈数据就会被清空。
3.java中所用的普通对象都储存在 堆 中 ,但是基本类型(primitive type)的对象,比如int, double,保存在栈上,我们声明基本类型时,不需要new。一旦声明,Java将在栈上直接存储基本类型的数据。所以,基本类型的变量名表示的是数据本身,不是引用。 所以在方法调用结束后,栈中引用 和 基本类型 会被清空, 但是堆中的对象仍然存在,所以对象所占据的内存不会随着方法调用的结束而清空。进程空间可能很快被不断创建的对象占满,,Java内建有垃圾回收(garbage collection)机制,用于清空不再使用的对象,以回收内存空间。
4.垃圾回收的基本原则:当存在引用指向某个对象的时候 ,该对象不会被回收。当没有引用指向该对象时,该对象被清空,空间被回收。。
方法的 参数传递:
java的参数传递为 值传递, 即当我们传递一个参数时,方法将获得该参数的一个拷贝。
实际上,我们传递的参数,一个是基本类型的变量,另一个为对象的引用。
基本类型变量的值传递 ,意味着变量本身被复制, 并传递给java 方法,java方法对变量的修改不会影响到原变量。
引用的值传递,意味着对象的地址被复制,那么java方法对该应用的访问将会影响对象,但是 不会 影响原有的那个栈引用。这些栈会在方法结束时清空。
抽象 abstract 和 接口 interface。 java 的 堆 和 栈。 参数传递(基本类型和普通对象的区别)的更多相关文章
- Java中堆和栈的区别(转)
栈与堆都是Java用来在Ram中存放数据的地方.与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆. Java的堆是一个运行时数据区,类的对象从中分配空间.这些对象通过new. ...
- java之堆和栈的比较
当我们第一次接触堆和栈时很多人都不不明白java中为什么要设置这两个概念,他们都有什么作用?堆和栈有什么区别,各自都有什么特点?还有Java中存在栈这样一个后进先出(Last In First Out ...
- Java中的基本类型和引用类型变量的区别
Java中的基本类型和引用类型变量的区别 学了一年多,说实话你要我说这些东西我是真说不出来是啥意思 基本类型: 基本类型自然不用说了,它的值就是一个数字,一个字符或一个布尔值. 引用类型: ...
- Java:抽象类abstract和接口Interface
一.抽象类:abstract 抽象类就是为了继承而存在的,如果你定义了一个抽象类,却不去继承它,那么等于白白创建了这个抽象类,因为你不能用它来做任何事情.对于一个父类,如果它的某个方法在父类中实现出来 ...
- C++虚函数virtual,纯虚函数pure virtual和Java抽象函数abstract,接口interface与抽象类abstract class的比较
由于C++和Java都是面向对象的编程语言,它们的多态性就分别靠虚函数和抽象函数来实现. C++的虚函数可以在子类中重写,调用是根据实际的对象来判别的,而不是通过指针类型(普通函数的调用是根据当前指针 ...
- Java虚拟机堆和栈详细解析,以后面试再也不怕问jvm了!
堆 Java堆是和Java应用程序关系最密切的内存空间,几乎所有的对象都放在其中,并且Java堆完全是自动化管理,通过垃圾收集机制,垃圾对象会自动清理,不需自己去释放. 根据垃圾回收机制的不同,Jav ...
- JAVA中用堆和栈的概念来理解equals() "=="和hashcode()
在学习java基本数据类型和复杂数据类型的时候,特别是equals()"=="和hashcode()部分时,不是很懂,也停留了很长时间,最后终于有点眉目了. 要理解equals() ...
- Java中堆与栈
简单的说:Java把内存划分成两种:一种是栈内存,一种是堆内存. 1:什么是堆内存: 堆内存是是Java内存中的一种,它的作用是用于存储Java中的对象和数组,当我们new一个对象或者创建一个数组的时 ...
- java中堆与栈的区别
堆与栈都是java中常用的存储结构,是内存中存放数据的地方. 堆:主要存放运行时创建(new)的对象.主要用于储存对象,存取速度慢,可以运行时动态分配内存,生命周期不需要提前确定. 栈:主要存放基础类 ...
随机推荐
- UVA-755-排序
奇怪,我怎么还有一个排序题目没过 题意如下: 公司喜欢有难忘的电话号码,一个让电话号码变得难忘的方式是有一个拼读起来难忘的单词,比如,你可以呼叫University of Waterloo通过拨打难忘 ...
- MVC,MVP 和 MVVM 模式如何选择?
转摘:http://www.linuxidc.com/Linux/2015-10/124622.htm 前言 做客户端开发.前端开发对MVC.MVP.MVVM这些名词不了解也应该大致听过,都是为了解决 ...
- Amazon AWS S3 操作手册
Install the SDK The recommended way to use the AWS SDK for Java in your project is to consume it fro ...
- 【独家】完美解决appium安装app时,需要手动确认安装的问题
appium初始化driver时,如果未安装该app会先进行安装,安装时,很多安卓手机都会弹框,需要手动确认安装. 如小米的机器, 这是个头疼的问题,之前在网上找遍了,只有通过adb去点相对坐标成功了 ...
- java求两个数百分比,精确到指定位数
// 获取百分比,不带小数点 private String getPercentage(String num, String total){ NumberFormat numberFormat = N ...
- Activity服务类-3 FormService服务类
1.获取//通过流程定义ID获取表单字段集合StartFormData startFormData = formService.getStartFormData(processDefinitionId ...
- python模块说明
1.模块(变量,函数,类,实现一个功能) 包:用来从逻辑上组织模块,本质是一个目录(必须带有__init__.py) 2.导入方法 import module_alex from module_ale ...
- 生产者和消费者模式--java设计模式
生产者和消费者: 就犹如在快餐店点餐一样,有多个打饭的,有不定时的人来买饭,买饭的人从快餐店自动取餐,如果快餐的库存数量达到下限值时,自动启动打饭的,补充盒饭. 通过while循环的方式,传入变量is ...
- Nginx 错误汇总
1. Upstream timed out (110: Connection timed out) while reading response header from upstream 这种情况主要 ...
- unity 返回子对象组件
Component[] GetComponentsInChildren(Type t, bool includeInactive = false); //includeInactive: 是否查找非激 ...