java第六天(二维数组、面向对象,类的概念、语法、属性、方法、建立对象、成员变量和局部变量、匿名对象、封装)

23.二维数组(用的少仅作了解)java

即数组中有数组编程

定义方式:(1)数据类型[][] 数组名=new 数据类型[整数][整数]数组

(2)数据类型[][] 数组名={{值1,值2,值3},{...},{...}....}安全

必须明确外围数组名jvm

class Demo2{
    public static void main(String[] args){
        //定义一个新的二位数组第一种方式,数据类型[][] 数组名=new 数据类型[整数(表示行)][整数(表示列)]
        int[][] arry=new int[3][4];
        //给每一行每一列上对应的数赋值
        arry[0][0]=11;
        arry[0][1]=12;
        arry[0][2]=13;
        arry[1][0]=22;
        arry[1][1]=23;
        arry[1][2]=24;
        arry[2][0]=33;
        arry[2][1]=34;
        arry[2][2]=35;
        printArr(arry);
        /*
        11      12      13      0
        22      23      24      0
        33      34      35      0
        */
    }
    //建立一个方法访问数组中每个数
    public static void printArr(int[][] arr){
        //外层为行
        for(int i=0;i<arr.length;i++){
            //内层为列
            for(int j=0;j<arr[i].length;j++){
                System.out.print(arr[i][j]+"\t");
            }
            System.out.println();
        }
    }
}函数

24.面向对象oop

面向过程定义:分析解决问题所须要的步骤,而后用函数一步步调用实现,举例把大象反放进冰箱、五子棋spa

面向对象:oop(object oriented programming)作一个需求时,咱们会抽取出几种事物,每一种事物都有共同的行为和属性,核心是对象,某个对象的行为、属性,Java中万物皆对象对象

面向对象是以功能和属性划分,而不是步骤,编程就是模拟现实生活,使用面向对象的思想能够认为万物皆对象接口

25.类的概念:把某些具备相同属性和行为的事物抽象成一类

注意类是概念,对象才是真正的实例,对象是具体的实例

26.类的语法

class 类名{

    属性

    方法

}

类名:首字母大写的驼峰式XxxYyy,见名知意

建立类要注意:(1)类名和文件名没有任何关系,前提是class类前面不要加public,若是加了表明这个类是主类(2)如在定义类的时候public class Teacher{},这个类就是主类。一个Java文件只能有一个主类,并且这个文件名字必须和主类名字一致

27.类里的属性
属性就是这个类的公有特征,用变量的定义方式表示能够没有初始值,jvm给属性默认值

引用数据类型:数组、类、接口

属性的默认值

byte、short、int、long默认值为0;float、double默认值为0.0;boolean默认值为false;char默认值为''

引用数据类型默认值为null

28.类的方法

类的行为用函数(此处static无关紧要)

public <static> 返回值类型 方法名(数据类型 参数名,数据类型1 参数名1,...){

    //方法体

    return 返回值;

}

29.建立对象

类犹如一个模板,对象就是一个个样本

建立对象的语法:类名 变量名=new 类名()

经过对象能够访问属性   引用.属性名字

经过对象能够调用方法 引用.方法(参数列表)

共用一个类建立多个对象每一个对象都有本身的属性,每一个对象都是数据隔离的

30.对象建立的内存结构和流程

栈:用于存储基本数据类型的值或者是局部变量,先进后出,存取的容量小,存取的速度快

堆:用于存储引用数据类型,存取容量大,存取速度慢

数据共享区:用于存储引用数据类型,存储一些共享的数据(方法)

对象存储在堆中,引用存储在栈中,堆中每一个对象的数据都是隔离的

每个类class加载到数据共享区,jvm都会解析这个类的内容

方法是每一个对象共享的,可是方法内的属性是哪一个对象调用这个方法,那么这个属性就是在哪一个方法的

31.成员变量(属性)

成员变量是定义在类中,也叫类的属性

属性特色:做用范围:根据权限修饰符来定;存储位置:堆内存或者数据共享区;默认值:有;生命周期:对象什么时间建立什么时间有属性,若是一个引用数据类型的变量null,意味着不指向任何的对象,堆中的对象就会变成匿名对象,很快就会被gc(垃圾回收器)回收,若是在运行的过程当中对象的引用没有被置空,那么对象的属性就会等到大括号结束而被回收

32.局部变量

5种常见的状况:语句块内、方法中、方法参数、for循环内、普通语句块

