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 的 堆 和 栈。 参数传递(基本类型和普通对象的区别)的更多相关文章

  1. Java中堆和栈的区别(转)

    栈与堆都是Java用来在Ram中存放数据的地方.与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆.      Java的堆是一个运行时数据区,类的对象从中分配空间.这些对象通过new. ...

  2. java之堆和栈的比较

    当我们第一次接触堆和栈时很多人都不不明白java中为什么要设置这两个概念,他们都有什么作用?堆和栈有什么区别,各自都有什么特点?还有Java中存在栈这样一个后进先出(Last In First Out ...

  3. Java中的基本类型和引用类型变量的区别

    Java中的基本类型和引用类型变量的区别   学了一年多,说实话你要我说这些东西我是真说不出来是啥意思     基本类型: 基本类型自然不用说了,它的值就是一个数字,一个字符或一个布尔值. 引用类型: ...

  4. Java:抽象类abstract和接口Interface

    一.抽象类:abstract 抽象类就是为了继承而存在的,如果你定义了一个抽象类,却不去继承它,那么等于白白创建了这个抽象类,因为你不能用它来做任何事情.对于一个父类,如果它的某个方法在父类中实现出来 ...

  5. C++虚函数virtual,纯虚函数pure virtual和Java抽象函数abstract,接口interface与抽象类abstract class的比较

    由于C++和Java都是面向对象的编程语言,它们的多态性就分别靠虚函数和抽象函数来实现. C++的虚函数可以在子类中重写,调用是根据实际的对象来判别的,而不是通过指针类型(普通函数的调用是根据当前指针 ...

  6. Java虚拟机堆和栈详细解析,以后面试再也不怕问jvm了!

    堆 Java堆是和Java应用程序关系最密切的内存空间,几乎所有的对象都放在其中,并且Java堆完全是自动化管理,通过垃圾收集机制,垃圾对象会自动清理,不需自己去释放. 根据垃圾回收机制的不同,Jav ...

  7. JAVA中用堆和栈的概念来理解equals() "=="和hashcode()

    在学习java基本数据类型和复杂数据类型的时候,特别是equals()"=="和hashcode()部分时,不是很懂,也停留了很长时间,最后终于有点眉目了. 要理解equals() ...

  8. Java中堆与栈

    简单的说:Java把内存划分成两种:一种是栈内存,一种是堆内存. 1:什么是堆内存: 堆内存是是Java内存中的一种,它的作用是用于存储Java中的对象和数组,当我们new一个对象或者创建一个数组的时 ...

  9. java中堆与栈的区别

    堆与栈都是java中常用的存储结构,是内存中存放数据的地方. 堆:主要存放运行时创建(new)的对象.主要用于储存对象,存取速度慢,可以运行时动态分配内存,生命周期不需要提前确定. 栈:主要存放基础类 ...

随机推荐

  1. tornado-简单的服务器

    安装tornado pip install tornado 安装sqlalchemy 1.大概代码的解释 import tornado.ioloop #开启循环,等待访问 import tornado ...

  2. C_point指针

    1,关于C语言中变量的访问方式,直接访问[使用变量名直接引用,操作变量进行赋值,改变变量值等操作],间接访问--指针,一种指向变量飞, 程序对变如量的读写操作,实际是对变量所在的存储空间进行写入和取出 ...

  3. HTML5 借助http请求发送formdata对象,从而上传文件 XMLHttpRequest, FormData

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  4. Sqlserver查询数据库文件大小和剩余空间

    在MS Sql Server中可以能过以下的方法查询出磁盘空间的使用情况及各数据库数据文件及日志文件的大小及使用利用率: 1.查询各个磁盘分区的剩余空间:Exec master.dbo.xp_fixe ...

  5. RabbitMQ-从基础到实战(4)— 消息的交换(中)

    转自:https://www.cnblogs.com/4----/p/6590459.html 1.简介 本章节和官方教程相似度较高,英文好的可以移步官方教程 在上一章的例子中,我们创建了一个消费者, ...

  6. Mybatis like模糊查询的写法

    转自:http://blog.51cto.com/lavasoft/1386870 Mybatis like查询官方文档没有明确的例子可循,网上搜索了很多,都不正确. Mybatis 3.2.6经过尝 ...

  7. 机器学习入门-贝叶斯统计语料库的词频.groupby() collections

    1..groupby()[].agg(by={}) 2. collections.de...(lambda:1) 统计的单词是语料库中所有的词, 对Dataframe统计单词词频,同时增加一列数据co ...

  8. wildFly(Jboss as)入门

    目录 简介 安装 使用 简介 JBoss AS 从8版本起名为wildfly.JBoss是纯Java的EJB(企业JavaBean)服务器. JBoss As 由 Redhat出品的开源免费服务器,采 ...

  9. 8 python 抽象类

    1.抽象类 --类似接口 接口的概念: 自己提供给使用者来调用自己功能的方式\方法\入口, 1.1.java中接口  interface =================第一部分:Java 语言中的 ...

  10. IExpress 制作安装包 注意事项

    被打包的文件名不能超过8个字符,否则iexpress会取前6个字符 + "~1".