2018/10/21动手动脑及类的创建

关于类的调用次数,大体使用静态变量来实现。

代码:

package yds;

import java.util.Scanner;

class Number{
static int sum;
public Number(){
sum++;
}
int Sum(){
return sum;
}
}
public class duixiangsum {
public static void main(String[] args){
Scanner scan=new Scanner(System.in);
Number n1=new Number();
Number n2=new Number();
Number n3=new Number();
System.out.println("你已经创建了"+Number.sum+"个对象");
System.out.println("是否继续创建(是,请输入yes,否则输入no)\n");
String flag;
flag=scan.next();
duixiangsum dt=new duixiangsum();
dt.Count(flag);
}
public void Count(String flag){
Scanner scan=new Scanner(System.in);
duixiangsum dt=new duixiangsum();
if(flag.equals("yes")){
Number a=new Number();
System.out.println("你已经创建了"+Number.sum+"个对象");
System.out.println("是否继续创建(是,请输入yes,否则输入no)\n");
flag=scan.next();
dt.Count(flag);
}else{
if(flag.equals("no")){
System.out.println("创建结束");
System.out.println("共创建了"+Number.sum+"个对象");}
}
}
}

附,结果截图

通过这个实例,我简单的了解了静态初始化块的执行顺序的一些基本方法。

    1、静态初始化块只执行一次。

    2、 创建子类型的对象时,也会导致父类型的静态初始化块的执行。

    3、静态方法中只允许访问静态数据。

    4、静态初始化块不需要在main方法中调用,即使没有main方法它也会执行。

    5、如果对类没有进行实例化,初始化块不会执行,但是静态初始化块会执行。

关于动手动脑,有以下几点的总结:

一、

原文地址:https://www.cnblogs.com/yandashan666/p/9826011.html

时间: 2024-12-19 10:39:30

2018/10/21动手动脑及类的创建的相关文章

动手动脑(类与对象作业再次提交)

Java字段初始化的规律: 1有实际参数值的,按实际参数值进行初始化例如obj=new Init(300); System.out.println(obj.field); 2没有给出实际参数值时,找默认的构造函数例如Init obj=new Init(); System.out.println(obj.field); 2当多个类之间有继承关系时,创建子类对象导致父类初始化快的执行的程序: package com; class Father { static { System.out.printl

动手动脑-大数类

前面几讲介绍过JDK所提供的BigInteger能完成大数计算,如果不用它,直接使用数组表达大数,你能实现相同的功能吗? 要求: (1)用你的大数类实现加和减两个功能 (2)阅读BigInteger类源码,弄清楚它是使用什么算法实现加减乘除四种运算的? (3)通过互联网查找大数运算的相关资料,给你的大数类添加乘.除.求阶乘等其它功能. public class Factorial{ private static final int MAX = 1000000000; public static

2016.10.15动手动脑

观察下列代码的特殊之处. public class MethodOverload { public static void main(String[] args) { System.out.println("The square of integer 7 is " + square(7)); System.out.println("\nThe square of double 7.5 is " + square(7.5)); } public static int

Java课堂动手动脑-截图集锦

课堂实践性问题 没有数据类型,名称与类名相同,没有返回值 类本身有自定义的构造方法,调用时应有参数,这时系统不再使用默认构造方法 类字段初始化顺序 1.执行类成员定义时指定的默认值或累的初始化块,执行哪一个看哪一个排在前面. 2.执行类的构造函数 动手动脑问题(类之间继承,创建子类对象导致父类初始化块的执行) 静态初始化执行顺序 1.静态初始化块只执行一次 2.创建子类的对象时,父类的初始化块也会执行 静态方法访问实例成员变量如下:

动手动脑,无法自拔(2)

1.动手动脑 如果类提供了一个自定义的构造方法,将导致系统不再提供默认构造方法.而foo类中有一个public foo(int initValue)类,导致系统不能引用默认的构造函数. 2.动手动脑 实例:TextStaticInitialalizeBlock.java: class Root { static{ System.out.println("Root的静态初始化块"); } { System.out.println("Root的普通初始化块"); } p

第七周动手动脑(2018.10.29-11.4)

动手动脑1: 运行 TestInherits.java 示例,观察输出,注意总结父类与子类之间构造方法的调用关系修改Parent构造方法的代码,显式调用GrandParent的另一个构造函数,注意这句调用代码是否是第一句,影响重大! 运行截图: 结论:通过 super 调用基类构造方法,必须是子类构造方法中的第一个语句. 动手动脑2: 请自行编写代码测试以下特性: 在子类中,若要调用父类中被覆盖的方法,可以使用super关键字. package ceshi; class Animal { pub

java的动手动脑10月20日

(1)动手动脑 该函数没有赋初值再就是如果类提供一个自定义的构造方法,将导致系统不在提供默认的构造方法. (2) public class test { /*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubInitializeBlockClass obj=new InitializeBlockClass();System.out.println(obj.field)

Java类和对象动手动脑

动手动脑1 以下代码为何无法通过编译?哪儿出错了? 如果类提供了一个自定义的构造方法,将导致系统不再提供默认构造方法. 动手动脑2 进行试验 使用上页幻灯片中定义的类,以下代码输出结果是什么? public class Test { public static void main(String[] args) { InitializeBlockClass obj=new InitializeBlockClass(); System.out.println(obj.field);//? obj=n

类和对象动手动脑

// 信1705-3 20173574 李胜明 1. 早期经常这样定义变量 int value=100; 前面的示例中这样定义变量 MyClass obj = new MyClass(); 这两种方式定义的变量是一样的吗? 答:这两种方式定义的变量是不一样的,第一种是原始数据类型定义的变量,而第二种是通过引用类名创建一个对象obj出来,obj称为对象变量. 2. 请输入并运行以下代码,得到什么结果?? 代码截图: 3. 以下代码为何无法通过编译?哪儿出错了? package 动手动脑; publ