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); } }