java从入门到劝退超级详细超级底层的入门教学脚踩面试官拳打HR全体起立

2023-11-02

java从入门到劝退超级详细的入门教学全体起立(一)

对你有帮助的话记得一键三连哦

前言:1995.5.23 sun推出的一款面向对象1995.5.23 sun推出的一款面向对象的编程语言。的编程语言。

java程序要有java环境才能运行所以我们要配置java的运行环境,因为新手呢如果要配置这些奇怪的运行环境很容易踩坑,所以我建议大家用JetBrains出品的IntelliJ IDEA,傻瓜式操作,一直点next他都帮你把所有的环境都配好了。

Java的入门篇

一、java的发展方向:

  • JavaSE(java语言的基础)
  • JavaME(移动端或者嵌入式开发)
  • JavaEE(企业级开发,也是现在主流的方向)

二、java的语言特点

  • 简单
  • 面向对象(封装继承多态)
  • 跨平台(可以在不同的操作系统下运行)

为什么java可以跨平台,这主要是因为java的代码是运行在虚拟机(JVM)上的因此可以实现跨平台

  • JVM(jvm就是java虚拟机,java文件要在jvm上面才能运行,他是用c++写的)
  • JRE(jre包含了jvm,他是java的运行环境)
  • JDK(jdk是开发者工具,jdk包含了jre,jre又包含了jvm)

java内部包含了一个虚拟机的机制,也就是说无论在什么系统,什么环境下,外界的环境与我无关,我内部始终是一个不变的虚拟机,而我们的代码就运行在这个虚拟机中,所以java可以实现跨平台性。

建议大家可以看一下大佬的文章:java程序的运行机制

java语法规范

所有的Java语句必须以;结尾!

无论是()[]还是{},所有的括号必须一一匹配!

主方法的代码只能写在{}中!

java基础语法(面向过程)

我的第一个java程序

public class Demo1{
    
    public static void main(String[] ages){
        System.out.println("Hello Java");
    }
}

控制台输出:

Hello java


//这段代码是什么意思呢?
//创建了一个类 叫 Demo1 然后里面有一个main方法,main方法也叫主方法,他是java程序的入口,主方法里调用了打印函数叫println打印了一个字符串  "Hello java" 
   public class Demo1{
 
    public static void main(String[] ages){
        
        System.out.println("Hello Java");
    }
}

java的几种基本数据类型

Java中的数据类型分为基本数据类型和引用类型两大类,引用类型我们在面向对象时再提,基本数据类型是重点中的重点!首先我们需要了解有哪些类型。然后,我们需要知道的,并不是他们的精度如何,能够表示的范围有多大,而是为什么Java会给我们定义这些类型,计算机是怎么表示这些类型的,这样我们才能够更好的记忆他们的精度、表示的范围大小。所以,我们从计算机原理的角度出发,带领大家走进Java的基本数据类型。

  • int 最常用的整形占用4个字节
  • double 最常用的浮点型(小数)双精度浮点数,最常用的存储小数的类型,占用8个字节,不能表示精确的值
  • char 字符型,采用Unicode字符编码格式,存储单个字符,占用2个字节
  • byte 字节型,用于存储整数的,占用1个字节
  • long 长整型,用于存储较大的整数的,占用8个字节
  • float 单精度浮点数,用于存储小数的,占用4个字节,不能表示精确的值
  • boolean 布尔型,存储的是true 和false 占用一个字节
  • short 短整型,用于存储整数的,占用2个字节
//变量
int a=10;
a=20;
a=30;
//变量就是可以改变的量,它的值是随时可变的,我们称为变量。变量可以是类的变量

//常量
//常量就是无法改变的量 用final修饰(tips:反射可以修改常量)
final int a=10;
a=20;//报错,不可以改变

注释

养成注释的好习惯,不然以后自己都看不懂自己的代码!注释包括单行注释和多行注释:

//我是单行注释   ----快捷键是 Ctrl+/

/**
* 我是
* 多行注释   ---- 快捷键是 Ctrl+Shift+/
  */

//TODO 待做标记

计算机中的二进制表示

早期计算机就是一个晶体管,跟灯泡一样,只有开和关 于是用 0标识关 flase 用1 标识 true。在计算机中,所有的内容都是二进制形式表示(0和1)因为我们的计算机是电子的,电平信号只有高位和低位,你也可以暂且理解为通电和不通电,高电平代表1,低电平代表0,由于只有0和1,因此只能使用2进制表示我们的数字!)比如1+1=10=2^1+0,一个位也叫一个bit,8个bit称为1字节,16个bit称为一个字,32个bit称为一个双字,64个bit称为一个四字,我们一般采用字节来描述数据大小

img

原码

虽然原码表示简单,但是原码在做加减法的时候,很麻烦!以4bit位为例:

