java基础新学知识点

99 阅读3分钟

java格式化输出

package javabase;

public class FormatOutput {
	public static void main(String[] args) {
		for(int i=1;i<=9;i++)
        {
            for(int j=1;j<=i;j++)
            {
                System.out.printf("%d*%d=%-2d ",j,i,j*i);
            }
            System.out.println();
        }
	}
}
代码输出如下
1*1=1  
1*2=2  2*2=4  
1*3=3  2*3=6  3*3=9  
1*4=4  2*4=8  3*4=12 4*4=16 
1*5=5  2*5=10 3*5=15 4*5=20 5*5=25 
1*6=6  2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 
1*7=7  2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 
1*8=8  2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 
1*9=9  2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81

这里这里的-2d表示输*出的数字左对齐,并且占用两个字符的宽度(如果不够两位,会在前面用空格补齐),主要是为了使每个输出的三元组(i,j,i*j)的宽度相同,使输出的表格整齐。在这里,"占用两个字符的宽度"指的是输出的数字所占用的字符数量,不超过两个字符的宽度。在Java中,一个整数一般占用一个字节(8位)或四个字节(32位),但是在输出时我们可以通过控制格式,使其只占用指定数量的字符,从而达到对齐的效果。 输出数字右对齐的代码:

public class FormatOutput {
	public static void main(String[] args) {
		for(int i=1;i<=9;i++)
        {
            for(int j=1;j<=i;j++)
            {
                System.out.printf("%d*%d=%2d ",j,i,j*i);
            }
            System.out.println();
        }
	}
}

输出如下

1*1= 1 
1*2= 2 2*2= 4 
1*3= 3 2*3= 6 3*3= 9 
1*4= 4 2*4= 8 3*4=12 4*4=16 
1*5= 5 2*5=10 3*5=15 4*5=20 5*5=25 
1*6= 6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 
1*7= 7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 
1*8= 8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 
1*9= 9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81 

可以看到i*j的结果实现了右对齐,这里3*3= 9里面的9不够两位,会在前面用空格补齐。

模块5 Java面向对象高级特性

继承

java构造方法

构造方法的出现是为了创建对象实例时,就把字段设置为合适的值 构造方法是每个class都有的。 如果父类没有默认的构造方法,子类就必须显式调用super()并给出参数以便让编译器定位到父类的一个合适的构造方法。 子类不会继承父类任何构造方法,子类默认的构造方法是编译器自动生成的。不是继承的。

1、子类不重写构造方法,子类默认拥有一个无参构造方法,但是注意这个构造方法第一行默认执行super()

public class Father {
    //父类第一个无参构造方法
	public Father(){
		System.out.println("子类会调用父类第一个构造方法");
	}
}
public class Son extends Father{}
public class Demo {
    public static void main(String[] args) {
	Son s = new Son();
    }
}
输出:子类会调用父类第一个构造方法
`

2、当子类重写了自己的构造方法,默认第一行还是super()

public class Father {
    //父类第一个无参构造方法
	public Father(){
		System.out.println("子类会调用父类第一个构造方法");
	}
}
public class Son extends Father{
    Son(){};
}
public class Demo {
	public static void main(String[] args) {
		Son s = new Son();
	}
}
输出:子类会调用父类第一个构造方法