[关闭]
@nextleaf 2018-08-08T09:57:19.000000Z 字数 2299 阅读 830

2018-08-06 工作日志

工作日志 Java 多态


上午


下午


总结

今天老师不仅讲了非访问修饰符static、静态代码块的特点及用法,还讲了堆栈内部存储的一些知识,画了个图让我们理解,在课堂的最后,老师讲了数组的初始化。


详细

1.1非访问修饰符

为了实现一些其他的功能,Java 也提供了许多非访问修饰符。

static修饰符,用来修饰类方法和类变量。
final修饰符,用来修饰类、方法和变量,final修饰的类不能够被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,是不可修改的。
abstract修饰符,用来创建抽象类和抽象方法。
synchronizedvolatile 修饰符,主要用于线程的编程。

1.1.1 static 修饰符

对类变量和方法的访问可以直接使用 classname.variablename 和 classname.methodname 的方式访问。

注:
在Java中能够影响到访问权限的只有private、public、protected(包括包访问权限)这几个关键字。
static是不允许用来修饰局部变量。

  1. package com.nl.statictest;
  2. /**
  3. * Created with IntelliJ IDEA 2018.
  4. * Description: static 关键字用来声明独立于对象的静态变量,无论一个类实例化多少对象,它的静态变量只有一份拷贝。
  5. * 静态变量也被称为类变量。
  6. * 局部变量不能被声明为 static 变量
  7. * User: 14472
  8. * Date: 2018-08-06
  9. * Time: 9:25
  10. */
  11. public class User {
  12. String username;
  13. int userage;
  14. //类属性,随着类加载而加载
  15. static int usernumber=0;
  16. static {
  17. //通常用于初始化变量的时候
  18. System.out.println("静态代码块");
  19. }
  20. public User() {
  21. System.out.println("class User");
  22. usernumber++;
  23. }
  24. public User(String username, int userage) {
  25. this();//调用空构造方法
  26. this.username = username;
  27. this.userage = userage;
  28. }
  29. public void thinking(){
  30. System.out.println(username+"thinking");
  31. }
  32. public static void worldPeace(){
  33. System.out.println("世界和平");
  34. }
  35. public static void main(String[] args){
  36. User user=new User("黄",12);
  37. user.thinking();
  38. System.out.println(User.usernumber);
  39. //晚期对象能调用早期属性
  40. //System.out.println(user.usernumber);
  41. User user1=new User("sun",12);
  42. System.out.println(user1.username);
  43. new User();
  44. System.out.println(User.usernumber);
  45. User.worldPeace();
  46. //不应该通过类实例访问静态成员
  47. // Inspection info:避免通过一个类的对象引用访问此类的静态变量或静态方法,无谓增加编译器解析成本,直接用类名来访问即可
  48. user.worldPeace();
  49. }
  50. }

1.2堆栈

划了个图

栈:

函数中定义的基本类型变量,对象的引用变量都在函数的内存中分配。
栈内存特点,数数据一执行完毕,变量会立即释放,节约内存空间。
栈内存中的数据,没有默认初始化值,需要手动设置。

堆:

堆内存用来存放new创建的对象和数组。
堆内存中所有的实体都有内存地址值。
堆内存中的实体是用来封装数据的,这些数据都有默认初始化值
堆内存中的实体不再被指向时,JVM启动垃圾回收机制,自动清除

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注