为什么类是抽象的?
整数是抽象的,3是具体的
例如
int(integer) 抽象的--对应的包装类 n=3 这个是具体的
按照等号右边的具体的 左边的是抽象的 小的推大的
对象一定占用空间(堆内存)----得new开放空间权限
Java 的类就是class ,也就是分类的意思,也就类型的意思
也就Javac 将源程序编译成字节码文件(*class)
按照MySQL 来说表头就是类 就是抽象的 后面的数据就是对象
类是用来描述所有的对象的属性()
属性 成员变量 属性是成员变量的表达
是一个名词 比如姓名 身高 身体 身份证
成员变量 局部变量(类中方法之外)
局部变量只能在方法中使用 (在方法之内)
成员变量只能在全局使用 同一个类种公用
publc class Dog{ prive String name;//成员变量(类里面方法之外 可以全局使用) public void setName(String xm){//局部变量-参数变量 int x=3;//局部变量(方法之内 ,只能方法使用) name =xm; } pulic void doX(){ x=32; name = "xLU"; } }
成员变量一般是名词(属性)变量要小写 类要大写
成员方法
package cn.tom.day93;public class DemoStudent { public static void main(String[] args) { Student t1=new Student();//与类同名 Java默认提供一个无参数构造方法,写了就没有 ,所以有参数之后要加回无参 //没有赋予名字也是具体的 // 左边是类型 抽象的 右边具体的对象 t1.name="张三"; t1.height=180; t1.weight=120; } }
package cn.tom.day93;public class Student { //成员变量 public String name; public int height; public int weight; public void play(){ System.out.println(name+"打篮球"); } public void study(){ System.out.println(name+"在学习"); } }
利用有参构造方法 使用了有参构造就得添加一个无参数构造方法
重点:this是指向当前正在创建和正在使用的对象
(作业思路)
运行到那个就指向那个
?? this + 要的对象?
老师笔记
能传对象传对象
package cn.tom.day93;public class Student { //成员变量 public String name; public int height; public int weight; public Student(){} public Student(String name ,int height,int weight){ this.name=name;//指代当前正在创建的对象 this.height=height; this.weight=weight; } public void play(){ System.out.println(name+"打篮球"); } public void study(){ System.out.println(name+"在学习"); } public void fit(Student s1){ //this指代当前对象也就直接在fit前面输入一个对象 // 是用fit 方法里面再添加另外一个对象 System.out.println(this.name + "单挑类" +s1.name); } }
package cn.tom.day93;public class DemoStudent { public static void main(String[] args) { // Student t1=new Student(); //与类同名 Java默认提供一个无参数构造方法,写了就没有 ,所以有参数之后要加回无参// //没有赋予名字也是具体的// // 左边是类型 抽象的 右边具体的对象 // t1.name="张三"; // t1.height=180; // t1.weight=120; //创建一个叫t0的学生 给他添加姓名 身高 体重 Student t0 =new Student("张三",160,150); System.out.println(t0); Student t2 =new Student("李四",150,110); System.out.println(t2); //t1和t2正在单挑 //方法的是用当前对象加另外一个个对象 //能好惨对象先传对象 t2.fit(t0); } }
成员变量私有声明 手搓get set
构造方法
初始化成员变量(int0 double 0.0 String null 对象 null)
计算该对象所需要堆内存的大小
注意:Java虚拟机会帮助开发者默认的创建一个构造方法
-----写了有参数加一个无参构造
static 类方法 加了这个修饰
无需创建对象直接用
一般写在测试类里面,类名.方法名 静态方法
数组就是单独的普通变量-----是连续的可以循环
(晚上作业思路)
整个数组名称当成元素去传,要把元素当成一个数组使用
调用方法 参数传递-值传递/引用传递
值传递:调用某个方法结束后不会影响使用者的初始值。(8大基本数据类型+String)
引用传递:调用某个方法之后会影响某个初始值(对象类型,数组),new出来的(出来String)
代码演示:
package cn.tom.day94;import cn.tom.day93.Stox;public class DemoCaller { public static void main(String[] args) { //为什么String 里面有final 修饰 最终 不改变 //8大基本数据类型,和String都是值传递 int n=100; double d=100; String s="123"; //100 100 123不改变 System.out.println("n="+n+" d="+d+" s="+s); //只要是new 出来的除String都是引用传递 -----地址传递 int[] a={1,2,3}; test2(a); for (int i=0;i<a.length;i++) System.out.println(a[i]); //引用传递以数组为例 Stox stox=new Stox(); stox.setName("tmp"); test3(stox); System.out.println(stox.getName()); } private static void test3(Stox stox) { stox.setName("张三"); } private static void test2(int[] a) { for (int i=0;i<a.length;i++){ a[i]=a[i]*10; } } public static void test1(int n,double d,String s){ n=101;d=101.1;s="79789"; } }
引用传递实现学生随机产生名字示例
引用传递可以返回多个内容
老师链接
“”变量类型(对象:Dog )String 之类 ”决定了是内存地址 还是整数(int double short long byte char boolen )
对象变量没有指向任何对象则为: 空指针错误
C语言运行更快 JAVA开发运用型软件--企业开发