1.创建一个Test类,包含有一个public权限的int型成员变量与一个char类型的成员变量,观察在main方法中的初始值。
public class StrTest
{
public int x;
public char ch;
public static void main (String[] args)
{
StrTest a = new StrTest();
System.out.println (a.ch);
System.out.println (a.x);
boolean bo = false;
if (a.ch == '\u0000')
{
bo = true;
}
System.out.println(bo);
}
}
运行结果:
注意:
char的默认值是'\u0000',不是空格
\u0000代表的应该是nul,一个控制字符,表示没有值,不可见,输出控制台是空,但不是真正的空格,因为真正的空格的unicode编码是'\u0020'
2.递归与非递归求菲波那切数列(一个斐波那契数列是由数字1、1、2、3、5、8、13、21、34等等组成的,其中每一个数字(从第三个数字起)都是前两个数字的和。创建一个方法,接受一个整数参数,并显示从第一个元素开始总共由该参数指定的个数所构成的所有斐波那契数字。例如,如果运行 java Fibonacci 5(Fibonacci为类名),那么输出应该是1、1、2、3、5。)
//求斐波那契数列
public class Fibonacci
{
public static void main(String[] args)
{
//System.out.print(fibonacciArrs1(5));
fibonacciArrs(9);
}
public static int fibonacciArrs1(int num)//用递归的方法打印第num个数时的斐波那契数(只显示最后一个数)
{
if (num == 1 || num == 2)
{
return 1;
}
else
{
return fibonacciArrs1(num-1)+fibonacciArrs1(num-2);
}
}
public static void fibonacciArrs(int num)//用数组的方法打印前num个斐波那契数(显示num个数)
{
if (num <= 0)
{
System.out.println ("num 的值有误!!!");
return ;
}
int[] arrs = new int[num];
arrs[0] = 1;
if (num > 1)//防止num == 1,数组越界
{
arrs[1] = 1;
}
for (int i=2; i<num; ++i)
{
arrs[i] = arrs[i-1]+arrs[i-2];
}
for (int x:arrs)
{
System.out.print(x+" ");
}
}
}
运行结果:
3.创建一个带默认构造方法(即无参构造)的类,在构造方法中打印一条消息"Hello Constructor";再为这个类添加一个重载构造方法,令其接收一个字符串参数,并在这个有参构造方法中把"Hello Constructor"和接收的参数一起打印出来。
public class Constructor
{
public Constructor()
{
System.out.print ("Hello Constructor");
}
public Constructor(String str)
{
this();//调用本类构造方法
//this
//调用普通方法:this.方法名(参数);
//调用构造方法:this(参数);
System.out.println (str);
}
public static void main(String[] args)
{
new Constructor("aaaaaaaaaaa");//匿名对象(匿名对象不会有任何栈空间所指向,所以使用一次后就成为垃圾空间。)
}
}
运行结果: