Java编程设计

方法调用栈

JVM内存模型有五大块:栈、堆、方法区、本地方法栈、程序计数器(PC寄存器)

我们执行的方法都是存放在栈里面的,栈是先进后出的队列结构,所以当前执行的方法永远存在于栈的顶部,main方法肯定在最底部

每一个方法被执行完后都会被移除,然后返回上一个执行方法,当一个方法执行时会有三种情况:

  1. 方法返回一个值,基本数据类型或引用类型会被传回给方法调用者
  2. 方法不返回一个值,声明为void
  3. 抛出异常给方法调用者

方法签名

public static void main(String[] args)

public:访问修饰符,Java里面有四种访问修饰符

  • public(公共访问)可以在同包、不同包、同类以及子类中引用
  • protected(受保护的访问)可以在同包、同类以及子类中引用
  • 默认(不写修饰符)可以在同类以及同包中引用
  • private(私有)只能在同类中引用

static:可选修饰符,包括final、abstract和native,类的方法可以不使用这些修饰符也可以使用多个可选修饰符。访问修饰符和可选修饰符的编写顺序是可以调换的

void:返回值。签名必须有返回值的类型,要么是对象的引用,要么返回类型是基本数据类型;如果不返回则写void

main:方法名,遵循小驼峰

(String[] args)形参列表:每个方法后面必须有带括号的形参列表,调用方法时可以通过该方法的调用者传进来

形式参数和实际参数

一个方法的签名必须包括形参列表,而传给形参的数据就是实际参数,方法被调用时实际参数必须传递给形参列表中的每一个形参

按值调用

实际参数将数据复制给形参的调用方式即为按值调用,因为他们之间仅仅是数据之间的复制使用而已。如果我们要向在方法中改变实际参数的内容是不可能的,按值调用在方法中改变形参的值并不会改变实际参数。

切记:当我传递给方法的是一个很大的对象时,我们不是传入对象,而是传入对象的引入,这个引用在大多数情况下是32位,是引用被复制,不是大量数据被复制。

方法重载

方法重载是同一个类中相同的方法名有不同的形参列表的方法

public class Test( ){

    public  int add (int a,int b){

    return a+b;

       }  

    public double add(double a,double b){

    return a+b;

      }

    }


在类Test中,方法add出现两次,但是其形参列表不一样;这就是方法重载,该操作简化了方法的编写和使用。

仅与形参个数、形参顺序以及形参类型有关

区别于重写,重载的方法行为不会改变,只是改变形参。特别说明,因为Java是单继承的语言,方法的重载也是为了解决继承过程中流失的复杂性。

构造器

即构造方法,通过new关键字调用,用来产生对象

没有任何返回类型,也没有void,且方法名必须和类名一致

如果我们没有写出构造方法,编译器会自动在源代码编译时产生,反之不会产生任何隐式构造器。

  构造器产生对象步骤:

  1. new产生对象时,JVM会在堆里面自动申请内存空间存放对象的值数据(属性)。对象多大内存多大
  2. 申请内存空间(8字节的倍数,object为空时自动占了八个字节内存)中,给具体属性()属性分配存储空间
  3. 给分配好的属性初始化赋值(基础数据为0,引用为null)
  4. 执行构造器的其他代码

构造器分为有参构造(重载构造)和无参构造,无参构造器时隐式构造器;有参构造器需要给参数,它在吵闹声对象的同时完成给属性的赋值

构造器中this的用法:

    public Test(){

    system.out.println("在无参构造中");

    }

    public Test(int a){

    this();

    system.out.println("在有一个参数的有参构造中");

    }

    public Test(int a,int b){

    this(a );

    system.out.println("在有两个参数的有参构造中");

    }

这里的this( )作用是调用其他的构造器,用于封装重写代码,this(  )的使用必须在首行,否则编译不会通过

特别注意:构造器时通过new关键字产生对象的,所以调用构造器方法的时候必须有new关键字的参与,否则就不会产生对象,仅仅是调用该方法而已

原文地址:https://www.cnblogs.com/lloney0/p/10981268.html

时间: 2024-08-30 02:27:42

Java编程设计的相关文章

Java编程设计---继承

继承的定义 根据已有的类的属性行为衍生出一个新的类,新类拥有本类的所有属性和行为,新类称是继承了本类 新建的类为子类或衍生类,原来的类为父类或是基类 意义:Java的继承是为了避免了编码的重复编写而可以直接使用 使用继承的优点: 代码更简单 重复使用率更高 不需要修改源代码 便于维护 类和类之间的关系有继承.拥有和依赖三种关系,理解分别是is ,has,use 根据多个类所有的属性和行为,将相同属性或行为写在一个类(父类)中,互相不同的属性方法写在子类中,最后用extends完成继承关系 注意:

