黑马程序员——Java基础_类及static、this关键字

来源:互联网 发布:怎么区分是不是淘宝客 编辑:程序博客网 时间:2024/04/30 03:19

 ----------------------Android培训、Java培训、期待与您交流! ----------------------

1 什么是类?

          类(class)Java 语言的最小编程单位,也是设计和实现Java 程序的基础,

          它是一组事物共有特征和功能的描述。类是对于一组事物的总体描述,是按照面向对象技术进行设计时最小的单位,也是组成项目的最基本的模块。类的概念是抽象的,类似于建筑设计中的图纸,是对于现实需要代表的具体内容的抽象。类只包含框架结构,而不包含具体的数据。所以类代表的是总体,而不代表某个特定的个体。

          举例:好比有很多人,我们就可以定义一个类来形容人的总体,人有很多特性,比如名字,年龄,性别,我们就可以在类中定义一些字段来描述这些特性,人会做吃饭睡觉这样的事情,我们就可以在类中定义一些方法来描述人做的这些事情。

类的定义格式如下:

[修饰符] class  类名{

 一个或多个构造方法;

         零个或多个字段;

     零个或多个方法;

}

类定义举例代码如下:

class Person{//属性private String name;private int age;private int sal;//方法public void show(){System.out.println("个人信息:"+name+age+sal);}}
-----------------------------分割线-----------------------------

2 关于类的构造方法

每个类都有构造方法。什么是构造方法?

          它是用来构造类的实例(每一个类都默认有一个无参的构造方法,得使用new调用)。

作用是:

          给类中的字段进行初始化,可以用来创建对象。

特点是:

          方法名与类名相同;不用定义返回值类型;不需要写return语句

对象的产生格式:

         类名称  对象名 = new  类名称();因为有(),所以是方法,实际上它就是构造方法,并且是非私有的构造方法。

如:Person p = new Person();

-----------------------------分割线-----------------------------

3 static关键字

在某些字段、方法上经常可以看见一个名为static的关键字。static关键字有什么用?

         它起了修饰作用,被它修饰过后,字段或方法将会具有以下特点:

         随着类的加载而加载

         优先于对象存在

         被所有对象所共享

