不二极端编程之JAVA基础总结(1)

来源:互联网 发布:淘宝脐橙如何分类 编辑:程序博客网 时间:2024/04/27 23:24

一、局部变量和成员变量的区别

1.在类中的位置不同
局部变量:在方法定义中或者方法声明中
成员变量:在类中方法外
2.在内存中的位置不同
局部变量:在栈内存
成员变量:在堆内存
3.生命周期不同
局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
成员变量:随着对象的创建而存在,随着对象的消失而消失
4.初始化值不同
局部变量:没有默认值初始化,必须定义赋值,然后才能使用
成员变量:有默认值初始化
注:局部变量名称可以和成员变量名称一样,在方法中使用的时候,采用的是就近原则

二、匿名对象是什么?应用场景是什么?

匿名对象:
就是没有名字的对象,由于没有指向,所以效率较高一些
应用场景:
A:调用方法,但是仅仅只限调用一次而已
B:匿名对象用作实际参数传递

三、封装是什么?JAVA中封装的体现有哪些?请举例说明

在面向对象程序设计方法中,封装是指一种将抽象性函数式接口的实线细节部分包装、隐藏起来的方法,封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。
要访问该类的代码和数据,必须通过严格的接口控制。
封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。
适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。
封装的优点:
1、良好的封装能够减少耦合
2、类内部的结构可以自由修改
3、可以对成员变量进行更精确的控制
4、隐藏信息,实现细节
实现JAVA封装的步骤:
1、修改属性的可见性来限制对属性的访问(一般限制为private)

public class person{    private String name;    private int age;}

这段代码中,将name和age属性设置为私有的,只有本类才能访问,其他类都访问不了,如此就对信息进行了隐藏
2、对每个值属性提供对外的公开方法访问,也就是创建一对赋取值方法,用于对私有属性的访问
采用this关键字是为了解决实例变量和局部变量之间发生同名的冲突

public class person{    private String name;    private int age;        public int getAge(){        return age;    }                   public String getName(){        return name;    }       public void setAge(int age){        this.age = age;    }       public void setName(String name){        this.name = name;    }}

以上实例中public方法是外部类访问该类成员变量的入口
通常情况下,这些方法被称为getter和setter方法
因此,任何要访问类中私有成员变量的类都要通过这些getter和setter方法

四、this的关键字是什么?This的应用场景是什么?

每一个行为发生的时候,肯定会有一个发生这个行为的主体
在编程语言里面每一个定义的方法里,都会有一个this关键字,这个this关键不是由在哪儿定义来决定的,而是由谁来执行来决定的,这是判断this的关键
This关键字主要有三个应用:
1、this调用本类中的属性,也就是类中的成员变量
2、this调用本类中的其他方法
3、this调用本类中的其他构造方法,调用时要放在构造方法的首行

五、私有化一个类的成员变量,用getter和setter方法进行读写

    public static void main(String[] args) {        // TODO Auto-generated method stub        p phone = new p();        phone.setBrand("vivo");        phone.setPrice(1000);        System.out.println(phone.getBrand());        System.out.println(phone.getPrice());    }}class p{    private String brand;    private int price;    public  String getBrand() {        return brand;    }    public  int getPrice() {        return price;    }    public void setBrand(String newBrand) {        brand = newBrand;    }    public void setPrice(int newPrice) {        price = newPrice;    }}

六、打印员工信息(EMP类)

构建程序,实现员工的信息打印

    public static void main(String[] args) {        // TODO Auto-generated method stub        System.out.println("----------------------------------------------");        EMP EMP1 = new EMP();        EMP1.name = "白发魔女";        EMP1.age = 24;        EMP1.gender = "女";        EMP1.money = 6000;        System.out.println("姓名:" + EMP1.name);        System.out.println("年龄:" + EMP1.age);        System.out.println("性别:" + EMP1.gender);        System.out.println("薪水:" + EMP1.money + ".0");        System.out.println("----------------------------------------------");        EMP EMP2 = new EMP();        EMP2.name = "黑马神子";        EMP2.age = 26;        EMP2.gender = "男";        EMP2.money = 7500;        System.out.println("姓名:" + EMP2.name);        System.out.println("年龄:" + EMP2.age);        System.out.println("性别:" + EMP2.gender);        System.out.println("薪水:" + EMP2.money + ".0");    }}class EMP{    String name ;    int age ;    String gender ;    int money ;}

效果图如下:
这里写图片描述

七、为cell类添加右移的方法

public static void main(String[] args) {        // TODO Auto-generated method stub        cell cell = new cell();        cell.row = 15;        cell.col = 3;        cell.move();        form(cell);        cell.moveMore(4);        form(cell);    }    public static void form(cell cell) {        for (int i = 0; i < 20; i++) {            for (int j = 0; j < 10; j++) {                if (cell.row == i && cell.col == j) {                    System.out.print("*");                }else {                    System.out.print("-");                }            }System.out.println();        }    }}class cell{    int row;    int col;    public void move() {        col ++;    }    public  void moveMore(int i) {        col = col + i;    }}

这里写图片描述