首页 > 编程语言 >学习日记 Day3. Java 3

学习日记 Day3. Java 3

时间:2022-09-01 18:11:21浏览次数:48  
标签:Java String int Day3 日记 static 数组 array public


title: Day3 Java 3
date: 2022-08-29 22:20:14
tags: Java


Java 个人总结 3

位运算符

位运算效率极高。

A = 0011 1100
B = 0000 1101
---------------------------
A&B = 0000 1100 且
A|B = 0011 1101 或
A^B = 0011 0001 异或
~B = 1111 0010 取反

Q: 对于计算机来说,更快地计算2*8=?
A: 位运算,2 << 3 = 16

包机制

为了更好地组织类 Java提供了包机制,用于区别类名的命名空间
一般利用公司域名倒置作为包名:com.uwupu.blog
在类里需要添加 package com.uwupu.blog

JavaDoc 文档注释

/**
 * 类注释
 * @author uwupu 作者
 * @version 1.0  版本
 * @since 1.8    JDK版本
 */
public class UDoc {
    String name;  // 类变量

    /**
     * 方法注释
     * @author uwupu 作者
     * @param name  参数
     * @return       返回值
     * @throws Exception 抛出
     */
    public String uTest(String name) throws Exception{
        return name;
    }
}

生成文档

在类所在文件夹中打开终端,执行以下命令,可以生成类的文档。
javadoc -encoding UTF-8 -charset UTF-8 类名.java

增强的for循环

.JDK 5 引入用于数组和集合的循环

public class ForDemo {
    public static void main(String[] args) {
        int[] ns = {10,20,30,40,50};
        for ( int i : ns){
            System.out.println(i);
        }
        /*
        结果:
            10
            20
            30
            40
            50
         */
    }
}

方法重载

规则:

  1. 方法名必须相同;
  2. 参数必须不同;
  3. 方法返回类型可以相同也可不同;
  4. 仅仅返回类型不同不足以成为方法的重载;

命令行传参

public static void main(String[] args)中的args即为参数。

public class Args {
    public static void main(String[] args) {
        for(String i : args){
            System.out.println(i);
        }
    }
}

可变参数

.Java 1.5开始,可以通过“...”来创建可变参数

public class Demox3 {

    public static void main(String[] args) {
        Demox3.printMax(123,123,234);
    }
    public static void printMax(double... numbers){
        for(double i : numbers){
            System.out.println(i);
        }
        /*
        结果:
        123.0
        123.0
        234.0
         */
    }
}

注意

  1. 若有多个参数,将可变参数放在最后一个;
  2. 一个方法只能有一个可变参数。

数组创建

在Java中,一般用DataType[] arrayRefVar;方式声明数组变量,一般不用DataType arrayRefVar[];

创建数组用new DataType[];

public class Array {
    public static void main(String[] args) {
        int[] nums; //定义
        nums = new int[10]; //创建并赋值
        int[] nums2 = {1,2,3}; //静态初始化
    }
}

内存分析

堆:

  1. 存放new的对象和数组;
  2. 可以被所有的线程共享,不会存放别的对象引用。

内存


栈:

  1. 存放基本变量类型(会包含这个基本类型的具体数值);
  2. 引用对象的变量(会存放这个引用在堆里面的具体地址)。


方法区:

  1. 可以被所有的线程共享;
  2. 包含了所有的class和static变量。

内存分布

其他

数组下标越界异常:ArrayIndexOutOfBoundsException

数组

  1. 数组是引用类型。一旦分配,会被隐式地初始化。
  2. 长度是确定的,一旦被创建,不可改变;
  3. 数组中的元素可以是任何数据类型,包括基本类型和引用类型;
  4. 数组对象本身在堆中。

Arrays类

数组工具类:java.util.Arrays

Arrays.toString(数组)方法可以将数组转换为字符串;
Arrays.sort(数组) 将数组排序。
Arrays.fill(数组,值) 将数组填充为指定值。
Arrays.fill(数组,开始,结束,值) 将从开始到结束的位置设置为指定值。

冒泡排序

时间复杂度:O(n^2)

public class BubbleSort {

    public static void main(String[] args) {
        int[] array = {1,5,2,3,2,1,5};
        array = UBubbleSort(array);
        System.out.println(Arrays.toString(array));
    }

    public static int[] UBubbleSort(int []array){
        int len = array.length;
        int temp;
        for(int i = 0 ; i < len-1 ; i++){
            for(int j = len-1 ; j > i ;j--){
                if(array[j] < array[j-1]){
                    temp = array[j];
                    array[j] = array[j-1];
                    array[j-1] = temp;
                }
            }
        }
        return array;

    }
}

优化

public class BubbleSort {

    public static void main(String[] args) {
        int[] array = {1,5,2,3,2,1,5};
        array = UBubbleSort(array);
        System.out.println(Arrays.toString(array));
    }

    public static int[] UBubbleSort(int []array){
        int len = array.length;
        int temp;
        for(int i = 0 ; i < len-1 ; i++){
            boolean flag = false; // 通过flag表示位减少没有意义的比较

            //内层循环
            for(int j = len-1 ; j > i ;j--){
                if(array[j] < array[j-1]){
                    temp = array[j];
                    array[j] = array[j-1];
                    array[j-1] = temp;
                    flag = true; // 当前有交换项
                }
            }

            if(!flag){
                //若没有交换项,表示剩下已排好序
                break;
            }
        }
        return array;

    }
}

稀疏数组

.当一个数组中大部分元素为0,或者为同一值的数组时,可以使用稀疏数组来保存该数组

一个5x5的二维数组

. . . . .
0 0 0 0 6
0 3 5 0 0
0 0 4 0 0
0 0 0 0 0
0 0 0 0 0

稀疏数组表示

rows cols value
0 4 6
1 1 3
1 2 5
2 2 4

标签:Java,String,int,Day3,日记,static,数组,array,public
From: https://www.cnblogs.com/uwupu/p/16647427.html

相关文章