1+(-1) = 0001 + 1001 = 怎么让计算机去计算?(虽然我们知道该去怎么算,但是计算机不知道!)

我们得创造一种更好的表示方式!于是我们引入了反码:

反码
  • 正数的反码是其本身
  • 负数的反码是在其原码的基础上, 符号位不变,其余各个位取反

经过上面的定义,我们再来进行加减法:

1+(-1) = 0001 + 1110 = 1111 => -0 (直接相加,这样就简单多了!)

思考:1111代表-0,0000代表+0,在我们实数的范围内,0有正负之分吗?

  • 0既不是正数也不是负数,那么显然这样的表示依然不够合理!
补码

根据上面的问题,我们引入了最终的解决方案,那就是补码,定义如下:

  • 正数的补码就是其本身 (不变!)
  • 负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)

其实现在就已经能够想通了,-0其实已经被消除了!我们再来看上面的运算:

1+(-1) = 0001 + 1111 = (1)0000 => +0 (现在无论你怎么算,也不会有-0了!)

所以现在,4bit位能够表示的范围是:-8~+7(Java使用的就是补码!)

的基础上+1)

其实现在就已经能够想通了,-0其实已经被消除了!我们再来看上面的运算:

1+(-1) = 0001 + 1111 = (1)0000 => +0 (现在无论你怎么算,也不会有-0了!)

所以现在,4bit位能够表示的范围是:-8~+7(Java使用的就是补码!)