         可以直接被类名调用

需要注意的是:

静态方法只能访问静态成员,但是非静态成员可以访问静态成员;

静态方法中不可以使用thissuper关键字

主方法(main)是静态的(可以利用类名去调用静态的main方法,很正常!但是会陷入死循环,导致内存溢出,jvm自动停止!

public static void main(String[] agrs){}

实例(成员)变量和类(静态)变量的区别:

1 存放位置

         类变量随着类的加载而存在于方法区中

         实例变量随着对象的建立而存在于堆内存中

2 生命周期  

         类变量生命周期最长,随着类消失而消失   

         实例变量生命周期随着对象的消失而消失

优点:

         对对象的共享数据进行单独空间的存储,节省空间,没有必要每一个对象中都存储一份,可以直接被类名调用

缺点:

         声明周期过长,访问出现局限性(它只能访问静态)

什么时候定义静态变量?   

         当对象中出现共享数据时,该数据被静态所修饰。

PS:对象中的特有数据要定义成非静态存在堆内存中。

什么时候定义静态函数呢? 

         当功能内部没有访问到非静态数据(对象的特有数据)时,那么该功能函数可以定义成静态的。

静态代码块

格式:

Static

{

静态代码块中的执行语句

}

特点:随着类的加载而执行,只执行一次,并优先于主函数。用于给类进行初始化。

如:

class StaticCode{int num = 9;StaticCode(){System.out.println("b");}static{System.out.println("a");}{System.out.println("c"+this.num);}StaticCode(int x){System.out.println("d");}public static void show(){System.out.println("show run");}static{System.out.println("e");}}class StaticCodeDemo {static{System.out.println("f");}public static void main(String[] args) {new StaticCode(4);//输出为:f a e c9 d}}

-----------------------------分割线-----------------------------

4 this关键字

与static一样经常出现的还有this关键字。

this代表了当前对象。换句话说,谁调用了当前方法,谁就是当前对象。

注意:this不能用在static修饰的方法里和static修饰的代码块里。

this语句:用于构造函数之间进行互相调用;

this语句只能定义在构造函数的第一行,因为初始化要先执行

如:

class Person{private String name;private int age;Person(String name){this.name=name;}Person(String name,int age){this(name);//即调用上面的构造函数Person(String)//this.name=name;this.age=age;}}

-----------------------------分割线-----------------------------

5 访问修饰符

还有一些常用关键字,如:public、private、protect。

         这些关键字也是起修饰作用的(不能修饰字段),它们是访问修饰符。其实访问修饰符中还有一个default,如果类或者方法前面没有访问修饰符,那么它默认就是被default所修饰。

每个修饰符后能让人访问到的范围如下:


         private 类访问权限:本类内部可以访问,不能继承到子类;
         default 什么都不写,包访问权限:本类内部可以访问,同包其他类也可以访问,同包可继承;
         protected 子类访问权限:本类内部可以访问,不同包的子类也可以访问,同包其他类也可以访问,能继承到子类;
         public 公共访问权限:任何地方都可以访问,能继承到子类。
-----------------------------分割线-----------------------------
6 对象的初始化过程
        Person p = new Person(“aaaa”,20);
该句话做了什么事情?
         1 因为new用到了Person.class,所以会先找到Person.class文件并加载到内存中。 
         2 执行该类中的static代码块,如果有的话,给,给Person.class类进行初始化。
         3 在堆内存中开辟空间,分配内存地址
         4 在堆内存中建立对象的特有属性,并进行默认初始化 
         5 对属性进行显示初始化
         6 对对象进行构造代码块初始化 
         7 对对象进行队形的构造函数初始化 
         8 将内存地址赋给栈内存中的变量




 ----------------------Android培训、Java培训、期待与您交流! ----------------------


          
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 我在农村不当队长我当代表怎么办 北京本地人社保中间断了一年怎么办 我想把大哥的孩子带出国要怎么办 美国有亲戚想让孩子出国怎么办 连接温控器的线断了怎么办 植发后好多原生发都脱落了怎么办 4岁宝宝支体能力差怎么办 当与游客发生矛盾时员工怎么办 顾客与同事发生矛盾你该怎么办 当一个人犯下的过错难以原谅怎么办 开车把别人撞成植物人了该怎么办 结婚证丢了孩子上不上学了怎么办 办房产证前加户主姓名怎么办手续 孩子上学户口跟房产不在一起怎么办 我家小孩被别的家长打了怎么办 要是小孩骗家长说老师打他怎么办 孩子在学校被家长打小孩怎么办 小孩在学校被老师打淤青家长怎么办 小孩和家长一吵架就说死怎么办 王者荣耀号被别人家长联接了怎么办 儿子12岁总是跟大人顶嘴怎么办 课堂上有学生和你顶嘴你怎么办 小孩看到大人吵架就哭了 怎么办 五年级的孩子叛逆爱发脾气怎么办 6个月孩子多动怎么办呀 小孩被大人打了很生气该怎么办 小孩在学校调皮被老师打了怎么办 四岁宝宝咳嗽半个月了怎么办 三岁宝宝咳嗽半个月了还不好怎么办 孩子在幼儿园不听话天天罚站怎么办 孩子个性太强脾气太倔不听话怎么办 孩子有十七了太不听话了怎么办 小孩的学籍填错了怎么办还能改吗 生完孩子后脾气暴躁易怒怎么办 生完孩子之后变懒了怎么办呀? 孩子三年级了成绩不突出家长怎么办 自私势力的父母想把我害死怎么办 父母如果养出自私的孩子怎么办 大人得了地图舌怎么办要怎么治疗 请问我家小孩有心理儿问题怎么办 想离婚妻子拿孩子命威胁怎么办