Java0 Java基础知识

news2024/11/24 14:37:56

预备知识

我们各种各样的信息是怎么存储到计算中的?

二进制

二进制是什么

由德国的莱布尼茨于 1679 年发明。 二进制数据是用0 和 1 两个数码来表示的数。它的基数为 2 ,进位规则是"逢二进一" ,数字计算机只能识别和处理由0和1符号串组成的代码。

二进制转十进制 

采用“权相加法”

1.列出对应二进制的位权

2.计算位权的值

3.各个位置上的数和位权做乘法操作,得到结果

4.把第三步得到的结果相加,最终的结果就是对应的十进制的值 

 十进制转二进制

逆向思维-拆分法

"除 2 取余 ,逆序排列"

1. 十进制的数字除以2

2. 得到商一直除,记录余数

3. 商为0的时候停止

4. 余数倒着看,就是最终的结果

编程语言发展历史

第一代语言是机器语言

机器语言:由数字(0,1)组成所有指令。当让你使用数字编程。 机器语言特点:速度快、繁琐易出错 

第二代语言是汇编语言

开始改进机器语言 ,使用英文缩写的 助记符 来表示基本的计算机操作. 汇编语言虽然能编写高效率的程序 ,但是学习和使用都不是易事 ,并且很难调试。并且对与程序来说,能读懂上个月自己写的 代码都成为一种挑战 

示例:输出HelloWorld 

第三代是高级语言 

但是随着计算机的发展 ,渗透到了工作生活的更 多的方面 ,一些复杂的任务出现了 ,汇编语言就显得力不从心。 像我们熟知的 C、 C + +、Java 等 等都是高级语言。

高级语言特点:编写容易、可读性高。离底层远,相比低级语言效率低。 

常见DOS(Disk Operating System磁盘操作系统)命令 

1. cd 目录路径 进入一个目录

2. cd .. 进入父目录

3. dir 查看本目录下的文件和子目录列表

4. 上下键 查找敲过的命令(切换上下命令)

5. cls 清除屏幕命令

6. exit 退出命令 

1.1 面向对象编程思想 

1.1.1 Java语言介绍 

Java是什么 

Java是一种优秀的程序设计语言,它具有令人赏心悦目的语法和易于理解的语义

Java有一系 列计算机软件和规范形成的技术体系,用于软件开发和跨平台部署的支持环境

 Java的应用领域很广泛

Java语言的发展史 
创始人 

1991 年 ,James Gosling 在 SUN 公司的工程师小组想要设计这样一种小型计算机语言,主要用于像电视盒这样的消费类电子产品。类似智能家居的概念。(sun公司放弃)

95年互联网崛起,进行互联网发展,改造Oak,

95年5月提出(Write once,Run anywhere) 同年改造次年发布Java(爪哇岛) 

 版本发布 

 

1.1.2 类和对象 

类的定义:

语法格式为 修饰词 class 类名{

属性field

方法method

}

<1>修饰词:public

<2>类名:大驼峰命名

<3> 属性field:

《1》位置:类的内部,方法的外部,属于成员变量。

《2》定义:①修饰符 ②数据类型 ③变量名

①修饰符:public

②数据类型:可为任意数据类型

③变量名:

<4>方法method:

《1》位置:类的内部,其他方法的外部,为成员方法,不加static。

《2》定义::①修饰符 ②返回值数据类型 ③方法名(④参数类型 参数名){

⑤方法体;

⑥Return 返回值;

}

对象

(1)对象创建:

<1>导包:import 包名.类名(同一个包下不用导包,java.lang不用导包)。

<2>创建对象:类名 对象名=new 类名()。

<3>使用:

《1》调用属性:①对象名.属性名=值--------赋值

②数据类型 变量名=对象名.属性名------取值。

《2》调用方法:对象名.方法名(参数)。

 1.1.3 面向对象的特征

封装:

封装是面向对象编程的一个重要原则,其目的是将对象的属性和行为包装在一个独立的结构里,同时隐藏内部实现细节。
在Java中,通过使用private、protected、public等访问控制符来限制对类成员的访问,确保数据的安全,并且提供公共的方法(如getter和setter)供外界访问和修改私有属性。
例如,一个Student类的实例会包含诸如id、name和sex等私有属性,外部只能通过该类提供的公有方法(如getId()、setId(Long id)等)来操作这些属性。
封装的优点在于能够减少代码间的耦合,便于数据检查,保护对象信息的完整性,以及提高代码的可维护性。
继承:

继承允许一个类(子类)继承另一个类(父类)的特性,使得子类能够复用父类的字段和方法,同时增加或覆盖某些特定的功能。
Java支持单继承(一个子类只能继承一个直接父类),但可以通过接口实现多重继承的效果。子类可以继承父类的非私有成员,并能够重写父类的方法以改变其行为。
继承的主要优点是提高了代码的复用性和可扩展性,简化了程序的设计过程。
例如,如果Son类继承了Father类,那么Son类的实例就能直接使用Father类定义的属性和方法,或者通过构造器和方法来操作父类中的受保护成员。
多态:

