A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© shuaiqi_P_D 中级黑马   /  2015-6-11 22:00  /  334 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1、封装概述(掌握)
1、概念(掌握)
     是指隐藏对象的属性和实现细节,仅对外提供公共的访问方式(换句话说就是将属性私有化,并提供共有的方法访问)

2、private关键字(理解)
     可用于修饰成员内容,包括成员变量和成员方法
     被他修饰完毕后的内容,在其他类中是不能直接访问的,换句话说就是被private修饰的内容只能在本类中使用
3、注意(掌握)
     private仅仅是封装的一种体现,因为类,函数等其实也是一个封装的体现

4、为什么要写getter/setter方法(掌握)
     从思想上来说,因为属性私有化,只能在本类使用,其他类要想使用就需要提供get方法和set方法
     从需求上来讲,set和get方法 不一定必须出现,他俩是相互独立的
     而且set方法和get方法的名字可以随便起,只不过形成一个规范了,大家通过方法给私有属性赋值的时候,形成一个默认的规则,就是给属性赋值的方法以set开头,获取属性值的方法以get开头

2、构造方法(掌握)
1、构造方法的特点(掌握)
     A、方法名必须和类名保持一致
     B、没有返回值类型并且没有具体的返回值

2、构造方法的作用(掌握)
      给对象的属性初始化

