当前位置: 首页 > news >正文

javabasic

计算机基础

一、学前知识

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.方法重载

什么是方法重载?

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

方法重载的的注意事项:

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

方法重载的应用场景:

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

相关文章:

javabasic

计算机基础 一、学前知识 1. 计算机组成 2. 进制的概念 &#xff08;1&#xff09;二进制的存储 计算机不管是内存还是硬盘&#xff0c;都是以二进制的形式存储。如同一张巨大的表格&#xff0c;里面都是由0和1组成。 二进制&#xff1a;逢2进1 基数为2&#xff0c;数值部分…...

电子词典项目

目录 目录 头文件&#xff1a;dict.h: 源文件&#xff1a;dict.c: 服务器测试文件&#xff1a;serDict.c: 客户端测试文件&#xff1a;cliDict.c: 头文件&#xff1a;dict.h: #ifndef __DICT_H__ #define __DICT_H__ #include<myhead.h> #include<sqlite3.h>#de…...

SQL12 高级操作符练习(2)

描述 题目&#xff1a;现在运营想要找到学校为北大或GPA在3.7以上(不包括3.7)的用户进行调研&#xff0c;请你取出相关数据&#xff08;使用OR实现&#xff09; 示例&#xff1a;user_profile iddevice_idgenderageuniversitygpa12138male21北京大学3.423214male复旦大学4.03…...

python写代码过程中的坑230915

1.解释代码IndentationError: expected an indented block 这个错误通常是由于代码缩进错误导致的。 在Python中,代码块(如循环、条件语句、函数等)通常使用缩进来表示。因此,如果你在期望缩进的位置没有正确缩进代码,就会出现"IndentationError: expected an inden…...

SpringBoot课堂笔记20230913

本篇文章为SpringBoot学习笔记&#xff0c;方便自己再复习。 Maven&#xff1a;jar包管理工具 注解&#xff1a; Controller:处理http请求&#xff0c;返回的视图 RestController: 相当于ResponseBody和Controller一起用&#xff0c;返回的是json ResponseBody:返回响应内容 …...

3D数字孪生:从3D数据采集到3D内容分析

数字孪生&#xff08;Digital Twin&#xff09;是物理对象、流程或系统的虚拟复制品&#xff0c;用于监控、分析和优化现实世界的对应物。 这些数字孪生在制造、工程和城市规划等领域变得越来越重要&#xff0c;因为它们使我们能够在现实世界中实施改变之前模拟和测试不同的场景…...

【杂记】git管理工具的相关应用

这里记录一些用git管理工具进行开发的命令&#xff0c;便于自己查看&#xff0c;我认为下面两篇博客写的很详细&#xff0c;但是为了自己方便查看&#xff0c;所以自己写了一些命令供自己进一步理解。gitee相对git来说更方便一些&#xff08;毕竟国内的不用担心墙&#xff09;&…...

看好多人都在劝退学计算机,可是张雪峰又 推荐过计算机,所以计算机到底是什么样 的?

张雪峰高考四百多分&#xff0c;但是他现在就瞧不起400多分的学生。说难听点&#xff0c;六七百分的 热门专业随便报谁不会啊&#xff1f; 计算机专业全世界都是过剩的&#xff0c;今年桂林电子科技&#xff0c;以前还是华为的校招大学&#xff0c;今年 计算机2/3待业。这个世…...

leetcode 26.删除有序数组中的重复项

给你一个 升序排列 的数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使每个元素 只出现一次 &#xff0c;返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。 考虑 nums 的唯一元素的数量为 k &#xff0c;你需要做…...

jitsi音视频会议集成到自己的网页中

将jitsi视频会议集成到自己的web网站&#xff1a; 源码&#xff1a; <!DOCTYPE html> <html lang"en" xmlns:th"http://www.thymeleaf.org"> <head><meta charset"UTF-8"><meta name"viewport" content&…...

浅析Java责任链模式实现

一、概要 定义&#xff1a;责任链模式是一种行为设计模式&#xff0c; 允许你将请求沿着处理者链进行发送。收到请求后&#xff0c; 每个处理者均可对请求进行处理&#xff0c; 或将其传递给链上的下个处理者。 二、应用场景&#xff1a; 1.多条件流程判断&#xff1a;权限相关…...

SpringBoot雪花算法主键ID传到前端后精度丢失问题的解决

Java后端Long类型的范围 -263~263&#xff0c;即&#xff1a;-9223372036854775808~9223372036854775807&#xff0c;它是19位的。 这个数字可以通过方法获得&#xff1a;Long.MAX_VALUE、Long_MIN_VALUE。 前端JS的数字类型的范围 -253~253&#xff0c;即&#xff1a;-9007…...

vue使用elementUI的upload上传文件封装

