JAVA2011第二周总结

1.switch语句

1.switch
选择结构语句之switch它的标准结构:
switch(表达式){
case 值1:
语句1;
break ;
case 值2:
语句2;
break ;


default:
语句n+1;
break ;

}
执行流程:
首先switch中的表达式(值)和case后面值1先进行匹配,如果成立,执行语句1, 遇见break 结束了;
如果不成立,继续判断case 值2和表达式(值)是否匹配,如果成立,执行语句2,break,结束;
如果还不成立,继续依次判断case 后面的值是否匹配…
如果上面的case都不匹配,那么执行default中的语句,遇见break 结束!
switch语句中的注意事项
1)case语句的后面只能是常量,不能是变量

  2)关于break的意思: 结束,中断*   

switch语句的结束条件
(1) 遇见break结束!
(2) 程序默认执行到末尾!

  3)default语句可以放在switch语句中的任何位置,不影响程序的流程,但是
 如果在语句中,break不能省略的,如果在末尾,break 可以省略!

4)如果default语句在语句中,break语句不能省略,否则造成case穿透现象!(没有遇见break,不会和case进行比较,直接依次执行)

2.for循环

for循环的格式
for(初始化语句;条件判断语句;步长语句(控制体语句)){
循环体语句;
}

流程:
1)先执行初始化语句对变量进行赋值(只执行一次)
2)判断条件语句是否成立,如果成立,执行 循环体语句
3)执行步长语句(++,–)
4)继续判断条件是否成立,如果还成立, 执行 循环体语句
5)继续执行步长语句(++,–)


n)当前条件不成立,for循环结束

3.while循环

while循环的格式
基本格式

  while(条件表达式){
      循环体语句;
      控制体/步长语句;
  }

扩展格式
初始化语句;
while(条件判断语句){
循环体语句;
控制体/步长语句;
}
流程:
初始化语句执行一次
判断条件是否成立,成立,则执行循环体,再依次执行步长语句;

如果不成立,while循环语句结束!
while和for的区别
1)格式不同
2) 并且从内存角度考虑:

       for循环的 格式:  for循环语句外面不能够访问变量的,因为它随着for循环执行完毕,main方法结束之后,变量就会被GC(垃圾回收器)回收掉这些变量
       while循环的扩展格式:循环结束,依然可以访问变量; 在内存中占用资源空间大于for循环

3)如果明确循环次数,优先使用for
不明确循环次数,使用while循环
break的使用场景:
switch语句中,循环语句中使用
while和for的区别
1)格式不同
2) 并且从内存角度考虑:

       for循环的 格式:  for循环语句外面不能够访问变量的,因为它随着for循环执行完毕,main方法结束之后,变量就会被

GC(垃圾回收器)回收掉这些变量
while循环的扩展格式:循环结束,依然可以访问变量; 在内存中占用资源空间大于for循环

3)如果明确循环次数,优先使用for
 不明确循环次数,使用while循环

在程序中出现—死循环

   在循环的过程中,没有控制变量,导致程序中永远"恒成立"

   for(;;){
       语句;
   }


   while(true){

     语句...
   }

4.do-while循环

do-while循环
格式

初始化语句;
do{
循环体语句;
步长语句/控制体语句;
}while(条件表达式) ;

流程:
初始化语句执行一次,对变量进行赋值
执行循环体语句,
执行步长语句(++或者–)
判断while后的条件是否成立,成立,继续执行循环体语句…
不成立,语句结束!

do-while循环和for循环以及while循环的最大的区别就是:循环体至少执行一次!

    //控制台输出5次"helloworld"
   // int i = 1 ;
    int i = 6 ;
    do{
        System.out.println("helloworld") ;
        i++;
    }while(i<=5) ;
}

5.for循环嵌套

  •  for(初始化语句;条件表达式;步长语句){
    
  •      //内层循环是外层循环的循环体语句
    
  •      for(初始化语句;条件表达式;步长语句){
    
  •              循环体语句;
    
  •      }
    
  •  }
    