多态指的是同一个接口或方法在不同对象上具有不同的实现方式。它允许使用父类类型的引用来指向子类的对象,从而实现更一般化的编程。
在Java中,多态主要通过方法的重写(Override)和接口的实现来实现。重写使得子类可以提供特定实现,而接口提供了一种规范,让不同类可以实现同一组操作。
例如,定义一个Animal接口,其中包含一个sound()方法。Dog和Cat类都实现了Animal接口,并分别重写了sound()方法。通过Animal类型的引用,可以调用不同对象的sound()方法,得到各自不同的叫声。
多态极大地增强了代码的灵活性和可扩展性,允许编写更加通用的代码,适应更多的情况。
总之,通过对封装、继承和多态的合理应用,开发者可以构建出既健壮又灵活的软件系统。在实际开发中,运用这三大特性可以帮助管理软件复杂性,提高代码的重用性和可维护性。

 1.1.4 Java语言的特点

跨平台/可移植性

这是 Java 的核心优势。Java 在设计时就很注重移植和跨平台性。比如 :Java 的 int 永 远都是 32 位。不像 C++可能是 16 ,32 ,可能是根据编译器厂商规定的变化。这样的话程 序的移植就会非常麻烦。 

安全性 

Java 适合于网络/分布式环境 ,为了达到这个目标 ,在安全性方面投入了很大的精力 , 使 Java 可以很容易构建防病毒 ,防篡改的系统。 

面向对象 

面向对象是一种程序设计技术 ,非常适合大型软件的设计和开发。 由于 C++为了照顾 大量 C 语言使用者而兼容了 C ,使得自身仅仅成为了带类的 C 语言 ,多少影响了其面向对 象的彻底性 !Java 则是完全的面向对象语言。 

简单性 

Java 就是 C++语法的简化版 ,我们也可以将 Java 称之为“C++-”。跟我念“C 加加 减” ,指的就是将 C++的一些内容去掉 ;比如 :头文件 ,指针运算 ,结构 ,联合 ,操作符 重载 ,虚基类等等。 同时 ,由于语法基于 C 语言 ,因此学习起来完全不费力。 

高性能 

Java 最初发展阶段 ,总是被人诟病“性能低” ;客观上 ,高级语言运行效率总是低于 低级语言的 ,这个无法避免。Java 语言本身发展中通过虚拟机的优化提升了几十倍运行效 率。 比如 ,通过 JIT(JUST IN TIME)即时编译技术提高运行效率。 将一些“热点”字节码 编译成本地机器码 ,并将结果缓存起来 ,在需要的时候重新调用。这样的话 ,使 Java 程序 的执行效率大大提高 ,某些代码甚至接待 C++的效率。 

分布式 

Java 是为 Internet 的分布式环境设计的 ,因为它能够处理 TCP/IP 协议。事实上 ,通 过 URL 访问一 个网络资源和访问本地文件是一 样简单的 。 Java 还支持远程方法调用 (RMI,Remote Method Invocation) ,使程序能够通过网络调用方法。 

多线程 

多线程的使用可以带来更好的交互响应和实时行为。 Java 多线程的简单性是 Java 成 为主流服务器端开发语言的主要原因之一。 

健壮性 

Java 是一种健壮的语言 ,吸收了 C/C + + 语言的优点 ,但去掉了其影响程序健壮性的 部分(如 :指针、 内存的申请与释放等) 。Java 程序不可能造成计算机崩溃。即使 Java 程 序也可能有错误。如果出现某种出乎意料之事 ,程序也不会崩溃 ,而是把该异常抛出 ,再通 过异常处理机制加以处理。 

解释性 

体系结构中立 

动态性 

1.2 编写Java程序的步骤 

1.2.1 准备Java开发环境 

核心关键字JDK、JRE、JVM 

JVM:全称“Java Virtual Machine”(Java虚拟机),用于运行Java应用程序。不同的操作系统有不同的虚拟机。Java 虚拟机机制屏蔽了底层运行平台的差别,实现 了“一次编译 ,随处运行”。 Java 虚拟机是实现跨平台的核心机制。 

JRE:全称“Java Runtime Environment”(Java运行环境),提供核心类库 + JVM 

 JDK:全称“Java Development Kit”(Java开发工具包,程序员使用),包含jre,以及增加编译、调试、监控 等用于程序开发的文件。

 下载、安装JDK

注意:路径中最好不要包含中文和空格 

先下载,安装

java

javac

java -version

查看是否安装JDK

java -verbose 查看安装路径