这篇文章的目的 将文件上传的方法封装一下&#xff0c;供大家统一调用, 话不多说&#xff0c;直接上代码 upload 核心参数说明 action 上传的地址accept 接受上传的文件类型multiple 是否开启多文件上传模式limit 限制上传个数fileList 文件列表disabled 是否禁用 upload 核心方…...

cenos自动启动tomcat

首先创建一个脚本 关闭tomcat 等待2分钟 启动tomcat 并且把日志输出在 /usr/local/tomcat/tomcatchognqi.log #!/bin/bashexport JAVA_HOME/usr/local/jdk/jdk1.8.0_211 export JRE_HOME$JAVA_HOME/jre# 日志文件路径和文件名 LOG_FILE"/usr/local/tomcat/tomcatchognqi.…...

OSI模型与数据的封装

1、OSI模型 上层|| 七层模型 四层模型|| 应用层| 表示层 应用层 http/ftp/ssh/ftps| 会话层 -----------------------------------------------------------------------| 传输层 传输层 tcp/udp ------------------------------…...

【李沐深度学习笔记】数据操作

本课观看地址 数据操作p1 N维数组样例 N维数组是机器学习和神经网络的主要数据结构 1-d向量就是样本的各特征抽象成一个向量&#xff1b;2-d矩阵的每一行是一个样本&#xff0c;每一行都是一个样本的特征向量 3-d可以表示RGB图片&#xff0c;RGB图像是一个三维数组&#xff…...

【蓝桥杯选拔赛真题61】Scratch小猫照镜子 少儿编程scratch图形化编程 蓝桥杯选拔赛真题解析

目录 scratch小猫照镜子 一、题目要求 编程实现 二、案例分析 1、角色分析...

vue3将页面导出成PDF文件(完美解决图片、表格内容分割问题)

vue3将页面导出成PDF文件&#xff08;完美解决图片、表格内容分割问题&#xff09; 1、安装依赖2、在utils中创建htmlToPDF.js文件3、在vue中引入并使用 1、安装依赖 npm install --save html2canvas // 页面转图片 npm install jspdf --save // 图片转pdf2、在utils中创建h…...

软件测试:黑盒测试用例的四种设计方法

一、输入域测试用例设计方法 输入域测试法是一种综合考虑了等价类划分、边界值分析等方法的综合方法&#xff0c;针对输入域测试法中可能出现的各种情况&#xff0c;输入域测试法主要考虑三个方面&#xff1a;  (1)极端测试(ExtremalTesting)&#xff0c;要求在输入域中选择测…...

数据库开发-MySQL基础DQL和多表设计

1. 数据库操作-DQL DQL英文全称是Data Query Language(数据查询语言)&#xff0c;用来查询数据库表中的记录。 1.1 介绍 查询关键字&#xff1a;SELECT 查询操作是所有SQL语句当中最为常见&#xff0c;也是最为重要的操作。在一个正常的业务系统中&#xff0c;查询操作的使…...

PowerDesigner 逆向工程以及IDEA中UML插件

1、MySQL数据库连接&#xff08;JDBC方式&#xff09; 1.1 新建一个pdm&#xff0c;dbms选择mysql 1.2 Database - Connect 选择数据库连接 1.3 配置连接信息 数据库连接这里是通过一个配置文件来获取连接信息的&#xff0c;首次的话因为没有&#xff0c;所以我们需要选择…...

企业架构LNMP学习笔记56

MongoDB数据类型操作&#xff1a;CURD 1、添加数据&#xff1a; mongodb里存储数据的格式文档形式&#xff0c;以bson格式的文档形式。 创建数据库&#xff1a; > use tp5shop switched to db tp5shop > db.getName() tp5shop使用切换库&#xff0c;不存在自动创建&am…...

[Linux入门]---搭建Linux环境

1.Linux环境的搭建方式 使用Linux操作系统的三种途径&#xff1a; 1.直接安装在物理机上&#xff0c;但是由于 Linux 桌面使用起来非常不友好&#xff0c;不推荐。 2.使用虚拟机软件&#xff0c;将 Linux 搭建在虚拟机上&#xff0c;但是由于当前的虚拟机软件(如 VMWare 之类的…...

性能测试知多少---性能分析与调优的原理

最近一直纠结性能分析与调优如何下手&#xff0c;先从硬件开始&#xff0c;还是先从代码或数据库。从操作系统&#xff08;CPU调度&#xff0c;内存管理&#xff0c;进程调度&#xff0c;磁盘I/O&#xff09;、网络、协议&#xff08;HTTP&#xff0c; TCP/IP &#xff09;&…...

“对象创建”模式

