javabasic

news2024/12/26 10:38:14

计算机基础

一、学前知识

1. 计算机组成

2. 进制的概念

(1)二进制的存储

计算机不管是内存还是硬盘,都是以二进制的形式存储。如同一张巨大的表格,里面都是由0和1组成。

  • 二进制:逢2进1 基数为2,数值部分用不同的数字,0、1来表示。 (逢2进1便是没有2的概念,遇到2就像前面进一位)比如2,看到2向前进1,2用二进制表示便是10,3是11依此类推
  • 十进制:逢十进一基数为10,数值部分用0、1、2、3、4、5、6、7、8、9来表示.
  • 十六进制:逢十六进一基数是16,有十六种数字符号,除了在十进制中的0至9外,还另外用6个英文字母A、B、C、D、E、F来表示十进制数的10至15。

(2)二进制的存储(单位)

数据在计算机底层是如何存储的?

  • 都是采用二进制:使用0、1按照逢2进1的规则表示数据来存储。

如何快速算出一个数据的二进制形式?

  • 除2取余法 6便表示为110

数据在计算机底层存储的最小单位是什么?

  • 字节,一个字节等于8个二进制位:1B =8b

二进制转十进制:

(3)关于ASCll编码表

二、初识java

三、java环境搭建

1.安装java

将给定的安装包安装在电脑上,我们一起去官方网站看看(https://www.oracle.com/)

我们能看到目前java的版本已经更新到了java17,但是企业中常用的还是java8,原因是因为老的版本,更加稳定,不容易出现错误。我们可以根据实际需求自行选择安装版本。

系统会默认将jdk安装至"C:\Program Files\Java"目录下,(这里最好自己指定目录,目录中不要出现空格以及中文,避免后续产生不必要的麻烦)

接着我们需要配置环境变量,让其能够在任意窗口打开
path环境变量

  • 用于记住程序路径,方便在命令行任意路径启动程序

我在最初学习时,也一直没弄懂环境变量是干嘛的,我们以QQ为例,再引入java的环境变量。帮助大家去直观的理解环境变量。

win+r 输入cmd 打开命令行窗口

image.png

我们此时输入qq是没有效果的

首先找到QQ程序的执行路径,通常在bin包,发现有qq程序

image.png
将这个路径复制
打开环境变量设置

image.png

用户变量只针对当前用户
系统变量针对所有用户

点击path

image.png

将qq环境变量加进去 点击确定

此时再次在命令行执行qq,你会发现

image.png
还是失败!!!

为什么呢?

  • 因为我们的环境变量更改之后,原来打开的命令行还没有生效,重新打开命令行工具即可。
    此时输入qq,启动成功

image.png

image.png

接着我们引入正题,配置java环境变量
在最新版本,安装过程中会自动帮助我们配置好环境变量。
但是通常情况下,是需要我们手动添加环境变量

image.png

同样的 找到jdk的bin目录,复制路径,添加到环境变量中

image.png

图A
image.png

配置JAVA_HOME环境变量

image.png

image.png

复制这个路径

image.png

新建环境变量

image.png

image.png

image.png

将最开始图A的那个变量替换,通过%JAVA_HOME% 来固定位置

image.png

完成

java
java -version   --查看jdk版本 

有内容即可。

2.javac 和java的区别

我们编写的java程序都是高级语言,计算机底层是不能够直接识别的,需要通过javac工具的编译才能驱动机器干活。

3.命令行常用命令

四、编写第一个java程序

开发一个java程序,其中要经历三个步骤 编写代码,编译代码,运行代码

下面看一个简单的 Java 程序,它将输出字符串 Hello World

最初学习时,我们可以使用记事本编写代码。这样的好处是,能够更加熟悉Java的一个运行过程,以及对代码的熟练度。

新建一个文件,用记事本的方式打开

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello world!");  //这句话输出 Helllo world!
    }
}

需要注意的是文件名要和类名完全一致,否则会报错。

