Java编程设计

Posted lloney0

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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关键字的参与,否则就不会产生对象,仅仅是调用该方法而已

 

以上是关于Java编程设计的主要内容,如果未能解决你的问题,请参考以下文章

Java 设计模式 Day3 之面向抽象原则:什么是面向抽象编程?面向抽象编程如何应用?

通过《Java核心编程》探索程序设计

求计算机网络课程设计,采用VC、VB、java或C等编程语言编程实现。题目如下:任选一个

JAVA OOP 编程-常用设计模式

Day805.使用设计模式优化并发编程 -Java 性能调优实战

Java类与对象