将内层循环看成是外层循环的循环体语句;
需求:
控制台输出
形(4行5列的*)

    for(int x = 0; x < 4 ; x ++ ){//x =0 ,1,2,3  //控制行数

       for(int y = 0 ; y < 5; y++){//y =0,1,2,3,4 //控制列数
            System.out.print("*") ;
        }
        System.out.println() ;
    }

6.跳转控制语句

break :中断,结束
continue : 继续(循环中使用,结束当前循环,立即进入下一次循环)
return :结束方法(和方法相关)

break
break :单独不能使用
1)在循环中和switch中用
循环中:
单层循环中使用
2) for循环嵌套中使用
标签语句
在外层循环
和内层循环的外面使用 标签名:外层循环/内层循环
break 后面跟标签名称;

33列的*
 *                wc:for(int x = 0 ; x < 3 ;  x ++){
 *                      nc:for(int y = 0 ; y <3 ; y ++){
 *
 *                      }
 *
 *                  }
 *
 */
public class BreakDemo {

    public static void main(String[] args){
         //break ; //单独使用不了

      /*  for(int x = 0 ; x < 10 ; x ++){

            if(x == 3){
                break ; //单层循环中使用
            }
            System.out.println(x) ; //0,1,2,
        }*/

      //for循环的嵌套:3行4列的*
        //带标签的语句:很少用(了解)
        wc:for(int x = 0 ; x < 3 ; x ++){
           nc: for(int y = 0 ; y < 4 ; y++){
                if(y==2){
                    //break wc ; //break 标签名称;
                    break nc; //结束内层循环
                }
                System.out.print("*");
            }
            System.out.println() ;
        }
        System.out.println("----------------------------") ;



        System.out.println("over") ;
    }
}

continue
continue : 继续(循环中使用,结束当前循环,立即进入下一次循环)
*

  •  应用场景:循环中使用
    
 面试题
          补全空白处代码
          for(int x =1 ; x <=10 ; x ++){
 *             if(x % 3== 0){
 *                 ____补全代码______
 *             }
 *             System.out.println("Java基础班") ;
 *        }
 *        需求:
 *        1)想在控制台输出输出2"Java基础班"
 *              break
 *        2)想在控制台输出7"Java基础班"
 *              continue
 *        3)想在控制台输出13"Java基础班"
 *                 System.out.println("Java基础班") ;
 */
public class ContinueDemo {
    public static void main(String[] args){

        //一个for循环
        for(int x = 1 ; x <= 10 ; x ++){

           // if(x == 3){
            if(x % 3 ==0){
                continue;//结束当前循环,立即进入下一次循环
            }

            System.out.println(x) ;
            //1,2,4,5,7,8,10
            //0,1,2,4,5,6,7,8,9
        }
        System.out.println("over") ;
    }

}

  • return
    return:要结合方法使用的,一般很少单独使用

