java学习基础面向对象之this和static关键字 五-4
来源:互联网 发布:淘宝红包在哪里领取 编辑:程序博客网 时间:2024/05/17 02:18
一、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关键字 五-4
- java基础学习面向对象之final关键字 五-9
- 鸟哥Java学习之构造函数、this、static关键字-面向对象
- 黑马程序员—Java面向对象(类和对象、封装、构造方法、this关键字、static关键字)
- 黑马程序员——Java基础语法 之面向对象(概念,特征,this,static关键字,代码块)
- 面向对象之this关键字,static关键字 main
- java基础入门之五(面向对象+this)
- java基础-面向对象-this关键字
- java学习日记_25:面向对象之static关键字
- 黑马程序员--Java学习日记之面向对象(封装,this和static,继承)
- java基础总结08-面向对象4(static关键字)
- 面向对象之this 和static
- Java 面向对象之static关键字
- 面向对象之:this和super关键字
- JAVA面向对象 Part02 String常用Api , this static关键字
- (08)Java学习笔记——面向对象02——关键字this static
- Java基础之(五)Static关键字
- 黑马程序员-----java面向对象之封装、构造函数、this关键字、static静态总结*
- java强行删除文件(针对进程正在使用的文件的删除)
- linux常用命令
- Linux 检查是否安装perl模块及列出所有已安装的perl模块(安装路径、版本号)
- MFC控制台输出
- 在Android代码示例中插入新联系人
- java学习基础面向对象之this和static关键字 五-4
- 详解最长不下降子序列
- 创建一个fragment工厂类
- java 多个数组合并成一个数组,一个数组分割成多个数组!
- MongoDB-Journaling日志功能
- ionic 加载动作$ionicLoading 和加载动画 ion-spinner
- Android Studio常用设置
- java调用ant经行自动化构建
- Latex:跨页多图