Java基础3-数组操作;类概述

昨日内容回顾

  1. 数据类型

    • 基本数据类型
      1) byte, short, int, long, float, double
      2) boolean[true, false]
      3) char
      100: 默认为int
      1.2: 默认为double

    • 引用类型
      1) class
      2) interface
      3) [],数组

  2. 函数

    • 作用: 封装功能代码

    • 不能嵌套定义

    • 函数的结果返回给调用者

    • 函数定义格式

         [修饰符][返回值类型][函数名](类型1 参数1, 类型2 参数2,...){
         }
      
    • 函数调用格式: 函数名()

    • 函数重载:overload

    • 递归:recursive, 自己调用自己

  3. 指针

    • java没有指针是指没有显示的指针操作
    • 引用就是指针
    • 指针是对象的内存地址
  4. 堆:heap, Object head

  5. 栈:stack, 方法栈

  6. 面向过程编程: c, 面向方法。粒度

  7. 面向对象: oop, oriented object program.面向对象编程

    • 相关概念
      1) class : 类,类是对象的抽象, 对现实世界的事物的软件抽象。
      2) Object : 对象,对象是类的实例。new 类名
      3) instance : 实例. 就是对象。
    • 特征
      1) 封装
      2) 继承
      3) 多态

作业解析

  1. 负数的表现形式,为什么如此设计?
    补码形式存放,保证正负求和为0

  2. -128是在内存中是如何存储的?推算过程?

     124 = 0111 1100 | -124 = 1000 0100
     125 = 0111 1101 | -125 = 1000 0011
     126 = 0111 1110 | -126 = 1000 0010
     127 = 0111 1111 | -127 = 1000 0001
                     | -128 = 1000 0000
    
  3. 如果字节表示为11111111,则其真实数据是多少?
    -1

  4. 正负数是否都支持补码的方式?

     1 = 0000 0001 | -1 = 1111 1111
     127 = 0111 1111 | -127 = 1000 0001
    
  5. 正数是否是负数的减一取反?

     -127 = 1000 0001 ---> 
     1000 0000 ---> 
     0111 1111 = 127
     
     -1 = 1111 1111 --->
     1111 1110 --->
     0000 0001 = 1
    
  6. 空心三角形

     /*
         *
        * *
       *   *
      *******
      
     */
     public void printTriAngle(){
         int n = 4;
         for(int i=1;i<=n;i++) {
             for(int j=1;j<=2*n-1;j++) {
                 if(i==1) {
                     if(j==n) {
                         System.out.print("*");
                     }
                     else {
                         System.out.print(" ");
                     }
     			
                 }
                 else if(i==n){
                     System.out.print("*");
                 }
                 else {
                     if(j==(n-i+1) || j==(n+i-1)) {
                         System.out.print("*");
                     }
                     else {
                         System.out.print(" ");
                     }
                 }
             }
             System.out.println();
         }
     }
    
  7. 倒三角空心

     public void printInverseTriAngle(){
         int n=4;
         for(int i=1;i<=n;i++) {
             for(int j=1;j<=2*n-1;j++) {
                 if(i==1) {
                     System.out.print("*");
                 }
                 else if(i==n) {
                     if(j==n) {
                         System.out.print("*");
                     }
                     else {
                         System.out.print(" ");
                     }
                 }
                 else {
                     if(j==(n-(-i+n))|| j==(n+(-i+n))) {
                         System.out.print("*");
                     }
                     else {
                         System.out.print(" ");
                     }
                 }
             }
             System.out.println();
         }
     }
    
  8. [定义函数]
    add // +
    subtract // -
    multiple // *
    divide // /
    支持float,doule,long,int。//函数重载.

     public int add(int a,int b){
         return a+b;
     }
     public int add(float a,float b){
         return a+b;
     }
    