编写好之后通过在文件所在目录执行 javac HelloWorld.java 进行编译,然后运行

五、java工作原理jdk

1.jdk的组成

2.java的跨平台,工作原理

  • 一次编译,处处可用(核心是因为java公司为不同的平台提供了jvm虚拟机)

## 变量

数据类型

1.自动类型转换机制:

  • 类型范围小的变量,可以直接复制给类型范围大的变量

2.我们为什么要进行类型转换?

  • 因为在实际编写程序中,会存在不同类型的变量赋值其他类型的变量。

3.什么是自动类型转换?

  • 类型范围小的变量,可以直接赋值给类型范围大的变量。

byte 的运算结果会转换为int,需要用int接收

数组

1.数组的基本概念

有一个需求,某某学校招生了,有一百个学生报名,我想记录一下这一百个学生的年龄和姓名,或者计算一下学生的平均年龄,难道我们要定义一百个变量吗?

string a = "杨航"
...
算了不写了。

合理的做法一定是,在内存里找一个片空间,按顺序存起来。其实这个道理很简单,计算机中,我们有这样一种数据结构能帮助我们把想同类型的数据统一聚拢放在一起,他就是【数组】。

2.数组的定义方式

定义:
int[] nums;
初始化:
nums = new int[3];
赋值:
nums[0] = 1;   
nums[1] = 4;
nums[2] = 3;

// 直接定义初始化并赋值
int[] nums = {1,2,3};

// 这样写也行
int nums[] = new int[5];
int nums[] = new int[]{1,2,4,5};

// 数组有一个属性,可以获得数组的长度
nums.length 

类型[] 名字 = new 类型[长度];

3.数组在计算机中的基本原理

数组在计算机中存储,主要是通过三个步骤

image.png

image.png
注意:数组变量名中存储的的是数组在内存当中的地址,数组是一种引用数据类型。
总结:

image.png

4.数组中的访问

语法:数组名[索引]

System.out.println(ages[0]);

计算数组长度(存放了多少数据)
数组名.length

System.out.println(ages.length);

数组的最大索引:

数组名.length - 1

注意:如果访问数组时,使用的索引超过数组的最大索引,会越界,显示异常

5.数组的遍历

什么是便历:?
所谓便历,就是说一个一个去访问属猪容器中的数据

for (int i = 0; i < ages.length; i++) { }

IDEA中的快捷便历

数组名.fori + 回车 直接生成

image.png

一个简单的小案例~

image.png

代码实现:

public class LiteralDemo {
    public static void main(String[] args) {
        //定义一个五个员工的销售额度数组
        int[] money = {16,26,366,100};
        //定义一个变量,用作最后计算总额
        int total = 0;
        //分别遍历累加
        for (int i = 0; i < money.length; i++) {
            total += money[i];
        }
        //输出
        System.out.println(total);
    }
}

6.动态初试化数组

先初试化int[] rar = new int[3]
后赋值
rar[0]=1

image.png

image.png

两种数组定义初始化方式各自适合什么模式?

  • 动态初试化:适合开始不确定具体元素值,只知道元素个数的具体场景。
  • 静态初试化:明确具体元素值

案例1:
image.png

代码实现:

import java.util.Scanner;
public class LiteralDemo {
    public static void main(String[] args) {
        double[] scores = new double[6];
        Scanner sc =   new Scanner(System.in)//遍历数组 输入6个评委的打分
        for (int i = 0; i < scores.length; i++) {
            System.out.println("请您输入当前第"+(i+1)+"个评委的分数");
            scores[i] = sc.nextDouble();
        }

        double sum = 0;
        //  遍历数组中每个元素值进行求和
        for (int i = 0; i < scores.length; i++) {
            sum +=scores[i];
        }

        System.out.println("选手最终得分" + (sum / scores.length));
    }

image.png

7.数组/java程序在计算机中的执行原理

java内存分配介绍

方法区
栈内存
堆内存

image.png

数组在计算机的执行原理

image.png

小思考:

image.png

8.多个变量指向同一个数组

image.png

注意:如果某个数组变量存储的地址是null,那么变量将不再指向任何数组对象。

多个数组变量,指向同一个数组对象的原因,注意事项