配置环境变量 

JAVA_HOME    安装路径

Path

1.2.2 准备编程工具 

1.2.3 第一个Java程序 

Java程序执行流程 

源代码编写 

用记事本或IDE等工具完成程序代码的输入,保存为后缀名为 .java 的 Java 源文件 

源代码编译 

用javac命令 使用Java 编译器对源文件进行语法检查,如果没有语法错误,编译成功后将生成后缀名为 .class 的字节码文件。 

运行字节码 

使用java命令启动JVM虚拟机,并使用Java解释器将字节码文件翻译成机器代码,执行并显示结果。 

出错原因:文件中存在汉字,无法编译识别 解决方案1:javac -encoding utf-8 Demo.java 解决方案2:文件另存为-编码格式选择UTF-8 

基本类的语法结构 

完整Java程序包含内容 

源文件中带有class类的定义,类的内容要放在花括号内 

应用程序的入口方法,main 

方法内执行的内容、输出语句等 

注释 

单行注释 //

多行注释 /* */

文本注释 /** */ 

类名规范要求 

● 类名必须以数字、字母、下划线组成。数字不能做开头。不能是关键字。

● 规范的类名,以大写字母开头,使用UpperCamelCase风格。 

输出语句 

输出并换行   System.out.println();

输出   System.out.print();   注意事项:必须要输入内容

格式化输出  System.out.printf();

转义符 

制表符\t

在其前方位置添加空格 如果前面加上空格的字符数不足四的倍数,则补足。

若是四的倍数则在其后补上四位空格。 

\n 换行符号 

如想要展示转义符,需要在其前面加\ 

1.3 标准 I/O

1.3.1 标准输入(出)流

1.3.2 通过Scanner类实现输入输出 

Scanner sc = new Scanner(); 

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

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

相关文章

联想电脑重装系统时无法发现硬盘

&#x1f3c6;本文收录于《CSDN问答解惑-专业版》专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收…

C语言—水手分椰子问题

自己敲得&#xff1a; #include<stdio.h> #include<math.h> int main() {int i, j;float n;for (i 0;; i){n 5 * i 1;for (j 0; j < 4; j)//要求这四次每次的n都是整数才行{n n * 5 / 4 1;if (fmod(n, 1) ! 0) break;//或者 if(n!(int)n) break;}if (j …

TypeScript位运算

参考文献&#xff1a; https://blog.csdn.net/xuaner8786/article/details/138858747 https://www.runoob.com/typescript/ts-operators.html 位运算符 TypeScript 中的位运算符用于在二进制位级别上操作数字。这些运算符在处理整数和底层系统编程时特别有用。以下是一些使用…

C:冒泡排序

1、冒泡排序介绍&#xff1a; 冒泡排序的核心思想就是&#xff1a;两两相邻的元素进行比较。 先用一个例子来帮助大家理解一下冒泡排序的算法是怎们进行的 有一排高矮不同的人站成一列&#xff0c;要按照从矮到高的顺序重新排队。 冒泡排序的方法就是&#xff0c;从第一个人…

【栈和队列】常见面试题

