预备知识
我们各种各样的信息是怎么存储到计算中的?
二进制
二进制是什么
由德国的莱布尼茨于 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();