Java SE(1)——JDK安装,基本数据类型和运算

news2024/11/18 9:47:17

JDK安装,基本数据类型和运算

一 Java语言的初体验

1.JDK下载地址

Oracle官网: Java Downloads | Oracle,根据需要,下载最新或历史版本。

2.运行Java文件

编写一个简单的 HelloWorld.java 文件

public class HelloWorld{
	public static void main(String [] args){
		System.out.println("Hello,World.Shawn");
	}
}

使用 javac 命令编译成字节码文件(.class),然后使用 java 命令运行。

# 1.编译
javac HelloWorld.java
# 2.运行 HelloWorld.class(不加后缀名)
java HelloWorld
  • javac :JDK提供的编译工具
  • java :JDK提供的运行,调试工具
  • 字节码:经过 javac 编译后的Java文件

javac.exe 与 java.exe 位于JDK的安装目录下

3.环境变量

如果想要在任意目录下打开指定的软件,就可以将软件的路径配置到环境变量 path

在这里插入图片描述

其中 JAVA_HOME 的值为JDK安装的根目录

需要注意的是,从 JDK11 开始,将不再需要手动配置Path路径,安装完JDK之后,会自动配置

在这里插入图片描述

默认路径为:

C:\Program Files (x86)\Common Files\Oracle\Java\javapath

在这里插入图片描述

需要注意的是,JDK 默认只提供了以上几个工具,如果想要使用其他的工具,可以使用以下两种方式:

  • 将需要使用的工具复制到上面的路径下
  • 使用之前的JAVA_HOME+Path方式配置,即新建一个JAVA_HOME的系统变量,然后变量值为安装JDK的根目录,然后再将JAVA_HOME配置到Path

二 Java语言介绍

1.Java语言的发展

在这里插入图片描述

2.Java语言可以做什么

在这里插入图片描述

1.JavaSE

Java SEJava语言的标准版,用于桌面应用的开发,是Java其他两个版本的基础。

2.JavaME

Java ME是Java语言的小型版,用于嵌入式电子设备或者小型移动设备

3.JavaEE

Java EE 是 Java 语言的企业版,用于 Web 方向的网站开发。

4.Java跨平台原理

在这里插入图片描述

Java 语言的跨平台,是通过 JVM(Java虚拟机)来实现的。

Java 不是直接运行在操作系统上,而是运行在操作系统对应的 JVM(Java虚拟机)上。

3.JDK 与 JRE

在这里插入图片描述

JRE:JRE是指 Java 的运行环境

JDK:JDK 是 Java 的开发工具包

JVM:Java 程序真正运行的地方

JDK,JRE,JVM 三者的关系?

  • JDK 包含了 JRE
  • JRE 包含了 JVM

三 Java 基础语法

1.注释和关键字

注释:

- 单行注释: //  注释文字
- 多行注释: /*  注释文字 */
- 文档注释: /** 注释文字 */

关键字:Java语言体系中,被赋予了特殊含义的英文单词

在这里插入图片描述

Class:类,是 Java 中最基本的组成单元

2.字面量

字面量是用于表达源代码中一个固定值的表示法。

字面量的类型:

  • byte:8位
  • short:16位
  • int:32位
  • long:64
  • float
  • double
  • boolean
  • char

一个字节占用8位

3.特殊字符

  • \t:制表符,打印时将前面字符串的长度,使用空格补齐到 8 位,最少补1个空格,最多补8个空格
  • \n:换行符
  • \r:回车符

4.变量

修饰符 数据类型 变量名 = 数据值;
  • 数据类型:限制变量能存储的数据类型
  • 修饰符:限定访问范围或是否允许修改,是否静态等

5.计算机存储规则

计算机中的数据,都是以二进制的形式来存储的

常见的进制:

  • 二进制:0~1,代码中以 0b 作为开头
  • 八进制:0~7,代码中以0开头
  • 十进制:0~9
  • 十六进制:09,af,代码中以0x开头

1.任意进制转十进制

公式:系数*基数的全次幂 相加
  • 系数:每一位上的数
  • 基数:当前的进制数
  • 权:从右往左,0,1,2,3,4,…

在这里插入图片描述

2.十进制转任意进制

除基取余法:不断的除以基数(几进制,基数就是几)得到余数,直到商为0,再将余数倒着拼接起来即可。

