1 .实现打印
*
**
***
****
public class First{ static int n = 4; public static void main (String args[]){ for(int i=0;i<n;i++) { for(int j=1;j<n-i;j++) System.out.print(' '); for(int k=0;k<=i;k++) System.out.print('*'); System.out.print('\n'); } } }
内层两个for循环控制每一行*号和空白的打印,外层for循环控制打印几行。
2.实现打印
*
***
*****
*******
public class Second{ static int n=4; //行数 ,编译时提示要用静态变量 //静态方法可以调用静态属性和方法,但是不能直接调用非静态方法和属性,也可以将n写进main()里 public static void main (String args[]){ for (int i=0;i<n;i++) { for (int j=1;j<n-i;j++) System.out.print(' '); for (int k=0;k<2*i+1;k++) System.out.print('*'); System.out.println(); } } }
每一行的*号的个数是2N+1个规律增加,而左边的空白符是逐行递减1个。所以内层第一个for循环空白符,第二个for循环控制*号个数。
3 实现打印
*
***
*****
*******
*****
***
*
public class Third{ static int n = 4; public static void main (String args[]){ for (int i = 0;i < 4;i++) { for (int j = 1;j < 4-i;j++) System.out.print(' '); for (int k = 0;k< 2*i+1;k++) System.out.print('*'); System.out.println(); } for (int i = n-1; i > 0;i--) { for (int j = 1;j <= n-i;j++) System.out.print(' '); for (int k=2*i-1;k > 0;k--) System.out.print('*'); System.out.println(); } } }
这个菱形的打印可以分成两部分:即上面的正三角和下面的倒三角。上面的正三角图案可以用程序Second.java实现,倒三角的规律是每行的*号个数是2N-1,左边的空白符个数是逐行加1。
小结:
程序最终都将在内存中执行,变量只有在内存中占有一席之地时才能被访问。
类的静态成员(变量和方法)属于类本身,在类加载的时候就会分配内存,可以通过类名直接去访问;非静态成员(变量和方法)属于类的对象,所以只有在类的对象产生(创建类的实例)时才会分配内存,然后通过类的对象(实例)去访问。
在一个类的静态成员中去访问其非静态成员之所以会出错是因为在类的非静态成员不存在的时候类的静态成员就已经存在了,访问一个内存中不存在的东西当然会出错。