发表于: 2018-02-22 20:26:41
1 576
今日完成
1.对象中的一些知识点温习
类:事物的描述
对象:该类的实例,java中通过new创建
内存:new 对象时,在内存中开辟空间,默认值(基本类型0,字符串null),每个对象封装字节的成员变量。
成员变量:存在与堆内存的对象中。有默认值初始化值。随着对象的存在而存在,随着对象的消失(回收)而消失。
局部变量:存在与栈内存的方法中。没有默认初始化值,随着所属区域的执行而存在,随和所属区域的结束而释放。
基本数据类型的参数传递:值的拷贝,
引用数据类型的参数传递:引用的拷贝,都是值的传递。
public class demo1{
public static void main(String[] args) {
//引用类型传递的是引用,基本类型传递的是值的拷贝;
Car c1 = new Car();
c1.color = "blue";
// show(c1);
// System.out.println(c1);
String x = "原始值";
String y = new String("yyyyyy");
show2(x);
show2(y);
System.out.println(x);
System.out.println(y);
}
public static void show(Car x ) {
x.color = "reddd";
}
public static void show2(String a) {
String aaa = new String("改变值");
a = aaa;
}
}
class Car{
private Integer num;
String color;
public void run() {
System.out.println();
}
2.静态的使用与代码块
Static:
1.随着类的加载而存在,先于对象的存在。
2.区别
(1)生命周期不同,一个随着对象存在,一个随着类存在。
(2)调用方式不同。一个通过对象调用,一个通过类名调用。
(3)储存的方式不一样。
成员变量储存在堆内存的对象中,也叫做对象的特有数据。
静态变量储存在方法区(的静态区),所以也叫对象的共享数据区。
3.用法注意
(1)静态方法只能访问静态变量。
(2)静态方法中不能使用this和super.
4.静态代码块
随着类的加载而运行,而且只执行一次。
作用:用于给类进行初始化。
5.构造代码块
构造类的时候运行,先于构造函数执行。局部代码块(放在函数里面)
静态代码块最先执行。
public class demo3 {
public demo3(){
System.out.println("gouzao");
}
{
System.out.println( "hahaha");
}
static
{
System.out.println( "hehehe");
}
private void test(){
{
System.out.println("jubu");
}
System.out.println("test");
}
public static void main(String[] args) {
demo3 s = new demo3();
demo3 s2 = new demo3();
s.test();
}
}
结果
3.继承
单继承:一个子类只能有一个父类。
变化:
1.成员变量
(1)当本类的成员与局部变量同名用this区分,当子父类成员变量同名的时候用super区分。
This:代表一个本类对象的引用,super代表一个父类空间。
(2)子类中不能直接使用父类中的私有内容。
2.成员方法
当子父类出现同样的方法,会运行子类函数。这种称为覆盖操作,也叫重写。
3.构造函数
构造函数中有隐式的super();
子类的实例化过程:子类中所有的构造函数默认都会访问父类中的空参构造函数。
如果父类中没有定义无参的构造函数,你怎么子类的构造函数中必须使用super表明使用哪个构造函数,当出现this的时候,super就没有了
Super 和this 只能定义在第一行,所以只能有一个。
public class Fu {
Fu(){
this(4);
System.out.println("fufu");
}
Fu(int a){
System.out.println("fuffu"+a);
}
private int num = 5;
public void show(){
System.out.println("fufufuf");
}
}
class Zi extends Fu{
Zi() {
System.out.println("zizzi");
}
Zi(int a){
super();
System.out.println("zizi"+a);
}
public void show(){
System.out.println("ziziz");
}
public static void main(String[] args) {
new Zi();
new Zi(4);
}
}
明日计划
1.代码生产的demo完成,开始熟悉项目,写项目方案。
遇到问题
1.暂无
收获
1.基础知识的加强
评论