JavaSE自学笔记(6)

(自学经历)自学java,学多久可以自己找到工作? 自学Java多久才可以出去找工作,这个其实也不固定,根据每个人的吸收情况来说,有的学习4个月就敢出去找工作,一般正常来说学6-8个月就可以找工作了,这至少得每天学习4-6个小时,我当自学的时候每天根据个人的情况制定学习方案和学习计划 我当时自学的学习计划为一下:自学的同学可以参考,觉得有帮助记得收藏关注 1、我是19年10月开始学习的,正好是国庆节的那段时间,我当时学习是找的系统的一个视频来看,有要的可以找我要,我花了2个月的时候去学习1javase基础的部分学习 基础的内容包含:java的环境搭 阅读详情

数组:元素的线性集合
1.定义方式一:
(1)int[] a = {1,2,3,4};定义时初始化。
(2)int[] a; a = {1,2,3,4};不可以先定义,再初始化。
2.定义方式二:
(1)int[] a = new int[]{1,2,3,4};可以定义初始化
(2)a = new int[]{5,6,7,8};也可以赋值
(2)int[] a = new int[5];定义一个长度为5 的数组,元素的默认值是0对应的各种类型

1.数组的定义初始化与赋值

import java.util.Arrays;

public class 定义int类型数组的变量 {
    public static void main(String[] args) {
        int[] a;
        System.out.println(a);//数组只定义了,没有初始化
        int[] a={1,2,3,4};
        System.out.println(a);//可以运行,但不打印数组
        int[] a;
        a={1,2,3,4};
        System.out.println(a);//不可以先定义再赋值

        String[] a = new String[]{"hello","world"};//初始化
        a = new String[]{"go","come","yes","no"};//赋值

        int[] a = new int[5];//定义一个数组,元素类型是int,长度是5
                             //其中每个元素的值都是int类型的默认值-0;
        int[] b = method();//可以直接调用方法返回一个数组
    }

    private static int[] method() {
        return new int[]{9,8,7,6};
    }

}

2.数组的两种遍历方法

public class 定义int类型数组的变量 {
    public static void main(String[] args) {
        int[] a =new int[]{1,2,3,4};
        int b=a.length;
        System.out.println(b);
        System.out.println(Arrays.toString(a));
		
		//数组下标遍历
        for(int i=0;i<a.length;i++){
            int j=a[i];
            System.out.printf("%d ",j);
        }
        System.out.println();
		
		//数组全体遍历
        for(int i:a){
            System.out.println(i);
        }
    }
}

3.使用Arrays中的常用方法

import java.util.Arrays;

public class 使用Arrays中的方法 {
    public static void main(String[] args) {
        testBinarySearch();//测试二分查找
        testEquals();//测试数组相等
        testFill();//数组填充
        testSort();//数组排序
        testCopy();//数组拷贝
        testCopyRange();//数组范围拷贝
    }

    private static void testCopyRange() {
        long[] a = { 1, 2, 3, 4, 5 };

        // [from, to)
        //long[] copy = Arrays.copyOfRange(a, 3, 4);
        //long[] copy = Arrays.copyOfRange(a, 3, a.length);
        long[] copy = Arrays.copyOfRange(a, 3, 10);//拷贝a数组从3到10
        System.out.println(Arrays.toString(a));
        System.out.println(Arrays.toString(copy));
    }

    private static void testCopy() {
        long[] a = { 1, 2, 3, 4, 5 };
        System.out.println(Arrays.toString(a));

        long[] copy = Arrays.copyOf(a, 3);// 新数组长度小于源长度
        long[] copy = Arrays.copyOf(a, 5);// 新数组长度等于源长度
        long[] copy = Arrays.copyOf(a, 10);// 新数组长度大于源长度

        System.out.println(Arrays.toString(a));
        System.out.println(Arrays.toString(copy));

        Arrays.fill(a, 100);//数组填充,填充100
        System.out.println(Arrays.toString(a));
        System.out.println(Arrays.toString(copy));
    }