  • 多个数组中存储的是同一个数组对象中的数据
  • 多个变量中修改的都是同一个数组对象中的数据。

9.数组常见案例

数组求最值

image.png

代码实现:

public class LiteralDemo {
    public static void main(String[] args) {
        int[] faceScores = {15,9000,29993,3242,4242,5242,4345,543,534,543,543};
        //定义一个最大值
        int max = faceScores[0];

        for (int i = 0; i < faceScores.length; i++) {
            if(faceScores[i] > max) max = faceScores[i];
        }

        System.out.println("当前妹纸中,颜值得分最高的是" + max +"分");

    }
}

数组反转

image.png

public class LiteralDemo {
    public static void main(String[] args) {
        int[] a = {1,2,3,4,5}; 
        //临时变量
        int temp;
        for (int i = 0,j = a.length-1; i < j; i++,j--) {
            temp = a[i];
            a[i] = a[j];
            a[j] = temp;
        }
        for (int i = 0; i < a.length; i++) {
            System.out.print(a[i]+" ");
        }

    }
}

随机排名

image.png

代码实现:

import java.util.Random;
import java.util.Scanner;
public class LiteralDemo {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        //初始化数组
        int[] codes = new int[5];

        //遍历录入
        for (int i = 0; i < codes.length; i++) {
            System.out.println("请您输入第" + (i+1) + "个工号");
            int code = sc.nextInt();
            codes[i] = code;
        }
        Random r = new Random();
        //打乱顺序
        for (int i = 0; i < codes.length; i++) {
            //随机索引
            int index = r.nextInt(codes.length);//0 1 2 3 4
            //定义临时变量
            int temp = codes[index];
            codes[index] = codes[i];
            codes[i] = temp;
        }
        for (int i = 0; i < codes.length; i++) {
            System.out.print(i+" ");
        }

    }
}

debug工具的使用-断点调试

image.png

方法

1.方法的概念

方法是一种语法结构,它可以把一段代码封装成一个功能,以便于复用。

方法定义方式

    public static int sum(int a,int b){
        int c = a+b;
        return c;
    }

调用
sum(10,20)

image.png

image.png

使用方法的好处

  • 提高代码复用性,提升开发效率
  • 让程序逻辑更清晰

2.方法的设计

image.png

image.png

image.png

3.方法在计算机的执行原理

方法被调用的时候,是进入到栈内存中运行。

栈:先进后出,类似于手枪弹夹,先进去的后出,后进、去先出。打出去就没了。

image.png

image.png

image.png

4.java参数的传递机制 (非常重要)

java的传递机制都是:值传递

所谓值传递:指的是传输实参给方法的形参的时候,传递的是实参变量中存储值的副本。

  • 实参:在方法内部定义的量
  • 形参:定义方法时,()中所声明的参数

image.png

image.png

总结:

  • 值传递,传输的是实参存储的值副本

5.引用类型的参数传递

image.png

案例1:
在这里插入图片描述
代码:
在这里插入图片描述
案例2
在这里插入图片描述
代码:
在这里插入图片描述
思维:层层拦截,不通过就返回false

6.方法重载

什么是方法重载?

  • 方法重载指:一个类中,出现多个方法名称相同,但他们形参列表是不同的,那么这些方法就成为方法重载了。

方法重载的的注意事项:

  • 一个类中,只要一些方法的名称相同,形参列表不同,那么他们就是方法的重载了,其它不用管。
  • 形参的列表不同指个数、类型、顺序不同,不关心形参

方法重载的应用场景:

  • 开发中我们经常需要为处理一类业务,提供多种解决方案

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1015557.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DP读书:《openEuler操作系统》(二)操作系统的发展史

