心得体会
- 似乎自己真的不够努力,因为不够努力,所以上课不能很好的吸收当天的知识,java对我来说真的挺难的,好像至今我还深陷于c语言的思维无法自拔。但是,实际说,我觉得java要更加有趣一点,写一个demo前进行一次逻辑分析,挺有用的,能让自己编程的思路更加清晰一点。
技术
- 1.给对象赋值的方式
- 2.setter/getter方法
- 3.构造方法
- 4.变量作用域
- 5.this指针
- 6.static
具体操作
1.给对象赋值的方式
- a.对于public修饰的属性 使用对象直接调用
p.number='A';
- b.对于private修饰的属性 不能直接调用 只能间接使用,可以用
getter/setter
方法和构造方法
- 2.setter/getter方法
class Poker{
private String number;
private String color;
public boolean bigerThen(String number) {//比较大小
return true;
}
//什么时候用this
//需要明确指定调用的是自己对象的方法
public void t1(int... ages){
bigerThen(null);
this.bigerThen(null);
}
上图中的number、color属性由private修饰,不能直接调用,只能间接调用
//给外部提供一个set方法 通过这个方法间接给number赋值
//可以对外部给的值进行控制
public void setNumber(String num){
number=num;
}
//给外部提供一个get方法 访问某个变量的值
public String getNumber(){
return "number";
}
public void setColor(String color) {
this.color = color;
}
public String getColor() {
return color;
}
- 上图中给外部提供一个
set
方法 通过这个方法间接给number,color赋
值,可以对外部给的值进行控制,- 给外部提供一个
get
方法 访问某个变量的值- 通过
setter/getter
方法,于是poker类中的成员属性number,color
可以在外部间接调用
public class Test {
public static void main(String[] args){
Poker p=new Poker();//创建对象
p.setNumber("jacker");
System.out.println(p.getNumber());
}
}
注意:通常
setter/getter
方法不需要手动添加,可以通过系统直接添加。首先把光标放在setter/getter
方法要添加的位置,然后快捷键Alt+Insert
。(ps
:我的电脑快捷键是这样的,如果你的电脑快捷键不是这样的,可以点击code
,然后看Generate
,看一下快捷键是什么)
建议!!!: 建议将setter/getter方法定义在类的最后面 避免干扰阅读
3.构造方法
- a.构造方法的定义
构造方法:创建一个类的一个对象的时候 就会被调用的方法
- b.类的默认构造方法
- 创建一个类的具体对象
Poker pp=new Poker();
- 每个类会默认提供一个构造方法
1.无参数的默认构造方法
public Poker(){
System.out.println("构造方法");
}
2.有参数的默认构造方法
public Poker(){
number='2';
color='♠';
System.out.println("构造方法");
}
public class Test {
public static void main(String[] args){
Poker pp=new Poker();
System.out.println(pp.getNumber());
System.out.println(pp.getColor());
}
}
class Poker {
private String number;
private String color;
//类的默认构造方法
public Poker(){
number="2";
color="黑桃";
System.out.println("构造方法");
}
public boolean bigerThen(String number) {
return true;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
}为什么会打印上述结果:
因为Poker pp=new Poker();
这里创建了一个对象,创建这个对象它默认会调用这个对象里面的默认构造方法,这个构造方法里面先赋值,然后打印的System.out.println("构造方法");
这句话就会执行完毕。执行完毕,这个对象创建完毕,然后再调用
System.out.println(pp.getNumber());
System.out.println(pp.getColor());
方法,把“2”,“ 黑桃”打印出来
-
c.构造方法的重载
1.方法重载
同一个类里面有多个同名的方法 但是返回值或者参数不同
public int nextInt()
public int nextInt(int i);
这两个方法方法名相同,但执行的内容不同,参数不同,返回值一样,这就是重载
2.自定义的构造方法
public class Test {
public static void main(String[] args){
Poker pp2=new Poker("k","♥");
System.out.println(pp2.getNumber());
System.out.println(pp2.getColor());
Poker pp3=new Poker("Q","♣");
System.out.println(pp3.getNumber());
System.out.println(pp3.getColor());
}
}
class Poker {
private String number;
private String color;
//自定义的构造方法
public Poker(String num,String col){
//调用
number=num;
this.color=col;
System.out.println("自定义的构造方法");
}
public boolean bigerThen(String number) {
return true;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
- 通常给一个属性赋值 形参名尽量和属性名一致
变量在使用的时候有就近原则构造方法的时候 这个对象在内存里面已经分配好了
- d.什么时候使用构造方法**
a.希望在对象创建的时候 做点其他事情
(这个时候用默认的构造方法就可以了,用自定义的构造方法也是可以的)
b.在对象创建的时候 需要给属性赋值
(这个时候需要写一个自定义的构造方法)
4.变量作用域
- a.成员变量的作用域,从对象创建到对象销毁
- b.方法的变量作用域在这个方法内部,出了这个方法就无法访问
- 变量在使用时有就近原则
public Poker(String
number,String color){
//调用
number=number;//错误!!!
此时没有赋值成功!!!
public Poker(String
num,String col){
//调用
number=num;
这是正确的
5.this指针
- 什么时候用this
需要明确指定调用的是自己对象的方法
public void t1(int... ages) {
bigerThen(null);
this.bigerThen(null);
}
在构造方法里面,这个this指的是创建的这个对象
public Poker(String number,String color){
//调用
this.number=number;
this.color=color;
System.out.println("自定义的构造方法");
}
除构造方法的任意一个方法里面调用this指的是 调用这个方法的对象
public void setColor(String color) {
this.color = color;
}
6.static
- static 修饰的属性和方法都会在对象创建之前优先加载
- 属性 静态属性
方法 静态方法
实例方法/对象方法:必须创建某一个对象才能调用的方法
类方法/静态方法: 不需要创建对象 直接用这个类来调用
class MyClass{
public void test(){
System.out.println("这是对象方法");
}
public static void test2(){
System.out.println("这是静态方法");
}
}
class T2{
public static void main(String[] args){
MyClass c1=new MyClass();//使用类的实例方法/对象方法
c1.test();
MyClass.test2();//使用类/静态方法
}
什么情况下需要写静态方法:
- 1.当不需要记录数据的时候 只关心功能就可以使用静态方法
- 2.注意:静态方法里面不能调用静态这个类里面的属性和非