    private static void testSort() {
        long[] a = { 9, 5, 2, 7, 1, 6, 8, 3, 0, 4 };
        System.out.println(Arrays.toString(a));
        Arrays.sort(a); // In-place Sort 原地排序
        System.out.println(Arrays.toString(a));
    }

    private static void testFill() {
        long[] a = new long[10];
        System.out.println(Arrays.toString(a));
        Arrays.fill(a, 1, 8, 100);//a数组从1到8填充100
        System.out.println(Arrays.toString(a));
    }

    private static void testEquals() {
        long[] a = { 1, 2, 3, 4 };
        long[] b = { 1, 2, 3, 0 };

        b[3] = 4;
        System.out.println(Arrays.equals(a, b));//true
    }

    private static void testBinarySearch() {
        long[] a = { 9, 1, 2, 3, 4, 4, 5, 6, 7, 8, 9 };
        System.out.println(Arrays.binarySearch(a, 1));  // 由于数组无序,返回什么都是合理的

//        System.out.println(Arrays.binarySearch(a, 3));  // 2
//        System.out.println(Arrays.binarySearch(a, 4));  // 3 OR 4
//        System.out.println(Arrays.binarySearch(a, -1)); // -1
//        System.out.println(Arrays.binarySearch(a, 10)); // -11
    }
}

4.自写toString,copyOf,copyOfRange,冒泡排序,二分查找

public class MyArrays {
    // "[1, 2, 3, 4]"
    public static String toString(long[] array) {
        String ans = "[";

        // 遍历 除了 最后一个元素之外的其余所有元素
        for (int i = 0; i < array.length - 1; i++) {
            long element = array[i];

            // String + long + String
            // String + String.valueOf(long) + String

            // "["
            // "[1, "
            // "[1, 2, "
            // "[1, 2, 3, "
            // "[1, 2, 3, 4, "
            ans = ans + element + ", ";
        }

        // 把最后一个元素添加到字符串 ans 中
        // 数组中最后一个元素的下标是 array.length - 1
        // 思考 array.length 的取值范围是多少 >= 0
        // "[1, 2, 3, 4, 5"
        if (array.length > 0) {
            long lastElement = array[array.length - 1];
            ans = ans + lastElement;
        }

        // "[1, 2, 3, 4, 5]"
        ans = ans + "]";

        return ans;
    }

    public static long[] copyOf(long[] original, int newLength) {
        if (newLength < 0) {
            throw new RuntimeException("newLength 必须 >= 0");
        }

        long[] ans = new long[newLength];

        // 下标(i) 走到哪个位置停下来?
        // original.length 和 ans.length 中小的一个
        int size = Integer.min(original.length, newLength);
        for (int i = 0; i < size; i++) {
            // 需要保证等号两边的下标使用都是合法的!!
            ans[i] = original[i];
        }

        // 如果 newLength > original.length 了
        // ans 中剩余的位置,已经是 long 类型的默认值了(0)
        // 所以我们不需要做什么事情了

        return ans;
    }

    // 0 <= from <= original.length && 0 <= from <= to
    public static long[] copyRangeOf(long[] original, int from, int to) {
        if (from < 0) {
            throw new RuntimeException("from 必须 >= 0");
        }

        if (from > to) {
            throw new RuntimeException("from 必须 <= to");
        }

        if (from > original.length) {
            throw new RuntimeException("from 必须 <= original.length");
        }

        int newLength = to - from;

        long[] ans = new long[newLength];

//        ans[0] = original[from];
//        ans[1] = original[from + 1];
//        ans[2] = original[from + 2];

        // i 假如代表的是 ans 的下标
        // i 的合法取值范围必须满足两个条件
        // 1. i 在 ans 中是合法下标  [0, ans.length)
        // 2. from + i 在 original 中是合法下标 [0, original.length)
        //    i 的取值范围 [-from, original.length - from)
        // 最后,i 的合法范围:[0, ans.length) 和 [-from, original.length - from) 的交集
        // i ~ [0, min(ans.length, original.length - from))
        int size = Integer.min(newLength, original.length - from);
        for (int i = 0; i < size; i++) {
            // 保证两边的下标都合法
            ans[i] = original[from + i];
        }

//        // i 假如代表的是 original 的下标
//        for (int i = from; i < ?; i++) {
//            ans[i - from] = original[i];
//        }

        // 思考过填充默认值的情况,和 copyOf 一样

        return ans;
    }