下期见~

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java从入门到劝退超级详细超级底层的入门教学脚踩面试官拳打HR全体起立 的相关文章

  • 按键时关闭 ModalWindow

    我希望能够在用户按下某个键 在我的例子中是 ESC 时关闭 ModalWindow 我有一个用于按键的 Javascript 侦听器 它调用取消按钮 ID 的单击事件 jQuery modalWindowInfo closeButtonId
  • 日期语句之间的 JPQL SELECT [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我想将此 SQL 语句转换为等效的 JPQL SELECT FROM events WHERE events date BETWE
  • Spring应用中Eureka健康检查的问题

    我正在开发一个基于 Spring 的应用程序 其中包含多个微服务 我的一个微服务充当尤里卡服务器 到目前为止一切正常 在我所有其他微服务中 用 EnableEurekaClient 我想启用这样的健康检查 应用程序 yml eureka c
  • Java 枚举与创建位掩码和检查权限的混淆

    我想将此 c 权限模块移植到 java 但是当我无法将数值保存在数据库中然后将其转换为枚举表示形式时 我很困惑如何执行此操作 在 C 中 我创建一个如下所示的枚举 public enum ArticlePermission CanRead
  • 如何循环遍历所有组合,例如48 选择 5 [重复]

    这个问题在这里已经有答案了 可能的重复 如何在java中从大小为n的集合中迭代生成k个元素子集 https stackoverflow com questions 4504974 how to iteratively generate k
  • 动态选择端口号?

    在 Java 中 我需要获取端口号以在同一程序的多个实例之间进行通信 现在 我可以简单地选择一些固定的数字并使用它 但我想知道是否有一种方法可以动态选择端口号 这样我就不必打扰我的用户设置端口号 这是我的一个想法 其工作原理如下 有一个固定
  • Pig Udf 显示结果

    我是 Pig 的新手 我用 Java 编写了一个 udf 并且包含了一个 System out println 其中的声明 我必须知道在 Pig 中运行时该语句在哪里打印 假设你的UDF 扩展了 EvalFunc 您可以使用从返回的 Log
  • 在接口中使用默认方法是否违反接口隔离原则?

    我正在学习 SOLID 原则 ISP 指出 客户端不应被迫依赖于他们所使用的接口 不使用 在接口中使用默认方法是否违反了这个原则 我见过类似的问题 但我在这里发布了一个示例 以便更清楚地了解我的示例是否违反了 ISP 假设我有这个例子 pu
  • java.lang.IllegalStateException:应用程序 PagerAdapter 更改了适配器的内容,而没有调用 PagerAdapter#notifyDataSetChanged android

    我正在尝试使用静态类将值传递给视图 而不是使用意图 因为我必须传递大量数据 有时我会收到此错误 但无法找出主要原因是什么 Error java lang IllegalStateException The application s Pag
  • Java 集合的并集或交集

    建立并集或交集的最简单方法是什么Set在 Java 中 我见过这个简单问题的一些奇怪的解决方案 例如手动迭代这两个集合 最简单的单行解决方案是这样的 set1 addAll set2 Union set1 retainAll set2 In
  • 将 MOXy 设置为 JAXB 提供程序,而在同一包中没有属性文件

    我正在尝试使用 MOXy 作为我的 JAXB 提供程序 以便将内容编组 解组到 XML JSON 中 我创建了 jaxb properties 文件 内容如下 javax xml bind context factory org eclip
  • 如何在谷歌地图android上显示多个标记

    我想在谷歌地图android上显示带有多个标记的位置 问题是当我运行我的应用程序时 它只显示一个位置 标记 这是我的代码 public class koordinatTask extends AsyncTask
  • 关键字“table”附近的语法不正确,无法提取结果集

    我使用 SQL Server 创建了一个项目 其中包含以下文件 UserDAO java public class UserDAO private static SessionFactory sessionFactory static se
  • 专门针对 JSP 的测试驱动开发

    在理解 TDD 到底是什么之前 我就已经开始编写测试驱动的代码了 在没有实现的情况下调用函数和类可以帮助我以更快 更有效的方式理解和构建我的应用程序 所以我非常习惯编写代码 gt 编译它 gt 看到它失败 gt 通过构建其实现来修复它的过程
  • Eclipse 启动时崩溃;退出代码=13

    I am trying to work with Eclipse Helios on my x64 machine Im pretty sure now that this problem could occur with any ecli
  • 长轮询会冻结浏览器并阻止其他 ajax 请求

    我正在尝试在我的中实现长轮询Spring MVC Web 应用程序 http static springsource org spring docs 2 0 x reference mvc html但在 4 5 个连续 AJAX 请求后它会
  • 使用 svn 1.8.x、subclise 1.10 的 m2e-subclipse 连接器在哪里?

    我读到 m2e 的生产商已经停止生产 svn 1 7 以外的任何版本的 m2e 连接器 Tigris 显然已经填补了维护 m2e subclipse 连接器的空缺 Q1 我的问题是 使用 svn 1 8 x 的 eclipse 更新 url
  • 如果没有抽象成员,基类是否应该标记为抽象?

    如果一个类没有抽象成员 可以将其标记为抽象吗 即使没有实际理由直接实例化它 除了单元测试 是的 将不应该实例化的基类显式标记为抽象是合理且有益的 即使在没有抽象方法的情况下也是如此 它强制执行通用准则来使非叶类抽象 它阻止其他程序员创建该类
  • Spring Boot 无法更新 azure cosmos db(MongoDb) 上的分片集合

    我的数据库中存在一个集合 documentDev 其分片键为 dNumber 样本文件 id 12831221wadaee23 dNumber 115 processed false 如果我尝试使用以下命令通过任何查询工具更新此文档 db
  • Java中super关键字的范围和使用

    为什么无法使用 super 关键字访问父类变量 使用以下代码 输出为 feline cougar c c class Feline public String type f public Feline System out print fe

随机推荐

  • npm 启动输出日志

    npm start d
  • 7天学习opengl入门

    10月13号下午3 00队长给我开了一个会 10 14号开始学习opengl 今天10月21号 期间 虽然有时候课程很满 但每天都至少写一个程序 当然 这些只是我7天来业余时间的学习 我觉得这个网址不错 大家如果也想学习opengl 并且具
  • 将UTC时间格式转换成东八区时间格式

    在前后端数据接口通信中 后台返回的时间往往是 UTC 格式的 即2022 12 15T10 28 57 000 00 00这种 作为前端 我们需要将其转换为标准的本地格式 并用 YYYY MM DD HH mm ss 这种格式呈现给用户 用
  • 哈工大2018秋高级语言程序设计课程大作业

    Github文件下载地址哈工大2018秋高级语言程序设计课程 高级语言程序设计 实验大作业反思报告 实验大作业题目 智能趣味电子通讯录 类型 信息管理系统 学生姓名 郭茁宁 班 号 1837101 学 号 1183710109 所在院系 计
  • 山东大学项目实训开发日志——基于vue+springboot的医院耗材管理系统(15)

    今天测试的时候又出现了一个问题 在查看科室库的出库列表时 网页上会报出500的错误 即参数错误 但是出库的所有信息都能正确的在上面显示 同样的问题在下订单后查看订单 以及配送后查看配送列表时出现了 而这个问题在代码几乎完全一样的中心库那里却
  • Android Studio 下真机调试

    文章目录 一 开启真机调试 二 断开真机调试 一 开启真机调试 准备USB调试线 一端插在电脑USB接口上 另一端插在手机充电口上 下面以自己的手机 huawei nova 5 为例 点击手机界面上的设置应用 然后往下找到 关于手机 点击进
  • ElasticSearch-IK分词器介绍和下载

    IK分词器 什么是IK分词器 分词 把一段中文或者别的划分成一个一个的关键字 我们在搜索的时候会把自己的信息进行分词 会把数据库中或者索引库中的数据进行分词 然后进行一个匹配操作 默认的中文分词是将每个字看成一个词 比如 我爱魏一鹤 会被分
  • 步进电机基础(2.4)- HB型步进电机的转子齿数与主极数之间的关系

    步进电机基础 2 4 HB型步进电机的转子齿数与主极数之间的关系 前言 基本信息 公式 前言说明 HB型步进电机的转子齿数与主极数之间的关系 1 HB步进电机的相数 转子齿数 主极数之间的表达式 2 相内磁路的一般表达式 3 相间磁路的一般
  • pdf太大了如何压缩?这四种方法快来尝试下吧

    pdf太大了如何压缩 我们都知道 大型PDF文件会占据较多的存储空间 特别是当需要处理和存储大量PDF文件时 而我们通过压缩PDF文件 能够在很大程度上缩减文件大小 进而便于文件的传输 备份和存储 另外 在某些情况下 存储和传输设备 如移动
  • 献给阿尔吉侬的花束( 入门级bfs查找 + 模版解读 + 错误示范)

    献给阿尔吉侬的花束问题 文章目录 献给阿尔吉侬的花束问题 前言 题目描述 题目分析 方法判定 bfs 算法模版介绍 两个数组 记录地图 记录移动距离 一个队列 依次遍历所有接触到的点 一次遍历 模版代码如下 题解代码 错误示范 总结 前言
  • 【Java8 新特性 3】Supplier简介

    在Java8中增加的接口Supplier 最适合用于表示工厂 带有Supplier的方法 通常应该限制输入工厂的类型参数使用有限制的通配符类型 以便客户端能够传入一个工厂 来创建指定类型的任意子类型 应该将这些资源或者工厂传给构造器 或者静
  • JavaFX 基础介绍

    目录 JavaFX 基础介绍 代码介绍 整体结构 场景面板介绍 FlowPane流失布局 BorderPane边框布局 控件介绍 Label 文本标签 TextField 输入框 PasswordField Button 按钮 按钮的点击事
  • Linux命令:traceroute命令(路由跟踪)

    traceroute是用来检测发出数据包的主机到 标主机之间所经过的网关数量的工具 traceroute的原理是试图以最小的TTL 存活时间 发出探测包来跟踪数据包到达目标主机所经过的网关 然后监听 个来自网关ICMP的应答 发送数据包的大
  • 简历造假,你以为我不知道?

    本文共 3495字 预估阅读时间 9分钟 前言 上到职场干将下到职场萌新 都会接触到包装简历这个词语 当你简历投到心仪的公司 公司内负责求职的工作人员是如何甄别简历的包装程度的 Coody老师根据自己的经验写下了这篇文章 谁都不是天才 包装
  • 负载均衡的三种实现方式

    不懂高性能的负载均衡设计 架构师带你飞 在软件系统的架构设计中 对集群的负载均衡设计是作为高性能系统优化环节中必不可少的方案 负载均衡本质上是用于将用户流量进行均衡减压的 因此在互联网的大流量项目中 其重要性不言而喻 一 什么是负载均衡 早
  • 由一次mycat+mysql水平拆分集群问题引发的思考

    近段时间部署和测试了一个mycat 4 Percona tokudb的水平拆分集群 前段应用是将一类奖状数据不断地写入到这个库中 只有insert操作 前几天运行状态还比较好 从昨天开始 由于业务量突然增加了一些 磁盘IO负载变得很高 而且
  • 嵌入式系统设计学习笔记1

    一 计算机架构 1 计算机架构主要有两种 哈佛架构 冯诺依曼架构 冯诺依曼的核心是 存储程序 顺序执行 规定计算机必须具有如下功能 1 把需要的程序和数据送至计算机中 2 必须具有长期记忆程序 数据 中间结果及最终运算结果的能力 3 能够完
  • 【一个常规的算法,最长公共前缀,Python】

    TOC 给定一串字符串 要求提取其中重复率最高的字符串 不包含单字符串 思路分析 采取分段进行遍历的方式 达到出现所有情况为止 给定 abcabc 固出现情况为 ab 2 bc 2 abc 2 ca 1 bca 1 cab 1 abca 1
  • QGridLayout::addWidget 的使用详解

    Qt系列文章目录 文章目录 Qt系列文章目录 前言 一 QGridLayout addWidget 二 使用步骤 1 第一个版本 2 第二个版本 参考 前言 Qt中经常使用网格布局QGridLayout 并在网格中依次加入控件 我们可以依次
  • java从入门到劝退超级详细超级底层的入门教学脚踩面试官拳打HR全体起立

    java从入门到劝退超级详细的入门教学全体起立 一 对你有帮助的话记得一键三连哦 前言 1995 5 23 sun推出的一款面向对象1995 5 23 sun推出的一款面向对象的编程语言 的编程语言 java程序要有java环境才能运行所以