黑马程序员------Java中static修饰符及应用
来源:互联网 发布:淘宝食品代理公司注册 编辑:程序博客网 时间:2024/06/05 02:29
------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------
static 静态修饰符:可以修饰类中的成员变量,成员函数
在静态区里放着,可以节省内存,静态只加载一次,不在堆内存中
静态的成员先开辟内存,非静态的是在创建对象时才在堆中开辟内存
特点:1、被静态修饰的成员变量,其所有对象共享该变量的值
2、静态的是随着类的加载就在方法区中的静态区开辟了内存,所以静态的优先于非静态的先出现
3、静态的既可以通过对象访问,也可以直接通过类名访问(person.country)
弊端:1、因为静态时随着类的加载就在方法区中的静态区开辟了内存,所以生命周期太长,占用内存时间长
非静态成员变量和静态变量的比较:
1:生命周期:非静态成员变量时随着对象的出现而出现,随着对象的被垃圾回收而释放内存
静态的是随着类的加载就在方法区中的静态区开辟了内存,随着类的消失才消失
2:存放位置:非静态成员变量存储在堆中
静态变量成员变量存储在方法区的静态区中
3:存放的数据:非静态成员变量存放的是每个对象特有的数据
静态成员变量存放的是所有对象共享的数据
4:调用方式 非静态成员变量只能通过对象调用
静态成员变量既可以通过对象调用,也可以使用类名调用
什么时候用静态:
成员变量:该成员变量的值需要被所有对象共享
成员函数:当该成员函数没有用到它所在类中任何非静态成员
因为静态只能用静态,所以只要函数中用到非静态成员,就不能是静态函数
*/
class person
{
String name;//实例变量
static String country;//类变量
//非静态的方法既可以使用静态的成员变量,也可以使用非静态的成员变量
public void show(){//实例方法
System.ou.println(this.name+this.country);
}
//静态的方法只能使用静态的成员变量,静态方法中不能使用this
public static void fun(){//类方法
System.ou.println(country);
}
}
class Test1
{
public static void main(String[] args){
person ren=new person();
ren.name="张龙";
ren.show();
System.out.println(ren.country);
System.out.println(Person.country);
}
static 静态修饰符:可以修饰类中的成员变量,成员函数
在静态区里放着,可以节省内存,静态只加载一次,不在堆内存中
静态的成员先开辟内存,非静态的是在创建对象时才在堆中开辟内存
特点:1、被静态修饰的成员变量,其所有对象共享该变量的值
2、静态的是随着类的加载就在方法区中的静态区开辟了内存,所以静态的优先于非静态的先出现
3、静态的既可以通过对象访问,也可以直接通过类名访问(person.country)
弊端:1、因为静态时随着类的加载就在方法区中的静态区开辟了内存,所以生命周期太长,占用内存时间长
非静态成员变量和静态变量的比较:
1:生命周期:非静态成员变量时随着对象的出现而出现,随着对象的被垃圾回收而释放内存
静态的是随着类的加载就在方法区中的静态区开辟了内存,随着类的消失才消失
2:存放位置:非静态成员变量存储在堆中
静态变量成员变量存储在方法区的静态区中
3:存放的数据:非静态成员变量存放的是每个对象特有的数据
静态成员变量存放的是所有对象共享的数据
4:调用方式 非静态成员变量只能通过对象调用
静态成员变量既可以通过对象调用,也可以使用类名调用
什么时候用静态:
成员变量:该成员变量的值需要被所有对象共享
成员函数:当该成员函数没有用到它所在类中任何非静态成员
因为静态只能用静态,所以只要函数中用到非静态成员,就不能是静态函数
*/
class person
{
String name;//实例变量
static String country;//类变量
//非静态的方法既可以使用静态的成员变量,也可以使用非静态的成员变量
public void show(){//实例方法
System.ou.println(this.name+this.country);
}
//静态的方法只能使用静态的成员变量,静态方法中不能使用this
public static void fun(){//类方法
System.ou.println(country);
}
}
class Test1
{
public static void main(String[] args){
person ren=new person();
ren.name="张龙";
ren.show();
System.out.println(ren.country);
System.out.println(Person.country);
}
}
/
静态的应用:工具类
工具类中的方法都是静态的,使用者可以直接通过类名调用,不用创建对象
为了不让使用者创建对象,怎么办?
让构造函数不能被使用!---构造方法私有化
工具类中的方法一般都是静态的
静态代码块:随着类的加载就执行一次,只执行一次,优先于main的执行
如果有静态代码块,执行静态代码块
构造代码块给当前所有类中对象经行初始化
构造函数只能对对应的一个对象初始化
对象初始化的过程:
1、如果有静态代码块,执行静态代码块
2、在堆内存中开辟内存空间
3、对变量进行默认值的赋值
4、对变量进行显示赋值
5、执行构造代码块
6、执行构造函数
7、把内存首地址赋给栈中内存
class StaticDemo
{
static int num=5;
String name="赵虎";
static{
System.out.println(num);
}
public static void show(){
System.out.println("d");
}
}
class Test4
{
static.out.println("b");
public static void main(String[] args)
{
StaticDemo.show;
System.out.println("Hello World!");
}
static{
System.out.println("c");
}
}
0 0
- 黑马程序员------Java中static修饰符及应用
- 《黑马程序员》java笔记->【02】static静态修饰符
- 黑马程序员--java基础--static 和 final 修饰符
- 黑马程序员------修饰符---static final
- 黑马程序员--Java修饰符
- 黑马程序员——java中static关键字的应用
- Java中static修饰符
- java中static修饰符
- java中static修饰符
- static修饰符的作用及应用
- static修饰符的作用及应用
- 黑马程序员_004_private、static、final、abstract修饰符
- 黑马程序员_访问修饰符 static final
- 黑马程序员:Java中的修饰符
- 黑马程序员---java 访问修饰符
- 黑马程序员--Java之fianl修饰符
- 黑马程序员-java中static的使用
- Java中关于static修饰符
- 87 2.求最大连续递增数字串
- 计算机类核心期刊投稿心得(转载)
- 服务器IIS asp.net中.aspx映射
- static HashMap犹如程序之外的一张表
- varnish与squid的比较
- 黑马程序员------Java中static修饰符及应用
- hdu-5019
- Unity3d NGUI的使用(四)(TexturePacker与UIAtlas生成prefabs)
- 87 3 实现strstr功能,即在父串中寻找子串首次出现的位置。
- ORACLE 中ROWNUM用法总结!
- 如何修改MySQL字符编码?
- Android手机平台的发展和现状
- Oracle运算符
- 88.2005 年 11 月金山笔试题。编码完成下面的处理函数。