    public static void bubbleSort(long[] array) {
        // 一共有 array.length 个元素,需要经过 array.length - 1 次 “冒泡” 数组会有序

        for (int i = 0; i < array.length - 1; i++) {
            // 每循环一次,经过一次 “冒泡过程”
            // 把无序区间中的最大的数,冒泡到,无序区间的最后去

            // 数组看作一个整体区间,表示 [0, array.length)
            // 无序区间: [0, array.length - i)

            // 实现具体的冒泡过程
            // j 代表的是黑色下标
            // j ~ [0, array.length - i) 无序区间
            // j + 1 ~ [0, array.length - i) 无序区间 <=> j ~ [-1, array.length - i - 1)
            // j 需要取交集 [max(0, -1), min(array.length - i, array.length - i - 1))
            // j ~ [0, array.length - i - 1)
            for (int j = 0; j < array.length - i - 1; j++) {
                // j 需要保证 array[j] 和 array[j + 1] 的下标都合法
                if (array[j] > array[j + 1]) {
                    long t = array[j];
                    array[j] = array[j + 1];
                    array[j + 1] = t;
                }
            }
        }
    }


    // 前提:array 有序
    // 找到 target 所在的下标,如果 target 有多个,不保证找到哪一个
    // 如果没有找到,返回 -1
    public static int binarySearch(long[] array, long target) {
        // 待查找区间表示为: [low, high)
        // 带查找区间内的元素个数: high - low
        // 定义待查找区间的下限
        int lowIndex = 0;
        // 定义待查找区间的上限
        int highIndex = array.length;

        // 只要带查找区间内还有元素,查找过程就得继续
        while (highIndex - lowIndex > 0) {
            int midIndex = (lowIndex + highIndex) / 2;  // 暂时不考虑溢出的情况
            long midElement = array[midIndex];

            if (target == midElement) {
                return midIndex;
            } else if (target < midElement) {
                // 需要扔掉右边 [midIndex, ...)
                // highIndex 是开区间,所以 = midIndex,但区间里没有 midIndex 对应的元素
                highIndex = midIndex;
            } else {
                // 需要扔掉左边 [..., midIndex]
                // lowIndex 是闭区间,所以 = midIndex + 1,区间里没有 midIndex 对应的元素
                lowIndex = midIndex + 1;
            }
        }

        // high - low <= 0 换言之 带查找区间内一个元素都没有了
        // 说明 target 不在 array 中
        return -1;
    }
}
Java自学路线图之Java系统自学 文章目录第一阶段 Java零基础自学路线图--Java基础自学第二阶段 Java零基础自学路线图--Java语言进阶第三阶段 Java零基础自学路线图--JavaWeb自学第四阶段 Java零基础自学路线图--第一部分框架第五阶段 Java零基础自学路线图--第二部分框架Java自学资源 Java自学不是一朝一夕的事情。可以采用“懒开始”的方法,但是必须要坚持下去,才能真正自学Java掌握编程技... 阅读详情

相关推荐

DDR4 硬件设计笔记

DDR4-DRAM是第四代支持双倍数据读取,支持随机位置存取的静态存储器。DDR4-DRAM的工作原理。DDR之T拓扑和Fly-by拓扑。DDR的硬件设计。DDR4 PCB设计要点介绍。DDR4之PCB走线间距的串扰评估。DDR4之内存通道(channel)和内存列(rank)。