数组

  1. 容器,同一种数据类型的集合。

  2. 通过下表,以0为基址。

  3. 定义数组
    类型[] 名称 = new 类型[数字];
    类型[] 名称 = new 类型[]{};
    int x[] = new int[];
    int[][] arr = new int[][];
    int[][][] arr = ...

  4. 数组越界异常:java.lang.ArrayIndexOutOfBoundsException

  5. 空指针异常:java.lang.NullPointerException

网络命令

  • ipconfig //查看ip地址
  • ping 192.168.12.7 //测定指定的地址是否连通
  • ping www.baidu.com //测试外网的连通情况
  • ping www.baidu.com -t //测试网络持续连通情况

数组的操作

  1. 选择排序

     //3 1 2 5 4 --->
     //1 3 2 5 4 --->
     //1 2 3 5 4 --->
     //1 2 3 5 4 --->
     //1 2 3 4 5
     public static void selectSort(int[] arr){
         for(int i=0; i<arr.length-1;i++){
             for(int j=i+1; j< arr.length;j++){
                 if(arr[i]>arr[j]){
                     int temp = arr[i];
                     arr[i] = arr[j];
                     arr[j] = temp;
                 }
             }
         }
         //增强for循环
         for(int ii : arr){
             System.out.print(ii+" ");
         }
         System.out.println();
     }
    
  2. 冒泡排序
    每次都将最大的沉到底部

     //5 3 4 2 1 --->                         
     //3 4 2 1 5 --->                        
     //3 2 1 4 5 --->
     //2 1 3 4 5 --->
     //1 2 3 4 5
     //arry.length
     for(int i=arry.lengh-1;i>0;i--){
     	for(int j = 0;j<i;j++){
     		if(arr[j]>arr[j+1]){
     			int temp = arr[j];
     			arr[j] = arr[j+1];
     			arr[j+1] = temp;
     		}
     	}
     }
    
  3. 折半查找
    在有序的数列中,进行二分法查找,每次取出搜索范围的中间值进行比较,依次再进行范围的缩小,直至找到所需要的值。

     public static int halfFind(int[] array,int num){
         int min = 0;
         int max = array.length-1;
         while(min<=max){
             int mid = (min+max)/2;
             //找到了
             if(array[mid] == num){
                 return mid;
             }
    
             //范围落在左半边
             if(array[mid]>num){
             max = mid - 1 ;
             }
             //范围落在右半边
             else{
                 min = mid + 1;
             }
         }
         return -1;
     }
    

  1. 类的属性也叫成员变量。

  2. 类的方法也叫成员函数。

  3. 成员变量有默认的初始化值。

  4. 局部变量没有默认的初始化值。

构造函数

  1. 没有返回值

  2. 函数名和类名相同。

  3. 默认的构造函数是 ClassName()

匿名对象

this : 关键字,对象内部指向自身的一个指针。

javabean

  1. 私有属性;

  2. 标准的getter/setter方法.

作业

  1. 定义一个函数,函数功能是动态提取int[]中元素的最大值。

  2. 定义一个函数,从数组中查询指定的元素首次出现的位置。

  3. 定义函数,完成冒泡排序,大数下沉。

  4. 折半查找。

  5. 定义一个函数,实现矩阵的转置.arr[i][j] == arr[j][i];//前提条件是正方的。

  6. 遍历三维组数,横向输出三维数组的每一个层。

  7. 定义一个类:Dog 有名称 color age cry();

  8. 阐述出来堆区,栈区,何时出现溢出,如何解决。

  9. 将一个字节转换成0~255之间的整数:将符号位作为数字位

  10. 对数组进行冒泡排序(实现倒序),封装成方法,返回排序后的数组

  11. 实现数组的拷贝,将一个数组中的元素复制到另一个数组中,如果元素个数不等,或者截取,或者回绕。

  12. 输出整数的二进制表示方式

  13. 选择排序

posted @ 2018-09-13 13:41  Shinesu  阅读(126)  评论(0编辑  收藏  举报