文档章节

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方法不可覆盖,通过类名可访问。

© 著作权归作者所有

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

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

加米谷大数据
07/25
0
0
怎样学习java,漫谈java学习之路

Java - 近10年来计算机软件发展过程中的传奇,其在众多开发者心中的地位就如“屠龙刀”、“倚天剑”。 Java是个平台,我只想说说我对学好Java的一点看法,希望对初学者有所帮助。 1. 思考一下...

jccur
2011/08/26
0
9
一份关于 Java、Kotlin 与 Android 的学习笔记

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

叶应是叶
08/08
0
0
JAVA基础再回首(三十)——JAVA基础再回首完美结束,感概万千!

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m366917/article/details/52724939 JAVA基础再回首(三十)——JAVA基础再回首完美结束,感概万千! 经过了几...

Aduroidpc
2016/10/02
0
0
Java程序员必读书单,家族又添新成员

点击关注异步图书,置顶公众号 每天与你分享IT好书 技术干货 职场知识 参与文末话题讨论,每日赠送异步图书。 ——异步小编 有些革命出其不意地吸引了全世界的眼球。Twitter、Linux操作系统和...

异步社区
05/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

根据进程名称杀死进程

ps -ef | grep keyword | grep -v grep | awk '{print $2}' | xargs kill -9 逐个分析: 1, ps -ef | grep keyword: 查出进程名含有 keyword 的所有进程; 2, grep -v grep: 从这些结果里面,把......

vinci321
35分钟前
1
0
nginx的简单使用:负载均衡

nginx:反向代理的服务器;用户发送请求到nginx,nginx把请求发送给真正的服务器,等待服务器处理完数据并返回,再把数据发送给用户。 nginx作为一个反向代理服务器,能缓存我们项目的静态文...

osliang
51分钟前
2
0
网站title标题被改并被百度网址安全中心提醒的解决办法

国庆假日期间我们Sine安全接到众多网站站长求助网站标题被改导致在百度搜索中百度安全中心提醒被拦截,导致网站正常用户无法浏览网站被跳转到一些菠菜du博网站,而且很明显的一个特征就是在百...

网站安全
53分钟前
1
0
JDK版本与major.minor version的对照关系

其实,只需要记住jdk6对于major.minor version 50即可,其他版本自行计算即可。 ---------------------

码代码的小司机
55分钟前
1
0
C++基础教程面向对象学习笔记及心得感悟[图]

C++基础教程面向对象学习笔记及心得感悟[图] 使用友元函数重载算术运算符: C ++中一些最常用的运算符是算术运算符 - 即加号运算符(+),减运算符( - ),乘法运算符(*)和除法运算符(/...

原创小博客
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部