qq_26815321的博客 1万+

我的javaSE学习笔记

layout: post title: “我的JAVASE自学笔记” date: 2019-05-18 20:23:25 +0800 我的JAVASE自学笔记 作者:吴甜甜 个人博客网站: wutiantian.github.io 基础知识 学习书籍:《疯狂JAVA讲义》李刚 搭建命令行编译环境 下载软件jdk jdk是开发java要用到的工具,里面包括 ①jre (java ru...

吴甜甜的技术博客 1954

【第六届起重机创意大赛国一作品——资料分享】

文章目录前言一、比赛内容分析二、确定方案与作品模型1.方案简图2.作品模型三、电控部分控制思路单片机选择与资源分配拓展板的设计接线与走线代码分享总结

qq_19308801的博客 7783

黑马程序员Javase笔记

黑马程序员Javase笔记 【下载地址】黑马程序员Javase笔记 这份Java学习笔记专为初学者设计,涵盖了Javase的核心知识点,助您轻松入门Java编程。笔记详细整理了Java基础语法、面向对象编程、异常处理、集合框架、输入输出流以及多线程等重要内容,内容清晰易懂,适合自学使用。作者在学习过程中精心总结,致力于为...

gitblog_06778的博客 497

ERA5数据驱动WRFV4.4实战:单层嵌套配置与关键报错排查指南

本文详细介绍了使用ERA5再分析数据驱动WRFV4.4模式进行单层嵌套模拟的完整实战流程。内容涵盖从数据精准下载、WPS前处理配置、WRF核心参数设置到高频报错的深度排查与解决方案,旨在帮助初学者在有限服务器资源下,高效完成WRF模拟并规避常见陷阱。

q5r6s7的博客 770

PCL RANSAC拟合分割圆柱体模型【2026最新版】

使用RANSAC拟合分割圆柱的原理介绍、官网示例代码实现以及一个可视化拟合出来的圆柱的具体应用案例。博客长期更新,最近一次更新时间为:2026年1月28日。

点云侠的博客 40万+

JavaSE自学笔记总结

文章目录前言00零基础内容01基础程序设计部分:02面向对象编程03Java新特性04应用程序开发 前言 学了Java基础部分大概一个月,基本概念语法学完了,看了一下,距离上一篇博客有10天了,前几天偷懒了,没及时总结!现在总结回顾一下JavaSE的学习知识框架,还是有必要的! 备注:主要通过视频学习的,来源有b站,中国大学MOOC,当然还有优快云。 总体知识结构: 00零基础内容 在学习Ja...

佛系研究生8的博客 474

ROCm rocr-libhsakmt分析系列9-3: queue的内核创建流程

KFD队列是用户空间与GPU通信的核心机制,通过多种队列类型(计算、DMA、调试等)实现命令流管理。核心数据结构包括描述队列属性的queue_properties、内核调度对象queue、进程级管理器process_queue_manager,以及跨进程设备的qcm_process_device等。这些结构通过ring buffer、doorbell机制和MQD硬件描述符协同工作,支持队列全生命周期管理、资源调度、异常处理和上下文保存/恢复功能。

图形/计算GPU的驱动与虚拟化技术分享园地 2130

黑马程序员Javase笔记:Java学习者的必备笔记

黑马程序员Javase笔记:Java学习者的必备笔记 【下载地址】黑马程序员Javase笔记 这份Java学习笔记专为初学者设计,涵盖了Javase的核心知识点,助您轻松入门Java编程。笔记详细整理了Java基础语法、面向对象编程、异常处理、集合框架、输入输出流以及多线程等重要内容,内容清晰易懂,适合自学使用。作者在学...

gitblog_06772的博客 433

保边滤波之Mean shift filter

保边滤波之Mean shift filter 目录 保边滤波之Mean shift filter 一、算法原理 二、练手实现的算法代码如下: 三、实现结果 一、算法原理 在OpenCV中,meanshift filter函数为 p...

大熊 1561

CLAHE 算法学习 matlab

概念可参考: CLAHE (Contrast Limited Adaptive Histogram Equalization)算法学习CLAHE具体实现主要包括6个步骤。1):分块。将输入图像划分为大小相等的不重叠子块,每个子块含有的像素数为M。参考示例为8×8块。 2):计算子块直方图。 3):计算剪切阈值clipLimit 4):像素点重分配。对每个子块,使用步骤三中多余的像素重新分配。 5):直方图均衡。 6):像素点灰度值重构。(源码中采用了双线性插值) http://www.realtimer