Java编程设计---数组Arrays

数组的的定义 数组是存放在连续存储空间的元素集合 数组定义的格式: int[] arr=new int[5]; int:数组元素的数据类型,可以是基本数据类型,也可以是引用 arr:数组名称 5:数组中元素个数 第一步:定义数组类型和数组名称   int [ ]  arr; 第二步:在堆中产生数组,并定义数据大小   arr=new int [10 ] 第三步:使用数组并赋予元素值    arr [0] =33; 或者直接列举法给数组赋值:int arr={12,5, 3, 56, 78} 注意

Java 编程的动态性,第 7 部分: 用 BCEL 设计字节码--转载

在本系列的最后三篇文章中,我展示了如何用 Javassist 框架操作类.这次我将用一种很不同的方法操纵字节码——使用 Apache Byte Code Engineering Library (BCEL).与 Javassist 所支持的源代码接口不同,BCEL 在实际的 JVM 指令层次上进行操作.在希望对程序执行的每一步进行控制时,底层方法使 BCEL 很有用,但是当两者都可以胜任时,它也使 BCEL 的使用比 Javassist 要复杂得多. 我将首先讨论 BCEL 基本体系结构,然后本

39.JAVA编程思想之外篇——JAVA图形化设计精简大全一文覆盖

39.JAVA编程思想之外篇--JAVA图形化设计精简大全一文覆盖 欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/51204948 目录 Java图形化界面设计--容器(JFrame)...1 Java基本类(JFC)...1 l     AWTAbstract Window Toolkit(AWT)抽象窗口工具包... 2 l     Swing包... 2 l     AWT和Swing的区别... 6 Swing基本框

78.JAVA编程思想——改进设计

78.JAVA编程思想--改进设计 <Design Patterns>书内所有方案的组织都围绕"程序进化时会发生什么变化"这个问题展开.对于任何设计来说,这都可能是最重要的一个问题.若根据对这个问题的回答来构造自己的系统,就可以得到两个方面的结果:系统不仅更易维护(而且更廉价),而且能产生一些能够重复使用的对象,进而使其他相关系统的构造也变得更廉价.这正是面向对象程序设计的优势所在,但这一优势并不是自动体现出来的.它要求对我们对需要解决的问题有全面而且深入的理解.在这一节中

75.JAVA编程思想——设计范式

75.JAVA编程思想--设计范式 向大家介绍重要但却并不是那么传统的"范式"(Pattern)程序设计方法. 在向面向对象程序设计的演化过程中,或许最重要的一步就是"设计范式"(Design Pattern)的问世.它在由Gamma,Helm 和Johnson 编著的<DesignPatterns>一书中被定义成一个"里程碑"(该书由Addison-Wesley 于1995 年出版).那本书列出了解决这个问题的23 种不同的方法.我

Atitit JAVA&#160;p2p设计与总结 &#160;JXTA 2

Atitit JAVA p2p设计与总结  JXTA 2 JXTA 2 是开放源代码 P2P 网络的第二个主要版本,它利用流行的.基于 Java 的参考实现作为构建基础.在设计方面进行了重要的修改,以获得更高的性能.海量伸缩性和可维护的 P2P 网络.本文建立在 Sing Li 于两年前发表的 JXTA 系列文章 Makng P2P interoperable的基础上,为您介绍了这个平台上最新的重要改变 JXTA具体来说是一种标准组件平台,它提供了用于开发分布式服务和应用程序的基本组件.整套技术

Java编程中“为了性能”尽量要做到的一些地方

下面是参考网络资源总结的一些在Java编程中尽可能要做到的一些地方. 1. 尽量在合适的场合使用单例 使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面: 第一,控制资源的使用,通过线程同步来控制资源的并发访问: 第二,控制实例的产生,以达到节约资源的目的: 第三,控制数据共享,在不建立直接关联的条件下,让多个不相关的进程或线程之间实现通信. 2. 尽量避免随意使用静态变量 要知道,当某个对象被定义为stataic变量所

Java编程最差实践常见问题详细说明(2)转

Java编程最差实践常见问题详细说明(2)转 2012-12-13 13:57:20|  分类: JAVA |  标签:java  |举报|字号 订阅 反射使用不当  错误的写法: Java代码   Class beanClass = ... if (beanClass.newInstance() instanceof TestBean) ... 这里的本意是检查beanClass是否是TestBean或是其子类, 但是创建一个类实例可能没那么简单, 首先实例化一个对象会带来一定的消耗, 另外有