Java SE 04

输出数组地址

int[] arr = new int[4];
      int[] arr2 = new int[3];
      System.out.println(arr); //输出的为数组的地址值 : [I@5fd0d5ae
      System.out.println(arr2);//  [I@2d98a335

i

数组的地址赋值

int[] arr = {1,2,3};
 int[] arr2 = arr; //将arr的地址赋值给arr2
 //修改arr2的第二个元素为8
        arr2[1] = 8;
        System.out.println(arr[1]);  // 8

数组越界

  //数组越界 两种可能;1.数组下标越界  2.数组中没有空间 
        System.out.println(arr[3]);   //ArrayIndexOutOfBoundsException
  //数组的空指针异常
        //意味着arr将不会保存数组的地址,也就是不允许再操作数组了
      arr = null;
     System.out.println(arr[0]);//NuLLpointerException
案例

创建一个数组,并对这个数组进行反转

public class ArrayDemo04 {
    public static void main(String[] args) {
//方法一:
        int flag  = 0;
        int[] arr = {1,2,3,4,5};
        for (int i = 0; i < arr.length / 2 ; i++) {
            flag = arr[i];
            arr[i] = arr[(arr.length - 1) - i];
            arr[arr.length -1- i] = flag;
        }
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + "\t");
        }
//方法二:
        int[] arr = {1,2,3,4,5};
        int[] arr2 = new int[5];
        for (int i = 0; i < arr.length; i++) {
            arr2[i] = arr[arr2.length - 1 -i];
            System.out.print(arr2[i] + " ");
        }
        /**
         * for(初始化条件1,初始化条件2;循环条件;步进运算1,步进运算1)
         * 定义 min = 0 最小索引值 , max = arr.length - 1 最大索引值
         */
//方法三:      
         int[] arr = {1,2,3,4,5};
          for (int min = 0, max = arr.length -1;min <= max ;min++,max--){
            int temp = arr[min];
            arr[min] = arr[max];
            arr[max] = temp;
        }
       //重新遍历反转的数组
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]);
        }
        }
    }

数组作为方法的参数进行传递

public class ArrayDemo05 {
    public static void main(String[] args) {
        sayHello("lbf" );
        int[] arr = {1,3,5,7,9};
        printArray(arr);//调用方法,实际上是传递数组地址,而不是真实的值
    }

        public static void sayHello(String name){
       System.out.println("hello" + name);
    }
    //之前我们看到的方法都是基本数据类型作为参数的
    //使用数组作为方法的参数
//    public static void printArray(形参 实参){
//
//    }
//      public static void printArray(数据类型 变量值){
//
//   }
    public static void printArray(int[] arr) {
        //想要打印出数组,我们可以使用for循环遍历
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
    }
}

数组作为方法的返回值

注:

  • 一般方法没有返回值时用void
  • 方法有返回值不用void,要用return;
public class ArrayDemo06 {
    public static void main(String[] args) {
        int[] arr = getArray();
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
    }
    public static int[] getArray(){
        int[] arr = {1,2,3,4,5};
        //返回数组的地址,返回给调用者
        return arr;
    }
}

面向对象编程

对象:泛指现实中一切的事物,每个事物都有自己的【属性】和【行为】
  • 面向对象强调:通过调用对象的行为去实现功能,而不是自己去一步一步实现
  • 举例:
  • 洗衣服:
  • 面向过程:把衣服脱掉 --》找盆--》洗衣粉--》加水--》泡一下--》搓搓搓--》拧干--》晾起来
  • 面向对象:把衣服托电--》打开全自动洗衣机--》扔衣服--》开关--》晾起来
  • 面向过程:强调步骤
  • 面向对象:强调对象
  • 面向对象特点:将复杂的事情简单化,我们从执行者变成了指挥者
  • 面向对象包含三大基本特征:封装、继承、多态
封装实际上是将属性封装起来,属性变为私有的,要提供公有的方法对其进行访问

