Java面向对象基础课之三/0909号
来源:互联网 发布:博客互踩软件 编辑:程序博客网 时间:2024/05/17 00:03
学习报告
1.今天的学习内容是:面向对象的基础及扩展知识
知识比较零散:
概念:对象是数据封装后的结果。(就是各个数据(类中元素的属性一致)组成一个对象来处理)
数据1(属性) 封装
数据2(属性)
数据3(属性)
2.变量的分类:
按照作用域划分:
局部变量:在方法或者语句块(如If语句)声明的变量。生命的周期只在定义该变量的{}之内。方法或者语句块一结束,局部变量消失。所以局部变量不能跨方法或者语句块使用。
成员变量(属性):在类中,方法外声明的变量,是一个对象的组成部分。随着对象的产生而产生,随着对象的消失而消失。虚拟机关闭时消失。
备注:一般情况下,使用变量时,尽量减少变量的作用范围,以便分配给变量的空间可以及时得到释放。
重点:如果我们想主动通知垃圾回收机制回收一个对象,只需要把该对象的引用类型的变量赋值为null,就会没有指针指向该地址,垃圾回收机制就会释放内存空间。
即一个对象没有任何引用,那么就符合垃圾回收机制(GC)回收的条件。
3.关于导包的问题:
l 在同一个包中,声明的类,可以直接相互调用,无需导包
l 在系统的一些包,例如在Java.lang.*之类的。System.out
l 除开此两类的包,类之间调用时,需要先导入对方的类所在的位置。
包的概念:包就像一个文件夹,
作用:
l 可以通过包组织相关的类。
l 可以通过包,做信息的隐藏。声明一个类时,不加Public时其他的类无法掉用,做到隐藏的效果。
关于public修饰符的几点解释:
l 不加public 时,声明一个类时,类名可以与文件名不一致,之前一直是加上Public,所以在编译的时候需要类名与文件名一致,否则会出现编译错误。现在不加public修饰,就可以不一致,编译不会出错。
l 不加public时,在一个类文件名中,可以写多个类,并且可以都通过编译,生成几个.class文件,但是我们执行编译文件时,需要选择我们需要执行哪个.class文件。
l 一个类声明为Public时,才可以跨包调用,否则不能。但是没有声明为Public时,可以在同一包的不同类调用,也可以早同一类中调用。
l 总结以上的意思:如果一个类声明为public ,要求类名与文件名一致,该类可以跨包使用。没有声明为public ,类名与文件名不一致,该类不能跨包使用。
4.关于静态变量与静态方法之间的用法解释:
是否是静态的方法及变量:由public修饰词引导
l 静态方法与静态变量加载时机在对象之前。所以在静态方法(包括静态的main主函数)中不能使用this关键字,也不能直接调用成员变量和成员方法。0909号课堂代码/product代码解释
几点知识点延展:
Ø 静态方法中不能使用this关键字,但是可以在非静态方法中却可以使用,但不是必须要加,不加this关键字的效果一样。
Ø 静态的方法或者变量是不能直接调用的,但是可以先声明一个对象,使用对象.变量名(方法名) 的方式调用。
在静态方法在调用另外的静态方法时,用对象.方法名 调用时,系统会出现警告错误,这原因与静态方法中调用静态变量一样的道理。这时使用类名.变量名(方法名)调用,就会消除警告。
Ø 在非静态方法中,可以直接调用变量名,但是需要先赋值,不然会返回null值。
Ø 此部分的知识点见代码的解释:地址:0909号课堂代码/product代码解释
5.关于数据类型的几点总结:
数据类型分为基本数据类型与引用数据类型。基本数据类型放具体的数据,而引用数据类型存放对象的地址。基本数据类型8种,4个整形,2个浮点型,boolean与char。
引用数据类型:接口,类(String 与class等其他的类,比如自定义的Student类),数组。引用类型的变量全部都是存放对象的地址。
6.关于垃圾回收机制的问题:
此种类型的题目,通过画图的形式,找到各个变量与对象之间的关系,从而从图上知悉哪些对象已经被系统执行垃圾回收。
上图中第4与7行代码执行后,会有对象进行了垃圾回收。
画出的过程图是如下:
类似手稿图在Java基础课本上册(70page)。
7.关于方法之间调用后,变量值变化几点练习:
此代码在:课上的代码0909包内
第一题:简单型
代码行:
public classTest_12 {
public static voidmain(String[] args) {
int x =8;
Student s =new Student();
s.grade=5;
test(x,s);
System.out.println(s.grade+" "+x);
}
public static void test(intx,Student s){
//test方法中,如果把静态修饰词static去掉,在main方法中无法调用
//即静态的主方法无法调用非静态的方法。从方法的管控范围来看,
s.grade =6;
x =2;
}
}
从此代码画出的草图:
自己的手稿在Java基础课上(69page)
复杂型:
代码行:
public classTest_13 {
public static voidmain(String[] args) {
intx =8;
Student s1 =new Student();
s1.grade=5;
Student s2 =new Student();
s2.grade=2;
test(x,s1,s2);
System.out.println(s1.grade+" "+s2.grade+" "+x);
}
public static voidtest(int a,Student b,Student c){
//test方法中,如果把静态修饰词static去掉,在main方法中无法调用
//即静态的主方法无法调用非静态的方法。从方法的管控范围来看,
b.grade =6;
c.grade =1;
b=c;
b.grade =7;
c.grade =4;
b=new Student();
b.grade =10;
c.grade =11;
a =2;//画出草图,便于理解
}
}
草图如下:
自己的手稿:
图片格式与大小问题,无法上传!需要时进入链接查看!
- Java面向对象基础课之三/0909号
- java面向对象基础课(继承,方法重写),图形界面=0912号
- JAVA基础课总结三
- 学java教程之面向对象(三)
- Java基础之面向对象(三)
- java 面向对象编程之三
- Java基础之三:面向对象
- JAVA之面向对象(三)
- java基础之面向对象(三)
- RHadoop培训 之 Java基础课
- Java面向对象(三)
- 三、JAVA面向对象
- Java面向对象三
- java基础系列之三:java的面向对象程序设计
- Java基础课
- 游戏用JAVA编程之面向对象篇三
- 黑马程序员---Java基础--07天(面向对象之三)
- 黑马程序员-----java基础三(之面向对象)
- Android——ScrollView嵌套ListView/GridView的问题
- 12-Thread Control
- [.Net码农]如何在ASP.NET的web.config配置文件中添加MIME类型
- Redis快速入门
- 解决Qt程序在Linux下无法输入中文的办法
- Java面向对象基础课之三/0909号
- 13-Daemon Processes
- libvirt/qemu特性之快照
- cordova iOS 下插件的使用遇到的问题和解决方法
- 热门威胁情报库深入分析(二)
- Shell 中引用符号,特殊符号的名称及意义
- ElasticSearch 2.x入门与快速实践
- centOS 7 lnmp环境搭建
- 笔记本装win10和ubuntu双系统