3、注意事项(理解)
     A、如果没有明确给出构造方法,那么系统会默认给出一个无参构造方法
     B、只要明确给出构造方法,系统将不在提供无参构造(以后必须手动给出无参构造,因为可以避免很多错误发生
     C、构造方法的重载体现在参数列表不同
     D、(自己补充)构造方法的重载是构造方法的重载,方法的重载是方法的重载,两者没有关系,即使构造方法名和普通方法名一样,他们也不存在重载

4、给私有的成员变量赋值的方式(掌握)
     A、通过set方法,推荐使用
     B、通过构造方法
     C、在定义成员变量的时候手动赋值(private String name = “yongliang”;)
     //D、通过反射中的Field类的对象给对象的属性赋值(以后学)

5、一个类中构造方法应该定义几个?
     这个没有具体的规定,自己想写几个就写几个,看需求。可以一个都不写,系统会提供一个默认的,我一般都会定义一个无参构造,和一个有参构造,该有参构造初始化该类中的所有成员变量

3、构造方法和setter方法区别(理解)
1、区别
     构造方法是在创建对象的时候给成员变量赋值,并且只能赋值一次
     set方法是在创建完对象以后对成员变量的值进行修改,或者赋值,可以多次
     最终目的:都是给成员变量赋值,只不过实现方式不一样

2、总结
     爱用哪个用哪个
4、this关键字(掌握)
1、概念(理解)
     this代表其所在方法所属对象的引用,哪个对象调用方法,方法内部就有一个隐含的this代表这个对象(谁调用,this就代表谁)(重点)
     简单点说:谁调用,this代表谁
2、应用场景(作用)
     用于解决局部变量隐藏成员变量的问题
     简单点说:通过this关键字可以直接调用成员变量
5、封装/this之标准代码(掌握)

1、以后我们必须按照这样去写
2、有这样一个问题,有些同学说构造方法是给成员变量赋值的,set方法也是
给成员变量赋值的,到底用哪个?
首先他们都是给成员变量赋值的,但是构造方法是在初始化对象的时候赋值,并且只能给成员变量赋值一次。而set方法是在初始化完对象之后给对象赋值的,可以无限次调用赋值。
总结:想用哪个用哪个,看心情

6、代码块(掌握)
1、概述
     由{}扩起来的代码称之为代码块,类或者方法也可认为是代码块,但是一般不这么说,我们平时所说的代码块指的是孤零零的{}
2、代码块作用
     局部代码块作用
     让变量尽可能早的从内存中消失,提高效率
     构造代码块作用是
     把所有构造方法中的共同的内容定义在构造代码块中,提高代码复用性,代码块先于构造方法执行,但是一般不用,最终目的初始化成员变量
     工作中用的很少,主要应对面试
7、对象初始化过程(掌握)

class Person{
private String name = “haha”;
private int age = 10;
{
System.out.println(name + “***” + age);
naem = “hello”;
age = 20;
System.out.println(name + “***” + age);
}

//get… set…
}

Person p = new Person();
System.out.println(p.getName() + “***” + p.getAge());

A:把 Person.class文件加载到内存 (类加载器 )
B:在栈内存开辟一个变量空间,给 p使用
C: new Person()就会在对内存中开辟空间
D:方法进方法区,有类名做标记,并且,同时成员变量进堆内存并给出了默认初始化值
name:null
age:0

E:对成员变量进行显示初始化 (是因为定义成员变量的时候给赋值了 public int age = 34;)
name:hello
age:20
F:如果有构造代码块,可以在构造代码块中对成员变量赋值
name :world
age:30

H:到此为止,对象初始化完毕
I :把堆内存对象的首地址赋值给栈内存的 p变量

8、static关键字概述(理解)
1、概述
     1、static 可以修饰成员变量和成员方法
     2、被static修饰的成员有一个最大的特点,就是可以被该类下所有的对象共享

2、什么时候用
     多个对象共享某一数据的时候,我们就把这个数据用static修饰.举例:小鸡吃食
3、特点(掌握)
     1、被static修饰的内容随着类的加载而加载,优先于对象存在
     2、可以直接通过类名调用
     3、被该类下所有对象共享

4、注意事项
     1、在静态方法中是没有this关键字,因为静态是随着类的加载而加载。而this是对象创建才存在的
     2、静态方法只能访问静态成员变量和静态成员方法 一句话 静态只能访问静态
     3、静态内容可以通过对象调用,也可以通过类名调用。推荐使用类名调用

9、不同JAVA文件中类的方法的调用(理解)
     一个Java文件里面的类去调用另一个JAVA文件里面的类,编译的时候有两种方式,例如A类调用B类
     第一种方式:先编译B类,在编译A类
     第二种方式:直接编译A类,B类会自动编译
10、帮助文档制作(了解)
     javadoc -d doc -author -version Demo.java
     -d 文件目录 (这表示当前目录doc文件夹)
     author –version需要提取的信息
11、Math类功能的使用(掌握)
1、Math中的常量
E,PI
比任何其他值都更接近 e(即自然对数的底数)的 double 值。

2、Math中的方法
abs()绝对值
ceil 大于等于参数的最小整数,返回double
floor 小于等于参数的最大整数,返回double
round() 四舍五入
random() 随机数
max(x,y) 获取两个数中的最大值

//求绝对值
pubilc static int abs(int num)
public long abs(long num)
public float abs(float num)
pbulic double abs(doble num)

//ceil:天花板
public static double ceil(double num)//返回大于等于参数的最小整数 ,返回值是double 类型
//floor :底板
public static double floor(double num)//返回小于等于参数的最大整数 ,返回值是double 类型
//round :四舍五入
public static int round(float num)//
public static long round(double num)//四舍五入

//最大值
public static double max(double num1, double num2);
public static float max(float num1, float num2)
public static int max(int num1, int num2)
public static long max(long num1, long num2)

//随机数
public static double random();

12、案例(掌握)
1、如何获取1-100之间的随机数
     //注意一个问题:我们在学习JAVA中一般都是包左不包右所以random的结果是0-1 大于等于0,小于1
double random = Math.random();

//结果大于等于 0小于100 ,边界值问题:最小值 0,最大值99.99999999....
random = random * 100;
//现在的范围就是大于等于 1,小于等于100.999999
random = random +1;
int result = (int)random;

评分

参与人数 1黑马币 +20 收起 理由
黄小橙 + 20 很给力!

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马