Java编程设计
Posted lloney0
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java编程设计相关的知识,希望对你有一定的参考价值。
方法调用栈
JVM内存模型有五大块:栈、堆、方法区、本地方法栈、程序计数器(PC寄存器)
我们执行的方法都是存放在栈里面的,栈是先进后出的队列结构,所以当前执行的方法永远存在于栈的顶部,main方法肯定在最底部
每一个方法被执行完后都会被移除,然后返回上一个执行方法,当一个方法执行时会有三种情况:
- 方法返回一个值,基本数据类型或引用类型会被传回给方法调用者
- 方法不返回一个值,声明为void
- 抛出异常给方法调用者
方法签名
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,且方法名必须和类名一致
如果我们没有写出构造方法,编译器会自动在源代码编译时产生,反之不会产生任何隐式构造器。
构造器产生对象步骤:
- new产生对象时,JVM会在堆里面自动申请内存空间存放对象的值数据(属性)。对象多大内存多大
- 申请内存空间(8字节的倍数,object为空时自动占了八个字节内存)中,给具体属性()属性分配存储空间
- 给分配好的属性初始化赋值(基础数据为0,引用为null)
- 执行构造器的其他代码
构造器分为有参构造(重载构造)和无参构造,无参构造器时隐式构造器;有参构造器需要给参数,它在吵闹声对象的同时完成给属性的赋值
构造器中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 之面向抽象原则:什么是面向抽象编程?面向抽象编程如何应用?
求计算机网络课程设计,采用VC、VB、java或C等编程语言编程实现。题目如下:任选一个