在这里插入图片描述

3.ASCII码表

在这里插入图片描述

字母是通过ASCII码表中对应的二进制存储到计算机中的

在这里插入图片描述

4.图片数据的存储

  • 黑白图:通过 0 和 1区分黑色白色
  • 灰度图:使用0~255表示不同的灰度数据
  • 彩色图:利用光学三原色(红绿蓝)的不同搭配,来实现各种颜色

在这里插入图片描述

光学三原色:红®绿(G)蓝(B),即常用的RGB颜色,例如:rgb(255,255,255)

当使用十六进制表示时,取值范围为0~FF,则 rgb(255,255,255)表示为ffffff

5.声音的存储

在这里插入图片描述

对声音的波形图进行采样来存储音频文件,其中波上的每一个点都有一个对应的数据。

形成波的点越多,则对音频文件的还原越好。

6.标识符及命名规则

命名规则:

  • 由数字,字母,下划线(_) 和 美元符($) 组成
  • 不能以数字开头
  • 不能是关键字
  • 区分大小写

在这里插入图片描述

7.键盘录入

使用Scanner类来实现键盘的录入

简单示例:

Scanner scanner=new Scanner(System.in);
String str = scanner.next();
System.out.println(str);

四 运算符及类型转换

1.算数运算符

加(+),减(-),乘(*),除(/),取模(%)

自增(++),自减(–)

2.类型转换

  • 隐式转换:取值范围小的,可直接转换成取值范围大的,无需手动操作,称之为自动类型提升

在这里插入图片描述

  • 显示转换:从大到小的转换,会丢失精度

在这里插入图片描述

3.赋值运算符

在这里插入图片描述

4.逻辑运算法

在这里插入图片描述

5.短路逻辑运算符

在这里插入图片描述

  • &&:左边为 false ,则全部为 false
  • ||:左边为 true, 则全部为 true

五 原码反码补码

1.原码

原码是十进制数据的二进制表现形式,最左边为符号位,0 表示 正数,1 表示 负数

在这里插入图片描述

一个字节占8个比特位,其中第一位是符号位

使用原码在进行 正数 的计算时是没有问题的,但是在 负数 计算时,计算结果却与预期结果完全相反

#正数示例 1+1=2
00000001 + 00000001 = 00000010 十进制为 2
#负数示例 -1+1=0
10000001 + 00000001 = 10000010 预期值为 0 , 但是计算的实际值却是 -2

2.反码

反码是为了解决原码不能计算负数问题而出现的。

计算规则:

  • 正数的反码不变
  • 负数的反码,是在原码的基础上,符号位不变,但是数据取反,0 变 1 , 1 变 0

使用反码进行计算示例:

# 求 -2 的 反码
1000010 的 反码 为 11111101
# 计算 -2 + 1 = -1
   11111101 
+  00000001 
--------------
=  11111110
# 还原计算结果为 原码
   10000001 = -1

使用反码还原时,规则也是 符号位不变,但是数据取反,0 变 1 , 1 变 0

特殊情况:使用反码进行计算,结果跨 0 时,依然会出现问题。

负数计算跨0出现问题的根本原因在于,0 的反码有两个:00000000 和 11111111

3.补码

负数的补码 = 负数的反码 + 1,用来屏蔽 +0 与 -0 的特殊情况

负数的补码 = 负数的反码 + 1,正数的原码,反码,补码都是一样

另外补码还能多记录一个特殊的值:-128,该数据在 1 个字节下,没有原码和反码

在这里插入图片描述

负数跨0计算示例:

# 计算 -2 的 反码
1000010 的 反码 为 11111101
# 计算 -2 的 补码
11111101 + 1 = 11111110
# 计算 -2 + 3 = 1
   11111110 
+  00000011 
--------------
=  00000001
# 符号位为 0 表示为 正数,正数的原码、反码、补码都是一样,则 00000001 转换为十进制为 1

计算机中实际的计算都是以补码的形式来计算的

4.位运算

在这里插入图片描述

1.逻辑与

#都为 1 时 ,结果为 1,其他均为 0
   00000010 
&  00000011 
--------------
=  00000010  = 2

2.逻辑或

#都为 0 时 ,结果为 0,其他均为 1
   00000010 
|  00000011 
--------------
=  00000011  = 3

