代码如下:
class student {
public String name="";
private boolean sex=false;
private String birthday="";
private int num=000000;
student() {
}
student(String name,boolean sex,String birthday,int num) {
this.name=name;
this.sex=sex;
this.birthday=birthday;
this.num=num;
}
public void setSex(boolean sex){
this.sex=sex;
}
public char getSex() {
char s;
if (this.sex)
{
s='男';
}
else
s='女';
return s;
}
public void setBirthday(String birthday){
this.birthday=birthday;
}
public String getBirthday() {
return this.birthday;
}
public void setNum(int num){
this.num=num;
}
public int getNum() {
return this.num;
}
}
public class StudentTest {
public static void main(String[] args){
student st= new student("Catherine",false,"1972-01-01",20070203);
System.out.println("姓名:"+st.name+"\n"
+"性别:"+st.getSex()+"\n"
+"出生年月:"+st.getBirthday()+"\n"
+"学号:"+st.getNum()+"\n");
st.name="join";
st.setSex(true);
st.setBirthday("1970-01-01");
st.setNum(20070801);
System.out.println("姓名:"+st.name+"\n"
+"性别:"+st.getSex()+"\n"
+"出生年月:"+st.getBirthday()+"\n"
+"学号:"+st.getNum()+"\n");
}
}
打印结果如下:
姓名:Catherine
性别:女
出生年月:1972-01-01
学号:20070203姓名:join
性别:男
出生年月:1970-01-01
学号:20070801
问题1:代码中为什么会出两个构造函数,其中一个是空的,另一个是带参数的,我把空的构造函数注释掉一样编译通过,打印结果相同,请问这个空构造函数在这起什么作用?
问题2:char定义的数据似乎只能定义一个字节的,而这里的"男","女"是汉字有两个字节了,为什么能编译通过?
问题3:代码中已经new了Student的实列,传了参数,为什么不能直接通过get()方法获得值,而要先set()?是不是因为变量定义了private的缘故?如果是的话我可以理解为定义了private的变量如果要调用都要先用set()方法赋值?如果不是这样理解的话还请详细说明.
问题4:这里的if判断语句中判断条件(this.sex)怎么理解?它是根据什么来给出男或女的,也就是说判断标准是什么,为什么传了false给出女,传了ture就是男?举列来说if(x>0)是男,else是女,那就看传的参数是否大于0,而这里我没看出判断的标准.
最后非常感谢看完此贴的人,当然更是要谢谢给予帮助和解答的人.我想正是由于你们的的存在和默默的付出,才是我们java菜鸟前进的引路人.我刚在csdn上注册,这是我的处子贴,所以多说几句.我是一位军事迷,最后请允许我引用一句写镶嵌在北京总参荣誉室的那四句话送给这里的黑客达人们 :无声战线,无名英雄,无私奉献,无尚光荣。
class student {
public String name="";
private boolean sex=false;
private String birthday="";
private int num=000000;
student() {
}
student(String name,boolean sex,String birthday,int num) {
this.name=name;
this.sex=sex;
this.birthday=birthday;
this.num=num;
}
public void setSex(boolean sex){
this.sex=sex;
}
public char getSex() {
char s;
if (this.sex)
{
s='男';
}
else
s='女';
return s;
}
public void setBirthday(String birthday){
this.birthday=birthday;
}
public String getBirthday() {
return this.birthday;
}
public void setNum(int num){
this.num=num;
}
public int getNum() {
return this.num;
}
}
public class StudentTest {
public static void main(String[] args){
student st= new student("Catherine",false,"1972-01-01",20070203);
System.out.println("姓名:"+st.name+"\n"
+"性别:"+st.getSex()+"\n"
+"出生年月:"+st.getBirthday()+"\n"
+"学号:"+st.getNum()+"\n");
st.name="join";
st.setSex(true);
st.setBirthday("1970-01-01");
st.setNum(20070801);
System.out.println("姓名:"+st.name+"\n"
+"性别:"+st.getSex()+"\n"
+"出生年月:"+st.getBirthday()+"\n"
+"学号:"+st.getNum()+"\n");
}
}
打印结果如下:
姓名:Catherine
性别:女
出生年月:1972-01-01
学号:20070203姓名:join
性别:男
出生年月:1970-01-01
学号:20070801
问题1:代码中为什么会出两个构造函数,其中一个是空的,另一个是带参数的,我把空的构造函数注释掉一样编译通过,打印结果相同,请问这个空构造函数在这起什么作用?
问题2:char定义的数据似乎只能定义一个字节的,而这里的"男","女"是汉字有两个字节了,为什么能编译通过?
问题3:代码中已经new了Student的实列,传了参数,为什么不能直接通过get()方法获得值,而要先set()?是不是因为变量定义了private的缘故?如果是的话我可以理解为定义了private的变量如果要调用都要先用set()方法赋值?如果不是这样理解的话还请详细说明.
问题4:这里的if判断语句中判断条件(this.sex)怎么理解?它是根据什么来给出男或女的,也就是说判断标准是什么,为什么传了false给出女,传了ture就是男?举列来说if(x>0)是男,else是女,那就看传的参数是否大于0,而这里我没看出判断的标准.
最后非常感谢看完此贴的人,当然更是要谢谢给予帮助和解答的人.我想正是由于你们的的存在和默默的付出,才是我们java菜鸟前进的引路人.我刚在csdn上注册,这是我的处子贴,所以多说几句.我是一位军事迷,最后请允许我引用一句写镶嵌在北京总参荣誉室的那四句话送给这里的黑客达人们 :无声战线,无名英雄,无私奉献,无尚光荣。
问题2:一个char就是2个字节,16位。
问题3:对于类的变量,如果你没有赋值,会有默认值:数值类型默认值是0,引用类型是null。 你的这个问题我实在没看懂,你逻辑混乱。
问题4:这个问题我很无语,明明上面sex是个boolean类型的变量,所有if判断条件判断的就是这个啊,传false认为是女,传true认为是男呗。