```java
public class ReturnDemo {

    public static void main(String[] args){

        System.out.println("程序开始了..") ;
        for(int x = 0 ; x <10 ;x ++){
            if(x == 2){
                System.out.println("中途退出了...") ;
                //break ;
               // continue;
                return ; //方法终止了!
            }

            System.out.println(x) ; //0,1
        }

        System.out.println("voer,结束了...") ;

    }

7.方法

在Java中什么是方法呢?
方法 (一个独立的代码块{}):将共性内容抽取出来,使用{}包裹起来,为{}起名字 举例:
植物大战僵尸—豌豆芽–发送炮弹
发送炮弹(是一个程序)要在任何地图上都要使用,给发送炮弹这个程序 抽取出来
给独立起一个名字使用{}将代码包裹起来 ,将名字–方法名,每次 "发送炮弹"地方,只需要调用方法名即可!
重点:
如何定义一个方法
第一种格式:有具体返回值(数据类型)的方法

     形式参数列表
权限修饰符 + 静态修饰符 + 具体的返回值类型 + 方法名(数据类型1 变量名1 ,数据类型2 变量名2 ,....){
              //完成的业务逻辑
              return 结果;
        }             

详细解释:

  •  权限修饰符 :public
    
  •  静态修饰符:static(带上)
    
  •  具体的返回值类型:数据类型 (目前学习过的基本类型:没有告诉什么类型,都是默认int)
    
  •  方法名: 符号 标识符的规则: 小驼峰命名法:
    
  •              一个单词:字母全部小写
    
  •              多个单词:第一个单词小写,从第二个单词开始:每个单词首字母大写
    形式参数列表:
            数据类型1(目前学习过的基本类型:没有告诉什么类型,都是默认int) + 参数名1(变量名) ,  数据类型2 参数名2..
    return :结束方法: 必须返回具体结果;
    

定义方法有两个明确:
1)明确返回值类型
2)明确参数类型以及参数个数
调用方法:
1)单独调用:(没有输出)没有意义
2)输出调用:输出:写死了,不利于值的进一步操作
3)赋值调用(推荐)
定义方法的注意事项:
1)方法与方法是平级关系 ,不能再一个方法中定义另一个方法 (不能再方法中定义)
2)Java是强类型语言 (语法结构非常严谨) 弱类型语言:前端:javascript (定义方法:不需要携带数据类型)

      定义形式参数:必须携带数据类型

3)调用方法的时候
数据类型 变量名 = 方法名(实际参数列表) ;实际参数如果定义了,传递参数,不需要携带类型

4)目前我们定义的方法都是有方法体的 (有左大括号"{ 的地方不能有分号; 有分号;的地方不能有左大括号"{" )
权限修饰符 + 静态修饰符 +返回值类型 +方法名(形式参数列表){
}
没有具体返回值类型的方法定义以及如何调用
Java语法规定:当一个方法没有具体返回值类型的时候,使用void 代替

2)方法的重载

Java提供一个技术:方法重载 (overLoad)
含义:
多个方法的方法名相同,参数列表不同,与返回值无关 —将这些方法称为"方法重载" ------- 面向对象部分:(继承) 方法重写(override)
参数列表不同有两种情况
1)参数个数不同 (参数类型一致)
2)参数类型不一致(参数个数一致)

8.数组概述

数组是存储多个变量(元素)的东西(容器)
这多个变量的数据类型要一致

数组概念
数组是存储同一种数据类型多个元素的集合。也可以看成是一个容器。
数组既可以存储基本数据类型,也可以存储引用数据类型。
数组定义的格式
格式1:数据类型[] 数组名;
格式2:数据类型 数组名[];
1:针对数组定义两种格式,推荐使用第一种格式。因为第一种的可读性更强。
*注意:这两种定义做完了,数组中是没有元素值的。
数组的初始化
数组初始化概述
Java中的数组必须先初始化,然后才能使用。
所谓初始化:就是为数组中的数组元素分配内存空间,并为每个数组元素赋值。
数组的初始化方式
动态初始化:初始化时只指定数组长度,由系统为数组分配初始值。
静态初始化:初始化时指定每个数组元素的初始值,由系统决定数组长度。
动态初始化
初始化时只指定数组长度,由系统为数组分配初始值
格式:数据类型[] 数组名 = new 数据类型[数组长度];
数组长度其实就是数组中元素的个数。
举例:
int[] arr = new int[3];
解释:定义了一个int类型的数组,这个数组中可以存放3个int类型的值。
引用类型:一旦对象创建了,地址值永远固定,除非重新new 新的对象,才产生一个新的地址!
Java中的内存分配
Java 程序在运行时,需要在内存中的分配空间。为了提高运算效率,就对空间进行了不同区域的划分,
因为每一片区域都有特定的处理数据方式和内存管理方式。
栈 存储局部变量
堆 存储new出来的东西
方法区(面向对象部分讲)
本地方法区(和系统相关)
寄存器(给CPU使用)
1:局部变量
a:方法定义中或者方法声明上的所有变量
b:使用完毕,立即消失2:new出来的东西,实体,对象。
new int[3];
a:每一个实体都有首地址值
b:每一个实体内的数据都有默认值
byte,short,int,long 0
flfloat,double 0.0
char ‘\u0000’
boolean false
引用类型:null
c:使用完毕后,会被垃圾回收器空闲的时候回收。
其实讲解完堆和栈的区别,大家就能够理解刚才为什么输出的是地址和0了。
静态初始化
初始化时指定每个数组元素的初始值,由系统决定数组长度。
格式:
数据类型[] 数组名 = new 数据类型[]{元素1,元素2,…};
举例:
int[] arr = new int[]{1,2,3};
解释:定义了一个int类型的数组,这个数组中可以存放3个int类型的值,并且值分别是1,2,3。
其实这种写法还有一个简化的写法
int[] arr = {1,2,3};
注意事项:
int[] arr = new int[5]{11,22,33,44,55} ;
//错误的:数组初始化只能有一种:不能既动态初始化,又静态初始化
数组中常见的两个小问题
数组索引越界
ArrayIndexOutOfBoundsException
访问到了数组中的不存在的索引时发生。
出现错误的原因:
开发者在书写代码的时候导致,角标值超出了数组的长度
解决方案: 只要正常访问角标值就可以
空指针异常
NullPointerException
数组引用没有指向实体,却在操作实体中的元素时
出现的原因:
某个对象(数组)已经为null了,堆内存中没有空间地址值了,开发者还试图访问这个对象(数组)中的元素,就会有问题
解决方案:
针对对象:进行逻辑判断
如果对象不为null,再去访问;
将一个数组进行逆序排列

  /**
     *定义一个逆序的方法
     * 两个明确:
     *  1)明确返回值类型:void (没有具体返回值类型)
     *  2)明确参数类型以及参数个数
     *   int类型的数组,1个参数
     *
     *
     * int a= 10 ;
     * int b = 20 ;
     * 交互a,b的值
     */
    public static void reverse(int[] arr){//数组
        //第一次互换
        //中间变量 (开发中常用)
        /*int temp = arr[0] ;
        arr[0] = arr[arr.length-1-0] ;
        arr[arr.length-1-0] = temp ;

        //第二次互换
        temp = arr[1] ;
        arr[1] = arr[arr.length-1-1] ;
        arr[arr.length-1-1] = temp ;*/

        //第三次互换
        //..
        //...

        // 保证当前元素的范围:角标0开始  数组长度/2
        for(int x = 0 ; x < arr.length/2 ;x ++){
            //定义中间变量
            int temp = arr[x] ;
            arr[x] = arr[arr.length-1-x] ;
            arr[arr.length-1-x] = temp ;
        }

    }

    //遍历的功能
    public static void printArray(int[] arr){
        System.out.print("[") ;
        //遍历元素
        for(int x = 0 ; x < arr.length ; x ++){//x表示角标值0,
            //判断:x是否为最大索引值:如果是最大索引值,取到最后一个元素了arr[arr.lenght-1]
            if(x == arr.length-1){
                System.out.println(arr[x]+"]");
            }else{
                //中间的元素
                System.out.print(arr[x]+", ") ;
            }

        }
    }

查询数组角标的方法

//定义一个数组,静态初始化
        int[] arr = {13,67,89,100,230,97} ;

        //调用:获取角标值的方法
        //int index = getIndex(arr, 67);
        // System.out.println("index:"+index) ;
        int index = getIndex(arr, 200);
        System.out.println("index:"+index) ;
        System.out.println("-----------------------");
        int index2 = getIndex2(arr,97) ;
        int index3 = getIndex2(arr,500) ;
        System.out.println("index2:"+index2);
        System.out.println("index3:"+index3);
    }

9.面向对象

前面我们讲过数组,当有多个数组都需要遍历时,我们可以将遍历的代码封装到方法中,需要遍历时,就调用相应
的方法即可,提高代码的复用性。在对数组遍历的基础上继续增加需求,比如获取最值,数值逆序等,同样需要将
这些功能封装到相应的方法中。这样继续封装会发现方法越来越多,于是就想能不能将这些方法继续进行封装呢?
通过前面的讲解我们知道类是可以存放方法的,所以,我们就考虑使用类封装来这多个方法,将来再做数组的操作
时,不用去找具体的方法,先找到这个类,然后使用这个类中的方法。这就是面向对象思想的编程方式。
面向对象思想概述以及特点
思想概述:

面向对象是基于面向过程的编程思想
特点:
1.是一种更符合我们思想习惯的思想
2. 可以将复杂的事情简单化
3. 将我们从执行者变成了指挥者角色发生了转换
面向对象思想举例
买电脑
吃饭
洗衣服
万事万物皆对象
类与对象关系
我们学习编程语言,就是为了模拟现实世界的事物,实现信息化。比如:去超市买东西的计费系统,去银行办业务的系统。 我们如何表示一个现实世界事物呢: 属性 就是该事物的描述信息 行为 就是该事物能够做什么
举例:学生事物 我们学习的Java语言最基本单位是类,所以,我们就应该把事物用一个类来体现。
类与对象关系
类:是一组相关的属性和行为的集合
类—Java中的最基本单元
对象:是该类事物的具体体现(应该是指定的某个类中具体的事物)

类的定义
现实世界的事物 属性 人的身高,体重等 行为 人可以学习,吃饭等Java中用class描述事物也是如此
成员变量: 就是事物的属性
成员方法: 就是事物的行为 定义类其实就是定义类的成员(成员变量和成员方法)
1:成员变量 和以前定义变量是一样的,只不过位置发生了改变。在类中,方法外。
2:成员方法 和以前定义方法是一样的,只不过把static去掉,后面在详细讲解static的作用。

面对对象的基本特点

面向对象本质就是基于面向过程:


  面向过程:代表语言就C语言
    需求:给定义数组,获取数组中的最大值
     1)创建数组
     2)遍历数组
     3)业务逻辑判断
       假设法(定义一个参照物是最大值)
       遍历数组时候,将后面的元素依次和它比较
       如果后面的元素比它大,后面的元素就是最大值
     4)输出结果...

   面向对象:代表就是Java


   生活中的例子:

        买电脑:
            面向过程:
                    1)制定自己的需求(什么的电脑配置)
                    2)去赛格电脑城
                    3)讨价还价
                    4)支付价钱
                    5)买到电脑

            面向对象:
                   1)制定自己的需求(什么的电脑配置)
                   2)找一个懂行的朋友(面向过程)
                   3)他给我买到电脑

        做饭
            面向过程:
                    1)买菜
                    2)讨价还价
                    2)摘菜
                    4)洗菜
                    5)切菜
                    6)炒菜
                    7)出锅...

            面向对象:
                   1)找一个对象
                   2)等待出锅..

        洗衣服:
            面向过程:
                    1)脱下脏衣服
                    2)找一个盆
                    3)加入洗衣液_水
                    4)将衣服泡一泡
                    5)搓一搓
                    6)透一透
                    7)拧一拧
                    8)晾一晾...


            面向对象:
                    1)脱下脏衣服
                    2)全自动洗衣机
                    3)一键完成..


生活中处处皆对象...
    面向对象的思想特点:
        1)更符合生活中的思想行为习惯
        2)将复杂的事情简单化
        3)让我们从执行者变成指挥者(角色发送变化了)



    Java语言的面向对象特征:
        封装,继承.多态!

    Java面向对象语言设计原则:
        可以不断的创建对象,使用对象,然后指挥对象做事情!

      键盘录入数据:
            Scanner类  ---- 完成对象 的创建以及录入的数据


  需求:
    将大象装进冰箱!

  伪代码
    面向过程:一步一步分析,一步一步完成

            测试类:Demo
            class Demo{
                public static void main(String[] args){

                    open() ;//开冰箱门

                    in() ;//将大象装进去


                    close() ;//关闭冰箱门
                }

                /*
                    定义冰箱开门的功能
                */
                public static void open(){
                    输出---"打开冰箱门"
                }

                /*
                    定义一个大象进去的功能
                */
                public static void in(){
                    输出---"将大象装进去"
                }

                /*
                    定义冰箱关门的功能
                */
                  public static void close(){
                         输出---"关闭冰箱门"
                 }
            }


    面向对象:  Java语言:---最基本的单元是类

             将大象装进冰箱!

             1)分析有哪些类
             2)类中有什么东西
               大象类---进去的功能
               冰箱--- 开门和关门的功能
               测试类---main方法---主程序(程序的入口)

           分析:UML :名词提前法
           大象----大象类
           冰箱----冰箱类
           测试类:Demo

           class 大象类{
                public static void in(){
                    System.out.println("大象进去...") ;
                }
           }


           class 冰箱类{

               public static void open(){
                    System.out.println("打开冰箱门") ;
               }

                 public static void close(){
                     System.out.println("关闭冰箱门") ;
                 }
           }


           测试类:Demo

           class Demo{
                public static void main(String[] args){

                        //能够创建冰箱类对象
                        冰箱类对象.open() ;
                        //如果能够创建大象类对象
                        大象类对象.in() ;
                        冰箱类对象.close() ;
                }

           }


类与对象的关系

---Java中的最基本单元
    描述现实世界事物的属性和行为的集合!


    描述现实世界真是存在的事物:
分析:
    学生事物

        属性:姓名,年龄,身高,性别
        行为: 学生 主要学习
              学生可以玩游戏(会玩高端:吃鸡游戏/steam:战地/....)



    将上面的分析真实存在的事物-----变成Java代码(程序方式描述)


    学生类 (统称)
        将事物的属性-----成员变量(类中,方法外)
                        (name,age,high,gender)

        将事物的行为-----成员方法(和我们之前学习的方法是一样的,去掉static)
                                public 有返回值类型 方法名(形式参数列表){
                                        return 结果;
                                }

                             public void 方法名(形式参数列表){
                                     输出...
                              }

类和对象的关系
    对象:应该是指定的某个类中具体的事物
    学生事物
                张三
                李四


    class Student{
        //定义成员变量 (学生事物的属性)
        //定义成员方法(学生事物的行为)

    }

    //测试类中

        对象:描述具体事物
        创建对象的格式:
        类名 对象名 = new 类名() ;
        Student s = new Student() ;

        //给学生赋值:姓名,年龄,身高,性别
        对象名称.成员变量= 赋值;
        //使用学生的行为:访问成员方法
        对象名.方法名() ;

匿名对象
匿名对象:就是没有名字的对象。
是对象的一种简化表示形式
匿名对象的两种使用情况
对象调用方法仅仅一次的时候
作为实际参数传递
匿名对象:顾名知意: 没有名字的对象
类名 对象名 = new 类型() ; 有名字的对象

//1:new Student().show();
//2:new StudentTest().method(new StudentDemo());

匿名对象的格式:
new 类名() ;
new 类名().成员方法名() ; 访问当前类中的成员方法
特点:
1)匿名对象:使用完毕,会立即垃圾回收器回收,节省内存空间!
应用场景:都是在移动端使用居多—Android :基于Java (大部分都是使用匿名对象,节省内存)
2)开发中,匿名对象使用一次即可,不要使用多次! (使用完毕,就立即被回收)
3)匿名对象可以作为参数传递
封装
Java提供一个关键字:private 封装
封装概述
封装概述
是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
好处:
隐藏实现细节,提供公共的访问方式
提高了代码的复用性
提高安全性。
封装原则:
将不需要对外提供的内容都隐藏起来。
把属性隐藏,提供公共方法对其访问。

/**
 * 需求:
 *      学生事物,
 *          属性:姓名,年龄,性别
 *          行为:学习,爱好...
 *
 *        使用Java程序描述学生事物并且进行测试
 *
 * 注意:
 *      同一个包下(文件夹)不能存在同一个类名
 *
 *
 *
 *
 */
class Student2{

    //成员变量私有化
    private String name ; //姓名
    private int age ; //年龄
    private String sex ;//性别


    //对外提供成员变量的公共的访问
    //setXXX(xxx):赋值
    //getXXX():获取值

    //给姓名赋值 的成员方法
    public  void setName(String n) { //"高圆圆"
        name = n ;  //name = "高圆圆"
    }

    //获取name的成员方法
    public  String getName(){

        return name ; //"高圆圆"
    }

    //给年龄赋值
    public void setAge(int a){ //a=23
        age = a ;//23
    }

    //获取年龄的值
    public int getAge(){
        return age ;//23
    }

    //给性别赋值
    public void  setSex(String s){//s="女"
        sex =  s ;
    }

    //获取性别
    public String getSex(){
        return sex ; //"女"
    }
    //成员方法
    public void study(){
        System.out.println("学习JavaEE...");
    }
    //爱好
    public void hobit(){
        System.out.println("爱生活,爱Java...");
    }
}
//测试类
public class StanderClass {
    public static void main(String[] args){

        //创建一个具体的对象:
        //类名 对象名 = new 类名() ;
        Student2 s = new Student2() ;

        //给成员变量
       /* s.name = "高圆圆";
        s.age = 23 ;
        s.sex = "女" ;*/

       //name,age,sex 三个属性已经私有化了,只能本类中访问,外界不能访问
        //外界访问----通过公共的访问方法来访问:

        //提供公共访问
        s.setName("高圆圆");
        s.setAge(23);
        s.setSex("女");

       // System.out.println(s.name+"---"+s.age+"----"+s.sex);

        System.out.println("学生的姓名是:"+s.getName()+",年龄是:"+s.getAge()+",性别是:"+s.getSex());
        s.study();
        s.hobit();
    }
}

关键字
1)private关键字
private关键字:
是一个权限修饰符。
可以修饰成员(成员变量和成员方法)
被private修饰的成员只在本类中才能访问。
private最常见的应用:
把成员变量用private修饰
提供对应的getXxx()/setXxx()方法
一个标准的案例的使用
2)this关键字
this:代表所在类的对象引用
记住:
方法被哪个对象调用,this就代表那个对象

/**
 * 学生类
 *
 *
 *  n,a,s----分别代表:姓名,年龄和性别
 *  *       定义变量:标识符的规则:---见名知意
 *  *       改造---将n--name
 *  *              a  -- age
 *  *              s  --sex
 *
 *  发现:没有办法区分:哪一个name,age,sex是局部变量还是成员变量
 *
 *  Java提供了一个关键字-----this    (解决----局部变量将成员变量隐藏了)
 *
 *      this:代表当前这个类的对象的地址值引用
 */
public class Student {

    //属性私有化
    private String name ;//姓名
    private int age ;//年龄
    private String sex ;//性别

    //提供对外的公共的访问方法
//    public void setName(String n){
    public void setName(String name){
       this.name = name ;
    }

    public String getName(){
//        return this.name ;
        return name ; //return 里面隐藏了this关键字(一般不写)
    }

//    public void setAge(int a){
    public void setAge(int age){
       this.age = age ;
    }
    public int getAge(){
        return age ;
    }

//    public void setSex(String s){
    public void setSex(String sex){
        this.sex  = sex ;
    }
    public String getSex(){
        return sex;
    }

    //成员方法
    public void study(){
        System.out.println("学习JavaEE...");
    }
    //爱好
    public void hobit(){
        System.out.println("爱生活,爱Java...");
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值