static String hobby;
这个变量称为静态变量或类变量,类加载时在方法区中的静态区并赋予初值,由于静态变量是先于对象而存在的,
可以通过对象来调用,也可通过类名直接调用,
由于该类创建的所有对象存储的是静态属性在静态区中的地址值,所有静态属性是被所有对象所共享的。
静态属性尽量少用--共享导致不安全
1.静态变量可以定义在方法中吗? --不可以,静态变量是在类加载的时候加载并初始化,方法随类加载而加载到方法区,但没有执行,在方法被调用的时候执行
2.可以在构造函数中定义静态变量吗? --不可以,因为构造函数在创建对象时才被调用
3.可以在构造代码块中初始化静态变量吗 --可以(静态先加载,构造代码块后执行)
4.this调静态变量? --可以
1.System.out.println();不是静态方法//out是对象
2.静态方法中可以定义静态变量吗?--不可以,静态方法加载到静态区只是存储在静态区,并没有执行,被调用到时才会到栈内存才执行,方法执行才分配空间。
3.静态方法可以直接调用本类中的非静态方法吗?--不行(非静态方法和属性通过对象来调用,静态的先于对象存在)
4.主函数可以使用this吗?--不可以(static方法中不能用this)
5.静态函数可以重载吗?--可以(重载:方法名一致,参数不一致,不要求修饰符和返回值)
6.静态方法可以重写吗?--不可以(验证:@Overrid 上造型调用)
7.父子类可以存在方法签名完全一致的静态方法吗?--可以
8.父子类存在方法签名一致的时候,要么两者都是静态要么两者都是非静态。 - 重写和重载--多态针对的是对象,从对象的层面来看的;静态是从类层面来看的 - 多态针对的是方法而言的
class Demo{
static{
}
}
**静态优于对象而存在**
**父类优于子类而存在**
1. 创建子类前,先创建父类
2. 加载父类
3. 执行父类静态代码块
4. 执行子类静态代码块
5. 父类构造代码块
6. 父类的构造方法
7. 子类构造代码块
8. 子类构造方法
例1:
int i=5;
{
i=6;
}
结果i=6
例2:
{
i=3;
}
int i=1;
编译不报错,执行结果为i=1
例3:
{
i=1;
i+=1;
}
int i=1;
编译报错
package com.peng.demo;
public class DE1 {
final int i;
}
编译出错
package com.peng.demo;
public class DE1 {
final int i;
{
i = 9;
}
}
编译通过
abstract class Pet{
abstract void eat();
}
class Dog extends Pet{
void eat(){
}
}
interface a{
public static final int PI=3.14;
public abstract void add(int a):
}
package com.peng.demo;
public class DE1 implements a, b {
/*冲突
@Override
public int a() {
return 0;
}
*/
}
interface a {
int a();
}
interface b {
String a();
}
大数据预科班作业13 1. (File 类)以下关于 File 类说法正确的是: 2. (File 类)有如下代码: 3. (File 类)将下列代码补充完整 4. (流的分类) 5. (字节流, FileInputStream) 6. (FileInputStream)下面关于 FileInputStream 类型说法正确的是: 7. (FileOutputStream)填空: 8. 代码改错 ...
大数据预科班18 序列化与反序列化流 将一个对象进行完整保存的过程--序列化--持久化 序列化是持久化的一种方式 反序列化--将对象完整还原回来 注意事项--类实现序列化接口,标记该类的对象可以序列化 Serializable--没有属性和方法,只是标记类可以被序列化 静态属性用static修饰,那么该属性不会被序列化出去--没有必要序列化出去(类加载的时候static就存在了) 反序列化 tra...
大数据预科班第五天 复习 数组:定义好长度不可变、类型不可变 二维数组:二维数组中的每一个元素都是一维数组 定义格式:数据类型[][] 数组名=new 数据类型[二维数组的长度(或者称为包含一维数组的个数)][每一个一维数组的长度]; 获取具体的数据需要两个下标; 第一的[]的值必须有,第二个可有可无;写第二个参数注意使用时必须初始化再使用,否则将报NullPointExeception; []放...
大数据预科班第四天 复习 判断语句(if、if-else、if-else-if) 选择结构(switch-case) 循环结构(while、do-while、for 如果循环体只有一句,可以省略{},do-while必须有{}) 数组 本质:一组数的容器,数组对每一个存入的数字都会自动编号,编号从0开始–即下标 数组定义格式:数据类型[] 变量名=new 数据类型[数组大小或者元素的个...
大数据预科班第六天 复习 二维数组:数组的数组,每一个元素是一个二维数组。 函数:传参,对于基本类型传递的是实际值;对于引用数据类型,传递的是地址 函数重载:函数名一致,参数不一致 函数的递归:函数自己调用自己,当递归次数比较多的时候,会出现栈溢出错误:StackOverFlowError 面向对象 万物皆对象 通过对抽取出共同的属性和方法,抽象成一个类。 通过new关键字来创建对应类的一个实例(...
大数据预科班作业7 1. (继承、this 和super 关键字)有以下代码 Super() Sub() Super() Sub() Sub(int) Super(String) Sub(String) 2. (super)看下面代码,写出程序运行的结果 m1() in Sub m1() in Super m2() in Super 3. (多态)有如下代码 编译不通过 4. (多态)有如下代码:...
大数据预科班7 复习 1. 类与对象的关系:类是对象的概括,对象是类的具体化 2. 成员变量和局部变量:定义位置、作用域、存储位置、生命周期 3. 构造函数:与类名相同,而返回值类型(注:“类型”),可以重载--创建对象,初始化属性;任何一个类中都有构造函数 4.this关键字--代表当前对象的引用 5. this语句--用于在本类的构造函数中调用其他构造函数this放首行...
大数据预科班作业9 1. (Object 类)在Object 类中,定义的finalize 方法在______时调用,toString()方法返回值表示,equals 方法的作用为,getClass 方法作用为__________ 2. (toString 方法,equals 方法)写出Object 类中toString 方法的签名,以及equals 方法的签名 3. (toString 方法)写...
串讲1 方法参数的传递 形式参数 基本类型(在栈里面存的)改变不影响实际参数(特殊的比如说:String) 引用类型(在堆里面存的)影响实际参数 注意引用数据类型中的String(方法区中有个字符串常量池) Debug视图 Debug管理界面 Variables变量界面 BreakPoints断点界面(记得清理断点) Expression View表达式界面 Console控制台 Display编...
大数据预科班11 复习 String--代表字符串,最终类;String是一个常量,不可被重写;String可以被共享;不同方式下,String对象的个数不同; String s =new String("a");//创建了两个对象 字符串不可变 indexOf返回指定字符串第一次出现的下标【从0开始】(string/int s,int fromIndex)从下标为fromIn...