baidu_34971492的博客 4253

自学编程真的很无力吗?不,完全可以相信自己。【肝 5000+字自述java自学】

java自学该怎么学,真的不能自学编程吗?

毛虫-strive-blogs 4447

音频链路分析

音频链路分析摘要 本文分析了蓝牙音频设备(BES2700)的音频传输链路,主要包括通话和音乐播放两种场景: 通话链路: 下行:蓝牙接收数据→解码→通过Codec输出到扬声器 上行:麦克风采集→Codec处理→蓝牙编码发送 音乐播放链路: 通过A2DP协议接收高质量音频数据 经过解码、EQ调节等音频处理后输出 系统采用多线程消息机制处理音频任务,通过mailbox传递控制消息,由回调函数处理具体音频数据流。不同应用场景使用不同的蓝牙协议栈(HFP/HSP用于通话,A2DP用于媒体)和编码方式(mSBC/SBC

云淡风轻 86

JavaSE自学笔记(黑马)

Java

DimensionStar的博客 881

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

自学java第2天,javaSE

我本来就是一个很自卑的人,在职场上,身边的人太优秀,让自己的自卑心理更加放大。我也曾有过宏伟的职业规划,计划着如何一步步向前走,但是现实却不得不一次次告诉我学会原谅自己和放弃一些,可是天生有的一点傲骨让我在这之间非常挣扎,我没有投降,也在努力,但是没有人看得见。有时候每天盲目着受挫和忽视,倒不如也同时一边前进,不停学习,坚持真的不一定能行,但是希望它成为我的习惯,加油! 第一阶段javaSE 今天要学的是java的语言基础,在这之前,先了解一些计算机的基础知识。 1、计算机的体系结构(常识) 什么是计算.

lusiyang463的博客 447

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

自学javase的回顾(1/5)

小白自学javase的回顾(1/5)1、编写程序前的环境和java特性2、java基本数据类型3、运算符、键盘等待输入、控制语句4、方法和重载机制5、递归方法 自学javase已经完结,用了25天,需要对25天的知识进行一个系统的消化。有知识说的不对的地方请多多谅解。 1、编写程序前的环境和java特性 在搭建java运行环境前,要了解java语言的特性: 1、面向对象编程: 面向对象是符合人的思维逻辑的一种方式,这种编程更容易使人理解。例如想要去写一个学生的数据库的时候,就要对学生定义一个类,这个类称为学

zourenqiang 550

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

JavaSE目录

跳转到总目录 01、版本一:视频教程笔记 这个版本是我跟着视频教程做的笔记 教程来源:java基础到高级_零基础自学Java–尚硅谷–宋红康 教程视频地址:https://www.bilibili.com/video/BV1ny4y1Y7CW 名称 笔记地址 一:Java语言概述 二:变量、标识符、保留字、变量 三:运算符 四:程序流程控制 五:数组 六:面向对象(上) 七:面向对象(下) 八:面向对象(中) 九:异常 十:多线程

本人主攻Java,希望自己能成为出色的程序员。 37万+

自学java,学多久可以自己找到工作?

自学Java多久才可以出去找工作,这个其实也不固定,根据每个人的吸收情况来说,有的学习4个月就敢出去找工作,一般正常来说学6-8个月就可以找工作了,这至少得每天学习4-6个小时,我当自学的时候每天根据个人的情况制定学习方案和学习计划 我当时自学的学习计划为一下:自学的同学可以参考,觉得有帮助记得收藏关 1、我是19年10月开始学习的,正好是国庆节的那段时间,我当时学习是找的系统的一个视频来看,有要的可以找我要,我花了2个月的时候去学习javase基础的部分学习 基础的内容包含:java的环境搭建,基础

chengxuyuan9527的博客 1116

自学javase的回顾(1/10)

自学javase的回顾(1/5) 1、Java环境变量配置 2、Java语言特性 3、Java标识符和关键字 一、## Java环境变量配置 步骤1、其实java环境变量设置很简单,首先下载安装JDK安装包,安装过程中注意安装到其他盘,不要安装到C盘就好。 步骤2、打开我的电脑–属性–高级–环境变量 步骤3、新建系统变量JAVA_HOME   变量名:JAVA_HOME   变量值:具体是自己JDK安装路径   其中变量值为自己安装jdk的文件目录这里要注意。 步骤4、选择“系统变量”中变量名为“Path”

weixin_47592060的博客 288

javase自学笔记

JavaSe 配置环境变量 win10怎么配置环境变量 右键 此电脑 ->(属性) ->(⾼级系统设置) ->(环境变量) 新建三个变量 JAVA_HOME 变量值为JDK安装路径 PATH %JAVA_HOME%\bin CLASSPATH .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar; JAVA的作用 (1)桌面级应用 先解释一下桌面级应用:简单的说就是主要功能都在我们本机上运行的程序,比如word 、excel 等运行在本机上的

zhang20150615的博客 319

JavaSE自学笔记

由于之前是使用word编写,所以可能效果不如人意,可以私信找我拿资源 比较基础的DOS命令 按住win+R 输入cmd,打开DOS窗口 exit 退出dos窗口; cls 清楚dos窗口记录; dir 列出当前目录下的所有子文件/子目录; cd 改...

weixin_53324535的博客 504

0 基础 Java 自学之路(2021年最新版)

前言 无论你是否想自学 Java,认真看完本文,你以后的职场生涯至少少走1年弯路。 本文会持续更新,建议收藏。 初衷 在 优快云 上经常有同学私聊我询问 “如何自学 Java”、“想转行 Java 靠谱吗” 等问题,因为自己也是在大学时自学的 Java,所以我能理解这些同学的痛苦和迷茫。 写这篇文章前,我看了一些网上 Java 自学的文章,很多我都不太满意,有的甚至让我感到愤怒,要么是站在现有的视角侃侃而谈,要么是纯粹的瞎编骗小白。 很多文章都有一个老毛病:完全没有从小白的视角去思考,内.

deqing271的博客 206

【JavaSE】之基础语法

Java基础语法介绍,注释,标识符和关键字,数据类型,类型转换,变量与常量,基本运算等~

小新要变强的博客 7568

自学Java月薪过万 java自学之路

如何自学Java快速实现月薪过万?JAVA自学之路 有不少的同学发信给我,和我探讨java的自学过程应该是什么样的,毕竟有很多人因为各种各样的原因不能参加线下培训。我试着给出自己的见解,抛砖引玉吧。 Java自学路线 这个自学路线是给那些为了就业的人准备的,如果只是兴趣,不一定照这个走。 首先要学JavaSE,这是无庸置疑的。 与此同时,和JavaSE的学习同步,建议大家研究一下数据结构与算法。 在这儿之后,你可以选择向J2ME、或者Java GUI、Socket编程等方向努力,但是通过第一篇的办法,你可

dirft_lez的博客 186
上一篇: JavaSE自学笔记(5)
下一篇: JavaSE自学笔记(7)
旅旅旅人
博客等级 码龄7年 5粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值