通过“对象创建”模式绕开new&#xff0c;来避免对象创建 (new) 过程中所导致的紧耦合(依赖具体类)从而支持对象创建的稳定。它是接口抽象之后的第一步工作。 典型模式 Factory MethodAbstract FactoryPrototypeBuilder Factory Method 动机 (Motivation) 在软件系统中&am…...

ipad手写笔有必要买吗?好用的平板触控笔

众所周知&#xff0c;随着Apple pencil的出现&#xff0c;市面上出现越来越多平替电容笔的出现&#xff0c;无论是价格和功能&#xff0c;几乎都很接近。很多小伙伴不知如何下手&#xff0c;不知道如何从众多品牌中挑选出适合自己的电容笔&#xff0c;今天我为大家总结一下网上…...

OpenGL ES视频特效开发参考Shadertoy参数详解参考Godot文档

今天一个大厂的学员过来问shadertoy上一些参数的问题&#xff0c;因为我之前用过一段时间Godot引擎&#xff0c; 我清晰记得Godot官方文档有明确的解释&#xff0c;所以整理下发给做特效的同学。 Shadertoy是一个网站&#xff0c;它方便用户编写片段着色器并创造出纯粹的魔法。…...

java:逆序排序的三种方法

// 逆序第一种方法 public static void main(String[] args) {int arr[] {11, 22, 33, 44, 55, 66};for (int i arr.length-1; i > 0; i--) {System.out.print("\t"arr[i]);}}缺点&#xff1a;这个是直接逆转&#xff0c;如果里面是随机数没办法比较 逆序第二种…...

pgsql操作json类型

目录 一、表结构 二、实体类 三、json处理器 四、配置文件 五、josn数据 1、插入 2、查找 一、表结构 CREATE TABLE "public"."pg_user" ("id" int8 NOT NULL GENERATED ALWAYS AS IDENTITY ( INCREMENT 1 MINVALUE 1 MAXVALUE 92233720…...

Thinkphp6 配置并使用redis图文详解 小皮面板

这篇文章主要介绍了Thinkphp6 配置并使用redis的方法,结合实例形式详细分析了Redis的安装、配置以及thinkphp6操作Redis的基本技巧,需要的朋友可以参考下 一、安装redis ThinkPHP内置支持的缓存类型包括file、memcache、wincache、sqlite。ThinkPHP默认使用自带的采用think\Ca…...

公司网站制作公司排名/企业品牌营销推广

点击关注公众号&#xff0c;Java干货及时送达授权转自&#xff1a;OSCHINA&#xff0c;作者&#xff1a;局长 原文&#xff1a;https://www.oschina.net/news/135658/db-engines-ranking-202104DB-Engines 4 月份流行度排行已更新&#xff0c;基于 3 月份的整体数据变化。从总榜…...

网站建设招标样本/安康地seo

熟悉VI 是学习UNIX 系统的一个关口 (feming) vi 是visual edit 的缩写 文本编辑器是所有计算机系统中最常用的一种工具。UNIX下的编辑器有ex,sed和vi等&#xff0c; 其中&#xff0c;使用最为广泛的是vi&#xff0c;而vi命令繁多&#xff0c;论坛里好像这方面的总结不多&#…...

做软件的网站建设/班级优化大师的优点

前言&#xff1a;最近在腾讯云买了台学生机打算搭个博客玩玩&#xff0c;由于空间还在备案中&#xff0c;于是就想着先把环境&#xff08;LNMPphpmyadminwordpress&#xff09;部署好&#xff0c;环境很顺利&#xff0c;但晚上重新连上云服务器敲命令时那延时真是叫一个痛苦啊&…...

企业网站改版建议/广东seo推广

目标&#xff1a;提高结构化思维&#xff0c;书面表达&#xff0c;公文写作&#xff0c;口头(说话、演讲、讲课)表达能力 谁是我的听众&#xff1f;他们想听什么&#xff1f;他们想怎么听&#xff1f;金字塔原理的基本结构是&#xff1a;结论先行&#xff0c;以上统下&#xff…...

专做水果的网站/网站空间

2019独角兽企业重金招聘Python工程师标准>>> 两种方式判断访问终端是否是微信浏览器 JS判断 function is_weixin() { var ua window.navigator.userAgent.toLowerCase(); if (ua.match(/MicroMessenger/i) micromessenger) { $("#rs").text("微信…...

wordpress 列表样式/想做电商怎么入手

最后编辑于2019年5月8日 去年买了台Teclast的TBook&#xff0c;8G内存&#xff0c;64G SSD硬盘的&#xff0c;Win10和Android双系统。一年多用下来感觉硬盘空间实在不够&#xff0c;想把Android占的磁盘空间也用上&#xff0c;于是全新安装Windows。 准备条件&#xff1a; 1. 需…...