操作系统的发展历史 操作系统的发展历史手工操作时代批处理系统多道程序系统分时操作系统CTSSMULTICS的历史UNIX和Linux的历史Debian系列Red Hat系列 DOS和Windows的历史DOS的历史&#xff1a;Windows的历史&#xff1a; Android和iOS的历史Android&#xff1a;iOS&#xff1a;…

MCU软核 3. Xilinx Artix7上运行cortex-m3软核

0. 环境 - win10 vivado 2018.3 keil mdk - jlink - XC7A35TV12 1. 下载资料 https://keilpack.azureedge.net/pack/Keil.V2M-MPS2_DSx_BSP.1.1.0.pack https://gitee.com/whik/cortex_m3_on_xc7a100t 2. vivado 2018 Create Project -> Next -> -> Project n…

web安全漏洞-SQL注入攻击实验

实验目的 学习sql显注的漏洞判断原理掌握sqlmap工具的使用分析SQL注入漏洞的成因 实验工具 sqlmap是用python写的开源的测试框架&#xff0c;支持MySQL&#xff0c;Oracle&#xff0c;PostgreSQL&#xff0c;Microsoft SQL Server&#xff0c;Microsoft Access&#xff0c;I…

2023微信头像生成小程序源码/基于skyline+vue3+t

微信头像生成小程序&#xff0c;基于skylinevue3t该项目已适配微信小程序隐私政策&#xff0c;截图、获取头像等诸多新的接口 如何使用&#xff1a; 将代码导入到HBuilderX开发工具&#xff0c;可无需修改任何代码&#xff0c;运行并编译到微信开发者工具 skyline需要使用微…

C++ 的继任者:Carbon Language | 开源日报 0911

carbon-language/carbon-lang Stars: 31.1k License: NOASSERTION Carbon Language 是一个实验性的 C 继任者项目。它旨在提供与 C 相当的性能&#xff0c;并具有低级访问位和地址的功能&#xff0c;以及与现有 C 代码进行互操作、快速可扩展构建等特点。该项目还强调了以下核…

io概述及其分类

一、IO概念 • I/O 即输入Input/ 输出Output的缩写&#xff0c;其实就是计算机调度把各个存储中&#xff08;包括内存和外部存储&#xff09;的数据写入写出的过程&#xff1b; I : Input O : Output 通过IO可以完成硬盘文件的读和写。 • java中用“流&#xff08;stream&am…

太牛啦!Python入门到精通 只用了3个多月

最近 GitHub 热榜上持续有一个这样的 Python 项目&#xff0c;自称「100天从新手到大师」。目前 Star 数量已有 19000 多。 作者在开头列出了 Python 的一些应用领域 作者的计划目录 Day01~15 - Python语言基础 Day16~20 - Python语言进阶 Day21~30 - Web前端入门 Day31~3…

基于RuoYi-Flowable-Plus的ruoyi-nbcio项目的formdesigner文件上传与回显处理

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 本节说明ruoyi-nbcio项目的formdesigner文件上传与回显处理&#xff0c;不过目前还只实现oss的formdesigner的文件上传与回显功能。 1、前端方面 formdesigne…

IDEA中Debug测试的基本使用

Debug简介 Debug是用来追踪代码&#xff0c;通常在程序运行中出现异常的时候启动debug模式可以分析定位异常发生的位置&#xff0c;以及在运行过程中参数的变化&#xff0c;通常我们也可以启动Debug模式来跟踪代码的运行流程去学习三方框架的源码 Debug与Junit的区别 Debug与JU…

力扣236 补9.14

做不来&#xff0c;我做中等题基本上都是没有思路&#xff0c;这里需要先遍历祖先节点&#xff0c;那必然用先序遍历&#xff0c;这题还是官方题解容易理解&#xff0c;第二火的题解反而把我弄得脑袋昏昏的。 class Solution { TreeNode ans; public TreeNode lowestCommonAnce…

私域流量的优势

