文档章节

Java基础6

DouDouLee
 DouDouLee
发布于 2016/05/09 11:53
字数 1193
阅读 36
收藏 0

1、变量名命名规则

只能由字母(a-z,A-Z)、数字(0-9)、下划线(_)和$组成。且标识符的第一个字符只能为字母下划线和$,不能是数字。

2、final/finally/finalize

1)final用于声明属性、方法和类,表示属性不可变、方法不可覆盖、类不可被继承。

final变量:引用不可变,只能指向初始时指向的那个对象

public class k {
 public static void main(String[] args){
  final StringBuffer s = new StringBuffer("hello");
  
  s = new StringBuffer("Hi");//编译期错误
  
}
}

final方法:不允许子类重写这个方法,子类可以使用这个方法。

final类:不能被继承,其所有方法都不能被重写。一个类不能既是abstract又是final的。

2)finally

是异常处理的一部分,只能用在try-catch语句中,经常用在需要释放资源的情况下。

3)finalize

是Object类的一个方法,在垃圾回收器执行时会调用被回收对象的finalize()方法。

public class FinalizeD {
 @Override
 protected void finalize(){
  System.out.println("finalize excute");
 }
 public static void main(String[] args){
  FinalizeD f = new FinalizeD ();
  
  /*finalize()被调用的条件, (1)类未被调用(因此被回收)(置null), (2)调用System.gc(). */
  
  f = null;
  System.gc();
 }
}/*Output:
finalize excute*/

3、static关键字

主要有两种作用:1)为某特定的数据类型或对象分配单一的存储空间。2)在不创建对象的情况下就可以用类直接调用static的方法或使用类的属性。

1)static成员变量

在内存中只有一个复制,即所有实例都指向同一个内存地址。只要其所在的类被加载这个static 变量就会被分配空间,就可以被使用:类.static变量、对象.static变量。不能在成员函数内部定义static 变量。

2)static 成员方法

是类的方法,不需要创建对象直接通过类.方法名()就可以使用,而非static方法只有通过创建对象调用。

static方法中不能使用this和super关键字(this和super属于对象的范畴,而static成员变量、方法是属于类的。this代表对本类对象的引用,指向本类已经创建的对象;而super代表对父类对象的引用,指向父类对象;静态优先于对象存在,因此静态加载后,当时需要使用的类的对象还不一定存在。还有, 静态方法是存放在内存中的数据段里,this和super调用的是堆空间里的应用对象不能调用数据段区域里的数据,因此静态方法中不能用this和super关键字。)

static的一个重要的用途是实现单例模式

package Four;

//单例模式,懒汉式:在第一次调用的时候实例化自己。构造函数必须为private
//饿汉式:在定义时就实例化自己

public class SingletonPattern {

 private SingletonPattern(){}//避免类在外部被实例化,在同一个虚拟机范围内,Singleton的唯一实例只能通过
 getInstance()方法访问。
 
 //private static SingletonPattern uniqueInstance = new SingletonPattern();
 //单例模式的一个特点是该类只有一个实例,为实现这一功能必须隐藏类的构造函数,即把构造函数声明为private,并提供一个创建对象的方法(由于构造对象为private,外界无法直接创建这个类的对象,只能通过该类提供的方法来获取类的对象,要想达到这样的目的只能把创建对象的方法声明为static)
 
  private static SingletonPattern uniqueInstance = null;
 
  //线程安全
 
 public static  synchronized SingletonPattern getInstance(){
  if(uniqueInstance == null)
   uniqueInstance = new SingletonPattern();
  
  return uniqueInstance;
 }
 
 public static void main(String[] args){
  SingletonPattern s1= SingletonPattern.getInstance();
  SingletonPattern s2= SingletonPattern.getInstance();
  
  System.out.println(s1);
  System.out.println(s2);
 }

}/*创建的是同一个实例

Out:
Four.SingletonPattern@19e0bfd
Four.SingletonPattern@19e0bfd*/
/*
 * 饿汉式
class Singleton {
  private static Singleton instance=new Singleton();
  private Singleton(){}
  static Singleton getInstance() {
      return instance;
  }
}
懒汉式
class Singleton {
  private static Singleton instance=null;
  private Singleton(){}
  static Singleton getInstance() {
      if(instance==null)
      instance=new Singleton();
      return instance;
  }
}*/