文章目录 1.[有效的括号](https://leetcode.cn/problems/valid-parentheses/description/)1.1 题目要求1.2 利用栈解决 2. [用队列实现栈](https://leetcode.cn/problems/implement-stack-using-queues/description/)2.1 题目要求2.2 用队列实现栈 3.[用栈实现队列](https://le…

cesium gltf模型

cesium 支持的三维模型格式包括GLTF和GLB&#xff08;二进制glTF文件&#xff09;。 本文通过使用Entity图元的modelGraphics对象来加载gltf模型&#xff0c;简单对gltf模型的加载进行了封装。通过设置模型的欧拉角&#xff0c;可以计算模型的朝向。 1 3D数学中模型旋转的方式…

数据定义和操作

一、数据定义语言和操作语言 1. 分析需求设计数据库表 根据“优乐网”系统需求&#xff1a; 此系统满足以下需求&#xff1a; 系统支持生成商品的入库和出库。入库之后的商品可以在平台显示 所有用户都可以浏览系统的商品信息&#xff0c;只有注册用户才能订购团购商品和服…

机械学习—零基础学习日志(python编程)

零基础为了学人工智能&#xff0c;正在艰苦的学习 昨天给高等数学的学习按下暂停键&#xff0c;现在开始学习python编程。 我学习的思路是直接去阿里云的AI学习课堂里面学习。 整体感觉&#xff0c;阿里云的AI课堂还是有一些乱&#xff0c;早期课程和新出内容没有更新和归档…

进阶学习------linux运维读写执行权限

进阶学习------linux运维读写执行权限 在UNIX和类UNIX操作系统中&#xff0c;文件权限是通过一组特定的数字来表示的&#xff0c;这些数字分为三组&#xff0c;分别对应于用户&#xff08;文件所有者&#xff09;、组和其他用户的权限。每组权限由三个二进制位表示&#xff0c;…

如何进行硬件调试?

硬件调试是硬件系统设计、开发和制造过程中不可或缺的一环&#xff0c;旨在对可能出现的问题进行分析和解决。以下是进行硬件调试的一般步骤和方法&#xff1a; 一、准备阶段 熟悉设计文档&#xff1a;在开始调试之前&#xff0c;需要详细阅读和理解硬件系统的设计文档、原理图…

【探索数据结构与算法】——深入了解双向链表(图文详解)

目录 一、双向链表的基本概念 ​​​ 二、双向链表的结构 三、双向链表的基本操作实现方法 1.双向链表的初始化 2.双向链表的头插 3.双向链表的尾插 6.查找节点 7.在指定位置之前插入节点 8.删除指定位置节点 9.打印链表数据 10.双向链表销毁 四、完整代码实现 …

html+css+js网页设计 星享咖啡6个页面(带js) ui还原度90%

htmlcssjs网页设计 星享咖啡6个页面&#xff08;带js&#xff09; ui还原度90% 网页作品代码简单&#xff0c;可使用任意HTML编辑软件&#xff08;如&#xff1a;Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等…

一个拳打Claude3.5 Artifacts 脚踢软件外包公司的国产AI神器

Claude3.5的Artifacts功能想必大家都有所耳闻吧。 不了解的小伙伴也没关系&#xff0c;看下面这个视频。 更详细的介绍可以看之前我写的文章 关于Claude3.5-Sonnet引以为傲的功能&#xff0c;在半年前就被某国产平台无情碾压的那档事&#xff01;_claude 3.5 sonnet 国内能用…

20240808在飞凌OK3588-C开发板上使用HDMI OUT接口的SONY索尼8530机芯的YUV模式录像

20240808在飞凌OK3588-C开发板上使用HDMI OUT接口的SONY索尼8530机芯的YUV模式录像 2024/8/8 15:26 v4l2-ctl --list-devices v4l2-ctl --list-formats-ext -d /dev/video8 v4l2-ctl -V -d /dev/video8 根据规格书《FCB-CR8550_8530_TM_20190730.pdf》&#xff0c;很容易知道8…

【秋招突围】2024届校招-拼多多笔试题-第一套

🍭 大家好这里是 大厂笔试突围,一起备战秋招笔试 💻 ACM金牌团队🏅️ | 多次AK大厂笔试 | 编程一对一辅导 ✨ 本系列打算持续跟新 秋招笔试题 👏 感谢大家的订阅➕ 和 喜欢💗 和 手里的小花花🌸 ✨ 笔试合集传送们 -> 🧷春秋招笔试合集 🌻 听说本周PDD的笔…

elasticSearch和ik分词插件安装和使用

elasticSearch 特点&#xff1a;分布式搜索和分析引擎&#xff0c;可以用http以json的方式进行数据索引。 由来&#xff1a;ES全称Elastic Stack&#xff08;ELK Stack&#xff09;&#xff0c;是由三个产品elasticSearch&#xff0c;logstack&#xff08;数据收集&#xff0…

【新手必备】5分钟学会Transformer算法的核心要点

Transformer 是近年来在自然语言处理&#xff08;NLP&#xff09;领域取得显著成果的一种深度学习模型&#xff0c;最初由 Vaswani et al. 在 2017 年提出。 与传统的序列模型&#xff08;如 RNN 和 LSTM&#xff09;相比&#xff0c;Transformer 的主要优势在于其能够更好地处…

零基础5分钟上手亚马逊云科技AWS核心云架构知识-用S3桶托管静态网页

简介&#xff1a; 小李哥从今天开始将开启全新亚马逊云科技AWS云计算知识学习系列&#xff0c;适用于任何无云计算或者亚马逊云科技技术背景的开发者&#xff0c;让大家0基础5分钟通过这篇文章就能完全学会亚马逊云科技一个经典的服务开发架构。 我将每天介绍一个基于亚马逊云…

go之protobuf和grpc

一、Protobuf Protobuf是接口规范的描述语言&#xff0c;可以通过工具生成代码&#xff0c;将结构化数据序列化。 二、grpc gRPC 是 Google 公司基于 Protobuf 开发的跨语言的开源 RPC 框架。 三、使用教程 3.1 student.proto syntax "proto3"; import "go…

软件测试---接口测试

一、接口及接口测试概念 &#xff08;1&#xff09;接口的类型 &#xff08;2&#xff09;接口测试的概念 &#xff08;3&#xff09;接口测试的原理 &#xff08;4&#xff09;接口测试的特点 &#xff08;5&#xff09;接口测试的实现方式 二、HTTP协议 &#xff08;1&#…