3.左位移

向左移动,低位补 0,低位指右侧位

#向左移动,低位补0
2<<2=8
-----------
   00000010 
<<        2
--------------
=  00001100  = 8

4.右位移

向右移动,高位补 0 或 1,即原本为正则补 0,为负则补 1

#向右移动,高位补 0 或 1,即原本为正则补0,为负则补1
6>>2=1
-----------
   00000110 
>>        2
--------------
=  00000001  = 1

5.无符号右移

无视符号,直接移动,高位补0

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

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

相关文章

提供网络可测试的接口【公共Webservice】

提供网络可测试的接口 1、腾讯QQ在线状态 WEB 服务 Endpoint: qqOnlineWebService Web 服务 Disco: http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx?disco WSDL: http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx?wsdl 腾讯QQ在线状态 WEB 服…

【每日一题】 将一句话单词倒置,标点不倒置

用C语言将一句话的单词倒置&#xff0c;标点不倒置。 比如输入&#xff1a; i like shanghai. 输出得到&#xff1a; shanghai. like i 这道题目有很多种做法&#xff0c;既可以用递归&#xff0c;也可以分成两部分函数来写&#xff0c;本文就详细来讲解分装为两个函数的做法。…

如何从0开始搭建Vue组件库

前言&#xff1a; 组件设计是通过对功能及视觉表达中元素的拆解、归纳、重组&#xff0c;并基于可被复用的目的&#xff0c;形成规范化的组件&#xff0c;通过多维度组合来构建整个设计方案&#xff0c;將这些组件整理在一起&#xff0c;便形成组件库。本文我们主要讲述基于 V…

微服务学习:SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式

目录 一、高级篇 二、面试篇 实用篇 day05-Elasticsearch01 安装elasticsearch 1.部署单点es 2.部署kibana 一、高级篇 二、面试篇 实用篇 day05-Elasticsearch01 安装elasticsearch 1.部署单点es 1.1.创建网络 因为我们还需要部署kibana容器&#xff0c;因此需要…

高校房产管理系统用到了哪些技术?

数图互通高校房产管理系统是基于公司自主研发的FMCenterV5.0平通过在中国100多所高校的成功实施和迭代&#xff0c;形成了一套成熟、完善、全生命周期的房屋资源管理解决方案。台&#xff0c;是针对中国高校房产的管理特点和管理要求&#xff0c;研发的一套标准产品&#xff1b…

【代码随想录训练营】【Day17】第六章|二叉树|110.平衡二叉树|257. 二叉树的所有路径|404.左叶子之和

平衡二叉树 题目详细&#xff1a;LeetCode.110 由题可知&#xff1a;一个平衡二叉树需要满足&#xff0c;其每个节点的左右两个子树的高度差的绝对值不超过 1 。 我们可以依照题意&#xff0c;直接来一波模拟&#xff1a; 利用层序遍历&#xff08;或其他遍历方法&#xff…

@所有人,OceanBase DevCon • 2023来啦

本文by&#xff1a;即将与大家见面的 OceanBase 2010 年&#xff0c;OceanBase 第一个版本诞生。在过去的十三年里&#xff0c;我们的产品技术&#xff0c;从支付宝走向众多企业&#xff0c;跟随着开源和云的成长&#xff0c;逐渐成为开发者喜欢的数据库。 2023 年 3 月 25 日…

MySQL的日志详解

目录 一.介绍 日志分类 二.错误日志 三.二进制日志—binlog 概述 日志格式 操作 四.查询日志 五.慢查询日志 一.介绍 在任何一种数据库中&#xff0c;都会有各种各样的日志&#xff0c;记录着数据库工作的方方面面&#xff0c;以帮助数据库管理员追踪数据库曾经发生过的…

IP路由基础

——IP路由基础&#xff08;IA&#xff09;—— ​​​​​​​HCIA全套笔记已经上线&#xff08;arpAAAvlanTrunk链路聚合vlan间通信ACL广域网技术以太网交换...........)_孤城286的博客-CSDN博客 目录 ——IP路由基础&#xff08;IA&#xff09;—— &#xff08;1&#…

【Debug】Centos 7 下部署 ElasticSearch 及 Kibana 时踩过的坑

