java学习基础面向对象之this和static关键字 五-4
2017-02-10 21:41
591 查看
一、this关健字
1. 有什么用?三个代表,在类中代表对象引用成员变量
在函数中代表对象调用函数
在构造函数中代表构造函数的引用
2. 怎么用?
this只能用在方法中,代表对象的引用,因为成员变量里加载于对象创建之前.
this.成员变量名:在方法中代表对象引用成员变量
this,方法名():在函数中代表对象调用函数
格式this(变量):用于构造函数间的相互调用,而且只能放在构造函数的第一行。
然后先初始化其this调用的构造函数,再初始化本身的构造函数。
因为所有构造函数名是一样的,都是重载函数,
所以,通过变量来标记构造函数,用this去引用
3. 什么时候用?
当需要引用时?
4. 有什么特点?
this只能应用在本类中.可以修饰类的成员也可以修饰类的成员.
但凡本类功能内部使用到了本类对象,用this表示。
看到this就是有代表对象,代表哪个对象就看其所在功能被哪个对象调用。
这样就知道谁在参与运算。
二、静态(static关键字)
1. 什么是静态?
类的成员用static修饰后,就叫静态.2. 静态有什么用?
静态可以让类的成员随类的加载而加载,先于对象存在,可以真接用类名访问,不用先创建象.静态成员只在随类加载一次,并给所有对象共享,这样可以节省内存空间,不用在每个对象中生成.
3. 静态怎么用?
静态可以修饰类的成员里的成员变量,成员方法,和构造代码块.静态使用格式为:在成员前面加static 就可以.
修饰后类的成员调用格式,类名.类属性 类名.类方法
4. 静态什么时候用?
有时你希望定义一个类成员,使它的使用完全独立于该类的任何对象。通常情况下,类成员必须通过它的类的对象访问,但是可以创建这样一个静态成员,它能够被它自己使用,而不必引用特定的实例。或者一个类的成员变量,你不需要为各个对象所独有,而是由所有对象共享,任意对其改变将影响所有的对象,即当对象中出现共享数据时,使用静态修饰。
当功能内部没有访问到非静态数据时,(即对象的特有数据)那么可以使用静态修饰。
5. 静态有什么特点?
静态只能修饰类的成员变量和方法,而不能修饰局部变量静态成员可以直接通过 类名.类属性 类名.类方法
被static修饰后,类属性与类方法加载到方法区的静态区内,普通实例属性是在对象中存在,也就是说它在堆内.
static修饰后的成员属于类的,当类被创建时创建,当类销毁时销毁。它的生命周期比实例变量的生命周期长.
static修饰的属性也是有默认值的。Static属性它被类的对象所共享,实例属性是每一个对象自己的。
(在使用static方法时,要注意只能使用static成员。在实例方法中可以使用任意成员
static中不可以使用this,super关键字,为什么不能使用this关键字,因为static成员是在对象创建前就被加载的,这时还没有对象产生,所以不能用this。this 指代对象的。
静态的利于弊” 利:对对象的共享数据进行单独空间的存储,节省空间,没有必要每一个对象中都存储一份 可以被类名调用 弊:生命周期过长 访问出现局限性(静态只能访问静态)
执行优先级 静态代码块初始化----默认初始化------显示初始化------构造代码块初始化----构造函数初始化
例子工具类:
class ArrayTool { //私有化构造函数 private ArrayTool(){ } //定义一个功能获取数组中的最大值 public static int getmax(int[] arr){ int max=0; for(int x=0; x<arr.length;x++){ if(arr[max]<arr[x]){ max=x; } } return max; } //查询某个值在数组中是否存在 public static int select(int[] arr,int key){ for(int x=0; x<arr.length;x++){ if(arr[x]==key){ return x; } } return -1; } //选择排序 public static void xuanze(int[] arr){ for(int x=0; x<arr.length-1;x++){ for(int y=x;y<arr.length;y++) { if(arr[x]>arr[y]){ int temp=arr[y]; arr[y]=arr[x]; arr[x]=temp; } } } } //冒泡排序 public static void maopo(int[] arr){ for(int x=0; x<arr.length-1;x++){//控制比较的圈数 for(int y=0;y<arr.length-x-1;y++)//控制每圈比较的次数 { if(arr[y]>arr[y+1]){ int temp=arr[y+1]; arr[y+1]=arr[y]; arr[y]=temp; } } } } //数组打印 public static void pring(int[] arr) { for(int x=0;x<arr.length;x++) { if(x!=arr.length-1) System.out.print( arr[x]+","); else System.out.println( arr[x]); } } }
最后附上JDK使用文档API 下载
相关文章推荐
- 黑马程序员——Java基础语法 之面向对象(概念,特征,this,static关键字,代码块)
- 黑马程序员——Java基础---面向对象(面向对象,类,对象,匿名对象,封装,构造函数,构造代码块,this,static,main,帮助文档,静态代码块,单例)
- 黑马程序员——高新技术---Java基础语法—面向对象_构造方法,static 关键字
- 我的Java学习之路——关键字final、static、this
- Java基础学习总结(10)——static关键字
- java学习之面向对象(this,static,pakage,import)
- java基础_构造方法、this、static关键字
- java基础3--面向对象(上)(static关键字与main方法)
- java基础学习总结——static关键字
- java基础学习总结——static关键字
- Java 基础—— super关键字学习以及super与this的比较
- JAVA基础--关键字 final/static/this/super
- java基础----面向对象5(关键字的总结学习)
- 智渔课堂官方免费教程十:Java基础之关键字static和this
- java学习之路 之 面向对象编程-面向对象-关键字(this、package、import)及java中主要包的介绍
- 黑马程序员_Java基础_this,super,static,final关键字
- 黑马程序员--Java学习日记之面向对象(封装,this和static,继承)
- I学霸官方免费教程十:Java基础之关键字static和this
- [好程序员训练营]java基础笔记之static关键字的学习
- 黑马程序员 Java基础 面向对象:static关键字 main函数 单例设计模式