javase笔记 day04:static关键字+数组

2019/07/04 09:31

[static关键字]
静态变量:在一个类中,需要一些特定的属性,而这些属性并不是对象的属性,而是描述类的属性,称之为"类属性"。用static修饰属性,可以通过 (类名.属性)的方式来调用 eg:public static String Pname;(调用:Person.Pname) static 关键字用来声明独立于对象的静态变量,无论一个类实例化多少对象,它的静态变量只有一份拷贝。 静态变量也被称为类变量。局部变量不能被声明为 static 变量,并不依赖于对象的创建

静态方法:public static void detail(); (调用:Person.detail()) 可以访问静态变量,但是无法直接访问成员变量(因为静态方法没有创建对象,所以拿不到对象的属性),可以通过建立对象的方式来访问 (eg:new Person.age)

静态代码块:随着类的加载而执行;只执行一次,用于初始化整个程序的初始化数据,不能访问非静态变量。 eg:static{ }

构造代码块:随着对象的创建而执行,优先于构造方法,一般用于初始化所有对象都必须初始化的数据 eg{ }

构造方法,静态代码块,构造代码块的执行顺序:静态代码块-默认值,赋初值–构造代码块-构造方法 eg:public Person(){ }
注意:一旦类被使用,那么类就被加载到java虚拟机的内部,成为了一个模板,之后再使用时,就不用再加载了,也不能被释放。静态方法或者变量只能访问静态的方法或者变量,而非静态的方法或者变量既可以访问静态的,也可以访问非静态的。

为什么main方法要加static关键字?
因为使用static可以不用实例化对象,直接使用(类名.方法)的方式来调用,没有加static就是普通方法,需要同过(对象.方法)的方式来调用。main方法不用每次都实例化对象。
在这里插入图片描述


【变量的作用域】:存在的时间、空间(在代码的什么位置能拿到它)
局部变量:定义在方法的内部、代码块中的变量
在定义的时候,就分配存储空间,方法结束时候释放,系统不会分配初始化值,需要给定初始化值,不然不能使用。局部变量在栈中分配

成员变量:定义在类中
成员变量在堆中分配,系统会赋予初始化值,引用类型的初始化值是null。对象释放时,成员变量就释放。类里面的都能访问它,类外面就要看它设置的可见性(public、private、protected等)

静态变量:定义在类中,static修饰
一旦类被使用就分配空间,直到程序结束(类销毁)才被释放。静态变量的值是可以改变的。在方法区中分配;

对象的释放:当系统永远没法拿到这个对象的时候(当系统中不存在任何指向对象的引用的时候 ),对象就可以被释放(垃圾回收机制,轮询的算法),对象在堆中分配

对象可以包含1.对象 2.组合 3.
class Person{
String name;
int age;
//注意创建对象
Head head = new Head();
}

class Head{
int width;
int height;
double weight;
}

对象包含对象时,一定要新建对象,否则会报空指针异常。可以在属性定义时进行创建,也可以在main函数当中创建,并放入到对象当中。


【数组】: --存放同类型的数据
数组的定义:
1.分配存储空间:确定长度
数组类型[ ] 数组名字 = new 数据类型 [数组长度]
eg: int[ ] a = new int[10];
2.直接赋值:不写元素长度,系统自动分配
数组类型[ ] 数组名字 = new 数据类型 [ ]{元素值1,元素值2}
eg: int[ ] b = new int[ ]{1,2,3,4,5,6}
简写:int[ ] b = {1,2,3,4,5,6} 声明时就必须同时给定值,不能分两步

使用下标访问数组元素:
下标是从0开始的整数 a[0] --第一个元素
注意:超出数组长度会发生数组索引越界异常 (ArrayIndexOutOfBoundsException)

数组元素的默认值:
整数元素的默认值:0 int、short、long、byte
浮点元素的默认值:0.0 float、double
字符元素的默认值:ascii码为0的那个字符 char
布尔元素的默认值:false
字符串元素的默认值是:null String、类

数组的遍历:
1.数组有一个属性:length(元素的个数)
for(int i = 0; i < str.length; i++){
System.out.println(a[i]);
}

2.for-each 增强for循环(能拿到元素,但是拿不到下标)
for(变量类型 变量名:遍历的事务){
System.out.println(变量名)
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值