Windows 电脑安装的 Centos 7 都是 X86_64版本, 但是 MAC 电脑 M1 芯片安装的是 arm 64 版本的 Centos 7, 这就导致有些镜像的安装可能会出现问题. 如果拉取速度比较慢, 修改镜像源, 如我的镜像源如下: 执行创建或修改镜像源指令: vim /etc/docker/daemon.json, 然后将下面的内…

【CMU15-445数据库】bustub Project #2:B+ Tree(上)

&#xff08;最近两个月学校项目有亿点忙&#xff0c;鸽得有点久&#xff0c;先来把 Project 2 补上&#xff09; 本节实验文档地址&#xff1a;Project #2 - BTree Project 2 要实现的是数据结构课上都会讲的一个经典结构 B 树&#xff0c;但是相信大多数的同学&#xff08;…

vue中,给一个URL地址,利用FileSaver.js插件下载文件到本地

①首先下载 FileSaver.js 插件 npm install file-saver --save ②在需要的.vue页面引入 import { saveAs } from file-saver 在HTML中引入 <script src"https://cdn.bootcdn.net/ajax/libs/FileSaver.js/2.0.5/FileSaver.min.js"></script> //Fil…

k8s 安装dashboard

前言 上一篇中将k8s简单部署安装上了&#xff0c;这篇接着安装下dashboard。 具体步骤 下载yaml文件 wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.0/aio/deploy/recommended.yaml注意&#xff1a;这里使用的版本是v2.5.0&#xff0c;这个要和k8s的版…

褪去大厂光环下的功能测试,出去面试自动化居然一问三不知......不淘汰你淘汰谁呢

在一家公司待久了技术能力反而变弱了&#xff0c;原来的许多知识都会慢慢遗忘&#xff0c;这种情况并不少见。 一个京东员工发帖吐槽&#xff1a;感觉在大厂快待废了&#xff0c;出去面试问自己接口环境搭建、pytest测试框架&#xff0c;自己做点工太久都忘记了。平时用的时候…

CCF-CSP真题《202212-2 训练计划》思路+python题解

想查看其他题的真题及题解的同学可以前往查看&#xff1a;CCF-CSP真题附题解大全 试题编号&#xff1a;202212-2试题名称&#xff1a;训练计划时间限制&#xff1a;1.0s内存限制&#xff1a;512.0MB问题描述&#xff1a; 问题背景 西西艾弗岛荒野求生大赛还有 n 天开幕&#xf…

总结Anisble中的任务执行控制并练习

文章目录一、循环1.简单循环2.循环散列或字典列表二、条件三、触发器四、处理失败任务1.ignore_errors2.force_handlers3.changed_when4.failed_when5.block五、 练习建立大小为1500M名为/dev/sdb1的设备利用ansible循环安装且开启vsftpd&#xff0c;apache&#xff0c;dns&…

java8新特性【2023】

Lambda表达式 新的一套语法规则 是一个匿名函数 Testpublic void test1(){Runnable r1 new Runnable(){Overridepublic void run() {System.out.println("线程A");}};r1.run();System.out.println("");Runnable r2 () -> System.out.println("…

linux 安装rabbitmq 文档

1、下载rabbitMQ https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.9.15对应的erlang https://packagecloud.io/app/rabbitmq/erlang/search?distel%2F7https://packagecloud.io/rabbitmq/erlang/packages/el/7/erlang-23.3.4.11-1.el7.x86_64.rpm?distro_ver…

Mysql | Error Code: 1153 - Got a packet bigger than ‘max_allowed_packet‘ bytes

描述 在执行sql语句插入的时候&#xff0c;报出了Error Code: 1153 - Got a packet bigger than ‘max_allowed_packet’ bytes 错误 解决方法 &#x1f6a9; 临时调整&#xff0c;重启后失效 1️⃣ 查询默认的max_allowed_packet值大小 执行语句&#xff1a; SHOW VARIABLE…

[Android Studio] Android Studio Virtual Device虚拟机的功能试用

&#x1f7e7;&#x1f7e8;&#x1f7e9;&#x1f7e6;&#x1f7ea; Android Debug&#x1f7e7;&#x1f7e8;&#x1f7e9;&#x1f7e6;&#x1f7ea; Topic 发布安卓学习过程中遇到问题解决过程&#xff0c;希望我的解决方案可以对小伙伴们有帮助。 &#x1f680;write…