JAVA学习笔记(初级)三

static修饰符能够与属性、方法和内部类一起使用,表示是“静态”的。该类的所有变量共享同一块内存空间(因此同一个静态变量的值对不同对象也是相同的)。static变量在类装载的时候被初始化
static的基本规则:
- 静态方法只能访问静态属性;
- 静态方法不能直接调用非静态方法;
- 如果访问权限允许,static可以使用类名或者实例调用;
- 静态方法中不存在当前对象,因而不能使用“this”或者“super”;
- 静态方法不能被非静态方法覆盖
- 构造方法不允许声明为static的;

静态import:
静态引用使人可以像调用本地方法一样调用一个引入的静态方法。例如:
要生成一个随机数
double randomNum = Math.random();
若使用静态引用,则
import static java.lang.Math.random; \\注意random必须为静态方法
double randomNum = random(); \\使用时应注意避免混淆同名函数

final修饰符声明类、属性和方法时,标记的成分具有“终态”特征,有以下规则:
- final标记的类不能被继承
- final标记的方法不能被子类重写
- final标记的变量即成为常量,只能赋值一次;
- final标记的成员变量必须在声明的同时赋值。如果声明时没有赋值,那么只能在构造方法中显式赋值
- final标记的局部变量可以只声明不赋值,然后再进行一次赋值(只有一次机会)。
- final一般用于标记那些通用性的功能、实现方式或取值不能随意被改变的成分,以免被误用。

Java 程序运行时的内存结构分成:方法区、栈内存、堆内存、本地方法栈几种。

方法区:

  1. 基本信息:
    1)每个类的全限定名
    2)每个类的直接超类的全限定名(可约束类型转换)
    3)该类是类还是接口
    4)该类型的访问修饰符
    5)直接超接口的全限定名的有序列表
  2. 每个已装载类的详细信息
    1)运行时常量池:
    存放该类型所用的一切常量(直接常量和对其它类型、字段、方法的符
    号引用),它们以数组形式通过索引被访问,是外部调用与类联系及类型对
    象化的桥梁。它是类文件(字节码)常量池的运行时表示。
    2)字段信息:类中声明的每一个字段的信息(名,类型,修饰符)。
    3)方法信息:类中声明的每一个方法的信息(名,返回类型,参数类型,修饰符,方
    法的字节码和异常表)。
    4)静态变量
    5)到类classloader的引用:即到该类的类装载器的引用。
    6)到类class 的引用:虚拟机为每一个被装载的类型创建一个class 实例,用来代表这个被装载的类。

栈内存

  1. 局部变量区
  2. 操作数栈
  3. 帧数据区

堆内存
堆内存用来存放由new 创建的对象和数组。在堆中分配的内存,由Java 虚拟机的自动
垃圾回收器来管理。

本地方法栈内存
与调用的本地方法的语言相关,如调用的是一个c语言方法则为一个c 栈。本地方法可
以回调java方法。若有java方法调用本地方法,虚拟机就运行这个本地方法。
在虚拟机看来运行这个本地方法就是执行这个java 方法。Java 通过Java 本地接口JNI(Java Native Interface)来调用其它语言编写的程序,在Java 里面用native 修饰符来描述一个方法是本地方法。

String的内存分配

String是一个特殊的包装类。

String str = new String("abc");
String str = "abc";

第一种是用new()来新建对象的,它会在存放于堆中。每调用一次就会创建一个新的对象。而第二种是先在栈中创建一个对String 类的对象引用变量str,然后查找栈中有没有存放”abc”,如果没有,则将”abc”存放进栈,并令str指向”abc”,如果已经”abc” 则直接令str指向“abc”。

比较类里面的数值是否相等时,用equals()方法;当测试两个包装类的引用是否指向同一个对象时,用==
由于String类的值不可变性(immutable),当String 变量需要经常变换其值时,应该考虑使用StringBuffer 或StringBuilder类,以提高程序效率。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值