private 代表最小权限
可以修饰成员变量和成员方法
被private修饰的成员变量和成员方法,只有在本类才能访

   private String name;
    private int age;

类和对象

类:可以看成一类事物的模板,在面向对象编程中,使用属性和行为来描述类

  • 在现实中:
  • 属性:该事物的状态信息
  • 行为:该事物能干什么

对象:是一类事物的具体体现

  • 对象是类的一个实例,对象就必然具备该类事物的属性和行为
  • 举例:猫类
  • 属性: name:tom; weigh:5kg; age:2 ;skin:black 行为:溜墙根走,蹦跶,喵喵叫 lbf的一只猫(是一个实例也是一个对象)

类与对象的关系:

  • 类是对一类事物的描述,抽象的
  • 对象是一类事物的实例,具体的
  • 类是对象的模板,对象是类的实体
  • Car()类 lbf买了一辆奥迪—————》对象

类在Java中的定义

  • 现实中的一类事物
  • 属性:事物的状态信息 行为:事物能干什么
  • Java中和现实是一致的
  • 成员变量:对应事物的属性 ,成员的方法:对应事物的行为
  • 成员变量:和之前定义变量一样,只不过位置变了,在类中,在方法外
  • 成员方法:只不过我们要将以前的方法static去掉(static: 静态方法,静态方法中不能访问非静态成员方法和非静态成员变量,但是在非静态成员方法中是可以访问静态成员方法/变量)

类的使用

Java中通过创建对象去使用类
格式:
类名 对象名 = new 类名()
返回值类型 具体的对象名字 = new 类();

我们通过对象去访问类中的成员
格式:
对象名.成员变量
对象名.成员方法()

案例:

public static void main(String[] args) {
        //调用 学生类
        //1.创建类 类名 对象名 = new 类名()
        Student s = new Student();
        //2.打印这个对象
        System.out.println(s);//com.company.Student@2d98a335  包名+十六进制地址
        //3.访问其中的成员变量
        System.out.println("姓名"+s.name);//null
        System.out.println("年龄"+s.age);//0
        System.out.println("--------------------");
        //4.给成员变量赋值
        s.name = "熏悟空";
        s.age = 500;
        //再次输出变量
        System.out.println("姓名"+s.name);//熏悟空
        System.out.println("年龄"+s.age);//500
        System.out.println("--------------------");
        //6.调用成员方法
        s.study();
        s.eat();
    }
}
成员变量的默认值

为成员方法提供公有的get方法(访问获取属性)、set方法(修改属性)

例子:

public class StudentInfo {
    private String name;
    private int age;
    //为成员方法提供公有的get方法(访问获取属性)、set方法(修改属性)
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setName(int age) {
        this.age = age;
    }
   //this的含义
    //this 代表所在类的当前对象的引用(地址值),即对象自己的引用
    //  方法被哪个对象调用,方法中的this就代表哪个对象。
    //  即谁在调用,this就代表谁

案例:



最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一:java概述:1,JDK:Java Development Kit,java的开发和运行环境,java的开发工...
    ZaneInTheSun阅读 2,843评论 0 11
  • Win7下如何打开DOS控制台? a:开始--所有程序--附件--命令提示符 b:开始--搜索程序和文件--cmd...
    逍遥叹6阅读 1,737评论 4 12
  • 1.import static是Java 5增加的功能,就是将Import类中的静态方法,可以作为本类的静态方法来...
    XLsn0w阅读 1,465评论 0 2
  • 面向对象主要针对面向过程。 面向过程的基本单元是函数。 什么是对象:EVERYTHING IS OBJECT(万物...
    sinpi阅读 1,240评论 0 4
  • 第一天 1.关键字 在Java中关键字是不能设置成为变量名、方法名、包名、类名的! 2.标识符 程序员自己定义的名...
    炙冰阅读 649评论 0 0

友情链接更多精彩内容