3)static代码块

JVM在加载类时执行static代码块,static代码块只会被执行一次。

public class StaticBlock{
 private static int a;
 static{
  StaticBlock.a = 1;
  System.out.println(a);
 }
 public static void main(String[] args){}
}

4)static内部类

不依赖于外部类实例对象而被实例化,而通常的内部类要在外部类实例化后才能实例化,static内部类不能与外部类有相同的名字,只能访问外部类中的static成员和static方法。

public class Outer{
 static int n = 9;
 static class Inner{
  void f(){
   System.out.println(n);
  }
 }
 public static void main(String[] args){
 
  Outer.Inner nest = new Outer.Inner(); //不依赖外部对象实例化
  
  nest.f();
 }
}

static final的变量一旦赋值就不可修改,通过类名可以访问;static final方法不可覆盖,通过类名可访问。

© 著作权归作者所有

共有 人打赏支持
上一篇: Java基础7
下一篇: Java基础5
DouDouLee
粉丝 6
博文 95
码字总数 45242
作品 0
西安
私信 提问
大数据开发培训:0基础学习Java编程语言有哪些知识点?

Java 技术通用、高效、具有平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网等,学习Java首先要知道学习知识点有哪些。在这就用加米谷大数据培训...

加米谷大数据
2018/07/25
0
0
JVM系列第1讲:Java 语言的前世今生

Java 语言是一门存在了 20 多年的语言,其年纪比我自己还大。虽然存在了这么长时间,但 Java 至今都是最大的工业级语言,许多大型互联网公司均采用 Java 来实现其业务系统。大到国际电商巨头...

陈树义
2018/11/07
0
0
Java程序设计经典300例

《Java程序设计经典300例》共分为3篇。 第1篇 基础篇(第1~5章)本篇主要内容包括:Java语言基础、流程控制、数组、字符串和面向对象编程。通过本篇的学习,读者可以掌握Java开发环境的配置...

请叫我院长
2013/12/03
402
0
web前端、c++、项目管理、java、php书籍10-40/本,转让

本人因转行,又因经济困难,所以转让一下书籍。按标价出售,人在北京。联系qq:602505 可在东城区、中关村、回龙观等地当面交易。 书新旧程度全部在9成新以上。 点击书名查看书籍介绍和原价。...

匿名网友
2011/02/24
1K
17
一份关于 Java、Kotlin 与 Android 的学习笔记

JavaKotlinAndroidLearn 这是一份关于 Java 、Kotlin 、Android 的学习笔记,既包含对基础知识点的介绍,也包含对一些重要知识点的源码解析,笔记的大纲如下所示: Java 重拾Java(0)-基础知...

叶应是叶
2018/08/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

聊聊flink的InternalTimeServiceManager

序 本文主要研究一下flink的InternalTimeServiceManager InternalTimeServiceManager flink-streaming-java_2.11-1.7.0-sources.jar!/org/apache/flink/streaming/api/operators/InternalTim......

go4it
5分钟前
0
0
Linux文件上传下载,rz和sz

yum 方式安装: 在联网的情况下,执行以上命令即可:yum install -y lrzsz rz/ sz 命令的使用 :rz 上传命令 sz 下载命令 输入命令后,会弹出上传框 选择文件上传即可 sz 下载 直接使用sz,后...

kuchawyz
14分钟前
1
0
Python中yield的理解和用法

(参考自StackOverflow上的高票解答:What does the “yield” keyword do?) To understand what yield does, you must understand what generators are. And before generators come iterab......

Goopand
14分钟前
2
0
Extjs grid选中一条记录Ajax访问后台

var s = grid.getSelectionModel().getSelections();if( s.length==1){var Meta_businessesId = '';for(var i = 0, r; r = s[i]; i++){Meta_businessesId = r.get('Meta_busine......

Moks角木
26分钟前
1
0
Java设计模式之状态模式

state的定义:不同的状态,不同的行为;或者说,每个状态有着相应的行为。 何时使用状态模式 state模式在实际使用中比较多,适合状态的切换。因为我们经常会使用ifelse语句进行状态切换,如果...

青衣霓裳
28分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部