私域流量是指由自身品牌或个人拥有并具备完全掌控权的流量资源。它相比于传统的广告推广&#xff0c;拥有独特的优势。 首先&#xff0c;私域流量能够更加精准地定位目标用户&#xff0c;实现精准传播。不再盲目投放广告&#xff0c;而是通过建立自身社群、粉丝群&#xff0c;获…

Postman应用——下载注册和登录

文章目录 下载安装注册登录注册账号登录账号 下载安装 Postman下载&#xff1a;https://www.postman.com/ 访问链接后&#xff0c;进入首页&#xff0c;根据自己的操作系统下载对应的版本。 找到下载到的目录直接双击.exe文件&#xff0c;会默认安装在C盘&#xff0c;安装完会…

使用VMware 16 安装银河麒麟V10 --九五小庞

1.下载 银河麒麟系统V10 服务版镜像包&#xff1a; Kylin-Server-10-SP1-Release-Build04-20200711-x86_64.iso 百度云盘链接&#xff1a;https://pan.baidu.com/s/1z0GCEadvefUA8R988qDP5Q 提取码&#xff1a;1l0g 2.运行VMware Workstation&#xff0c;创建新的虚拟机&…

【动态规划刷题 15】最长定差子序列 最长的斐波那契子序列的长度

1218. 最长定差子序列 链接: 1218. 最长定差子序列 给你一个整数数组 arr 和一个整数 difference&#xff0c;请你找出并返回 arr 中最长等差子序列的长度&#xff0c;该子序列中相邻元素之间的差等于 difference 。 子序列 是指在不改变其余元素顺序的情况下&#xff0c;通…

python程序商业化,代码安全最终方案,pyinstaller与cython打包python执行程序

其实一般的程序安全上只需要两步就行&#xff0c;没必要再加密改解释器等&#xff0c;已经不可能反编译到原有python了&#xff0c;因为动态链接库就是汇编了&#xff0c;中间经历了python转c,c在转动态库&#xff0c;代码已经没有可读性了。但是一些密码等重要字符还是要处理好…

构建无限画布,协作数字绘图 | 开源日报 0915

tldraw/tldraw Stars: 16.4k License: Apache-2.0 tldraw 是一个协作数字白板项目&#xff0c;可在 tldraw.com 上使用。它的编辑器、用户界面和其他底层库都是开源的&#xff0c;并且可以通过 npm 进行分发。您可以使用 tldraw 为产品创建一个即插即用的白板&#xff0c;或者…

Smart Community(1)之设计规范

通过前面大数据开发相关知识的学习&#xff0c;准备做一个项目进行练习---我给他起了一个响亮的名字&#xff1a;基于HadoopHA的智慧社区服务平台 设计规范&#xff1a; 做一个项目之前肯定要先规定一些开发过程中的设计规范 &#xff08;一&#xff09;数据埋点规范&#xf…

Python中异常处理4-4

在Python中的异常处理4-1_棉猴的博客-CSDN博客中提到&#xff0c;在try块中的代码运行时如果出现异常&#xff0c;会自动抛出这个异常。可以通过raise语句手动抛出异常。 1 raise语句手动抛出异常 raise后面跟要抛出的异常类或者异常类的实例&#xff0c;表示手动抛出该异常&…

位图+布隆过滤器+海量数据并查集(它们都是哈希的应用)

一)位图: 首先计算一下存储一下10亿个整形数据&#xff0c;需要多大内存呢&#xff0c;多少个G呢&#xff1f; 2^3010亿&#xff0c;10亿个字节 byte kb mb gb 100000000个字节/1024/1024/10241G 所以10亿个字节就是1G&#xff0c;所以40亿个字节就是4G&#xff0c;也就是10个整…

电脑重装系统之后设置

edge一直处于正在同步设置关闭系统自动更新更改默认安装路径 edge一直处于正在同步设置 解决办法&#xff1a;卸载重新安装 用电脑管家16可以卸载 电脑管家16 链接&#xff1a;https://pan.baidu.com/s/1f5T4uXrumL8Fne9hyvTHcg?pwd0122 提取码&#xff1a;0122 edge 链接&am…