特色:做用范围:只限于所定义的大括号,以及这个大括号内子括号有效;存储位置:存储在栈内存中;默认值:无局部变量必须赋值;生命周期:所属的大括号结束就消失

/*建立一个类,class 类名{
    属性
    方法
    }
*/
class Dog{
    //属性能够没有初始值,能够用变量定义的方式表示,jvm给属性默认值
    String name;
    int gender;
    String type;
    double weight;
    public void sleep(){
        System.out.println("狗狗在睡觉!");
    }
    public void lookHome(){
        System.out.println("狗狗在看家!");
    }
}
//建立一个类前面加了public表示时主类文件名要和主类名一致
public class TestDog{
    //主类里里面通常放主方法但不是必须
    public static void main(String[] args){
        //在类里面建立对象,类名 变量名=new 类名()
        Dog dog1=new Dog();
        //经过对象访问属性,变量名.属性,把这只狗的属性赋值
        dog1.name="磊子";
        dog1.gender=1;
        dog1.type="泰迪";
        dog1.weight=42.2;
        //打印每一个属性
        System.out.println(dog1.name);
        System.out.println(dog1.gender);
        System.out.println(dog1.type);
        System.out.println(dog1.weight);
        //调用方法  变量名.方法(参数列表)
        dog1.sleep();
        System.out.println("--------------");
        Dog dog2=new Dog();
        dog2.name="小磊子";
        dog2.gender=2;
        dog2.type="中华田园犬";
        dog2.weight=45.2;
        System.out.println(dog2.name);
        System.out.println(dog2.gender);
        System.out.println(dog2.type);
        System.out.println(dog2.weight);
        dog2.lookHome();
    }
}

33.匿名对象

匿名对象因为没有栈中的变量来引用,因此就会被回收掉,全部匿名对象是无心义的

34.面向对象的特征之封装

‘javac’不是内部或外部命令,也不是可运行的程序或批处理文件

解决方法:记住JAVA文件所在地址: C:\Program Files\Java (若是不记得的话,能够从新安装一下的)
安装好以后,就须要配置一下环境变量 , 具体配置以下
在用户变量中, 添加新变量,命名为java_home,地址为 C:\Program Files\Java\jdk1.8.0_151,注意,我以前的JAVA文件所在地址。再添加一个新变量,命名为classpath,地址为 C:\Program Files\Java\jdk1.8.0_151\lib\tools.jar;C:\Program Files\Java\jdk1.8.0_151\lib\dt.jar (注意,这里中间要加分号的,这里是两个包来的)
在Path中添加两个变量。 分别的地址为 C:\Program Files\Java\jdk1.8.0_151\bin 和 C:\Program Files\Java\jre1.8.0_151\bin

封装的目的:提升数据安全性,经过封装,能够实现堆属性的访问权限控制,同时增长了程序的可维护性

封装:将属性私有化,使用private关键字完成属性私有化,这种属性只有本类能访问,咱们通常给每个私有属性提供公共的public的set和get这种方法来访问咱们的私有属性;公有的方法被其余类访问,是本类方法能够访问私有属性,咱们在其余类中经过这个公有的方法能够间接访问属性。

class TestGirl{     //使用private关键字将属性私有化,这种属性只有本类能够访问     private String name;     private String nickName;     private int age;     private String tel;     //公有的方法能够被其余的类访问,这个方法也是TestGirl的本类方法能够访问私有属性,咱们在其余类中经过公有方法能够间接的访问属性     public void introduce(){         System.out.println("我叫"+name+"今年芳龄"+age+"个人手机号码是"+tel);     }     //提供一个公有的设置属性的方法,不须要返回获得什么值因此不须要返回值     public void setName(String myName){         name=myName;     }     //提供一个公有的获取属性的方法,返回获得属性或者直接打印属性     public String getName(){         return name;     }     public void setAge(int myAge){         age=myAge;     }         public int getAge(){         return age;     }     public void setTel(String myTel){         tel=myTel;     }     public String getTel(){         return tel;     } } public class Girl{     public static void main(String[] args){         //建立一个TestGirl类的对象g         TestGirl g=new TestGirl();         //调用方法设置g的属性         g.setName("诗诗");         g.setAge(23);         g.setTel("12345678");         g.introduce();         //调用方法访问获取g的属性,注意接收返回值         String name=g.getName();         int age=g.getAge();         String tel=g.getTel();         System.out.println(name);         System.out.println(age);         System.out.println(tel);     } }

相关文章
相关标签/搜索