JAVA算法语言基础知识(一)

1、程序设计语言发展历史、背景和特点

(1)发展历史:

1. 机器语言和汇编语言时代(1950s-1960s):早期计算机使用机器语言和汇编语言,直接操作底层硬件。
2. 高级语言时代(1960s-1970s):出现了第一代高级语言,如FORTRAN、COBOL和ALGOL。这些语言更接近人类自然语言,提供了更高级的抽象和功能。
3. 结构化编程时代(1970s-1980s):结构化编程理论的提出推动了高级语言的发展,如C语言,强调使用结构化控制流程和模块化编程。
4. 面向对象编程时代(1980s-1990s):面向对象编程的兴起,如C++和Java,引入了封装、继承和多态等概念,使得代码更易于组织和复用。
5. 脚本语言和动态语言时代(1990s-至今):脚本语言(如JavaScript和Python)和动态语言(如Ruby和PHP)的发展,简化了开发过程,增加了灵活性和交互性。
6. 领域特定语言(DSL)时代(2000s-至今):针对特定领域需求设计的语言,如MATLAB和R语言,更加专注和高效。
(2)背景和动机:
1. 简化计算机编程:通过提供更易于理解和使用的语法、抽象和功能,使编程变得更加简单和高效。
2. 提高开发效率:语言的设计目标是让开发人员能够更快速地构建软件,减少开发时间和成本。
3. 增强代码可读性和维护性:良好的语言设计可以提高代码的可读性和可维护性,降低错误发生的概率,并方便后续维护和扩展。
4. 支持软件工程原则:现代编程语言通常支持面向对象编程、结构化编程和函数式编程等软件工程原则,以提高代码的模块化和可测试性。
(3)特点:
1. 语法和规范:每种编程语言都有自己的语法和规范来定义有效的代码结构和表达方式。
2. 抽象和封装:编程语言提供了不同级别的抽象和封装机制,使开发者能够将复杂问题分解为更小、更可管理的部分。
3. 数据类型和操作:支持不同类型的数据(例如整数、浮点数、字符串等)和相应的操作(例如算术运算、逻辑运算等)。
4. 控制流程:提供条件语句(如if-else)和循环语句(如for、while),以控制程序的执行流程。
5. 库和框架支持:许多编程语言提供了丰富的标准库和第三方库,以便开发者能够重用已有的功能和组件。
6. 平台和跨平台性:某些语言针对特定平台开发,而其他语言具有跨平台的能力,可以在不同的操作系统和硬件上运行。
7. 性能和安全性:不同的语言对于性能和安全性方面有不同的考虑,有些语言更注重执行效率,而有些语言更注重代码的安全性。

2、Java面向对象编程特点、面向对象程序设计(OOP)的基本概念,Java语言编程规范

(1)Java面向对象编程的特点如下:
1. 类和对象:Java是一种面向对象的语言,它支持基于类和对象的编程范式。通过定义类来创建对象,并通过对象进行数据的封装和操作。
2. 封装性:Java提供了访问修饰符(public、private、protected)来控制类成员的可见性。通过封装,可以隐藏内部实现细节,只对外暴露必要的接口,提高代码的安全性和可维护性。
3. 继承性:Java支持类之间的继承关系,使得一个类可以从另一个类派生出来并继承其属性和方法。通过继承,可以实现代码的重用和扩展,建立类之间的层次结构。
4. 多态性:Java支持多态性,即一个对象可以具有多种形态或类型。通过方法的重写(覆盖)和方法的重载,可以在父类和子类之间实现不同的行为,提高代码的灵活性和可拓展性。
5. 抽象性:Java提供了抽象类和接口的机制,用于定义不完整的、只含有部分实现的类和方法。抽象类和接口可以作为其他类的模板,通过实现或继承来完成未实现的功能。
6. 多线程支持:Java内置了多线程的支持,可以同时执行多个线程并发运行。通过使用线程类和同步机制,可以实现并发编程,提高程序的效率和响应性。
7. 异常处理:Java提供了异常处理机制,可以捕获和处理程序中可能发生的异常情况。通过try-catch语句块和异常类的继承体系,可以优雅地处理错误,并保证程序的健壮性和稳定性。
8. 类型检查和安全性:Java是一种静态类型语言,它在编译时进行严格的类型检查,避免许多常见的编程错误。这提高了代码的可靠性和安全性,并减少了运行时异常的可能性。
9. 标准库和第三方库:Java拥有庞大而强大的标准类库(如Java SE API),提供了丰富的功能和工具,可以快速开发各种应用程序。此外,还有众多第三方库和框架可供选择,进一步扩展和增强Java的能力。
总结:
Java面向对象编程具有封装性、继承性、多态性、抽象性等特点。这些特点使得Java适合构建灵活、可重用、可扩展的软件系统,并且在企业级应用程序开发和大型项目中广泛应用。

(2)面向对象程序设计(Object-Oriented Programming,OOP)的基本概念包括以下几个方面:
1. 对象(Object):对象是现实世界中的实体或抽象概念,在编程中可以是一个具体的实例。每个对象都有自己的状态(属性)和行为(方法)。
2. 类(Class):类是一种蓝图或模板,用于创建对象。它定义了对象的共同特征和行为。通过类可以实例化多个对象。
3. 封装(Encapsulation):封装是一种将数据和相关操作(方法)组合在一起的机制。它将对象的内部状态隐藏起来,只暴露必要的接口给外部使用,提高了代码的安全性和可维护性。
4. 继承(Inheritance):继承是一种类之间的关系,表示一个类可以从另一个类派生出来并继承其属性和方法。子类继承了父类的特征,并可以进行修改、扩展或重写。
5. 多态(Polymorphism):多态是指相同的消息可以被不同的对象接收和处理。可以通过方法的重写(覆盖)和方法的重载来实现多态,增加了代码的灵活性和可扩展性。
6. 抽象(Abstraction):抽象是一种对复杂现实世界的简化和提炼,只关注重要的属性和行为。抽象类和接口提供了实现部分功能、定义约束的机制。
7. 消息传递(Message Passing):对象之间通过发送消息来进行通信和交互。一个对象调用另一个对象的方法,触发相应的行为。
8. 构造函数(Constructor):构造函数是在创建对象时被自动调用的特殊方法,用于初始化对象的状态和执行必要的操作。
9. 成员变量(Instance Variable)和成员方法(Instance Method):每个对象都有自己的成员变量和成员方法,用于存储数据和执行特定的操作。
10. 接口(Interface):接口定义了一组方法的规范,任何实现该接口的类都必须提供这些方法的具体实现。接口提供了一种契约,用于描述对象的能力和行为。
面向对象程序设计强调将问题划分为一组互相协作的对象,通过封装、继承、多态等机制来组织和管理代码,使得程序更易于理解、扩展和维护。它已经成为许多编程语言和开发框架的基本范式,并广泛应用于软件开发领域。

(3)Java语言编程规范(Java Programming Style Guide)是一套指导开发者编写Java代码的规范和最佳实践。以下是常见的Java编程规范:
1. 代码布局:
   - 使用合适的缩进(通常为四个空格)来表示代码块的层次结构。
   - 使用空格将运算符、逗号和分号与操作数或语句分开。
   - 在不同的语句间留出空行,以提高代码的可读性。
2. 命名规范:
   - 使用有意义且描述性强的变量、方法和类名。
   - 类名使用大写开头的驼峰式命名法(CamelCase)命名。
   - 方法和变量名使用小写开头的驼峰式命名法命名。
   - 常量名使用全大写字母和下划线分隔的命名法。
3. 注释规范:
   - 使用注释来解释代码的逻辑、目的、输入输出等信息。
   - 对于每个类和方法,使用Javadoc注释来提供相关文档说明。
   - 注释应该清晰、简洁,并避免不必要的注释。
4. 类和对象规范:
   - 每个Java源文件只包含一个公共类,并且文件名应与类名相匹配。
   - 类应该按照成员变量、构造函数和方法的顺序进行组织。
   - 使用适当的访问修饰符(public、private、protected)来控制成员的可见性。
5. 方法规范:
   - 方法应该做到单一职责,只完成一个具体的任务或操作。
   - 方法长度应适中,避免过长的方法。
   - 方法名应具有描述性,并使用动词或动词短语命名。
6. 异常处理规范:
   - 在可能发生异常的地方进行适当的异常处理。
   - 使用try-catch块捕获和处理异常,以提高程序的健壮性。
   - 避免捕获异常后不进行任何处理或简单地打印错误信息。
7. 其他规范:
   - 使用合适的数据类型,避免不必要的自动装箱和拆箱。
   - 尽量使用final关键字来限制变量和方法的修改和继承。
   - 注意内存管理,及时释放占用的资源。
以上是一些常见的Java编程规范,旨在提高代码的可读性、可维护性和一致性。遵循良好的编码规范可以使得代码更易于理解、调试和扩展,并提高团队合作的效率。

3、结构化程序设计与面向对象程序设计

结构化程序设计(Structured Programming)和面向对象程序设计(Object-Oriented Programming,简称OOP)是两种不同的编程方法论。
(1)结构化程序设计:
结构化程序设计是一种以顺序、选择和循环作为基本控制结构,通过模块化和层次化的方式来组织代码的编程范式。它强调程序的结构清晰、可读性高、易于理解和维护。结构化编程遵循人们熟悉的自然语言结构,例如使用顺序执行、条件语句(如if-else)和循环语句(如for、while)等,以便提供清晰的逻辑流程。结构化程序设计通常不涉及全局状态共享,而是通过传递参数和返回值的方式进行信息交流。
(2)面向对象程序设计:
面向对象程序设计是一种以对象为基本单位,通过封装、继承和多态等机制来组织代码的编程范式。它将数据和操作数据的方法封装在对象中,通过对象之间的交互和消息传递来实现程序的功能和逻辑。面向对象编程强调对现实世界中实体的建模,使得代码更具有可扩展性、可维护性和重用性。通过类和对象的概念,面向对象编程允许创建具有属性和方法的对象,并通过继承机制实现代码的复用。
两者的关系:
结构化程序设计和面向对象程序设计都是常见的编程范式,它们并不互斥,可以在同一个项目中共存。事实上,很多面向对象的编程语言中也包含了结构化编程的特性。在实际开发中,可以根据具体需求和问题特点选择合适的编程范式来进行代码设计和实现。
总结:
- 结构化程序设计强调代码的清晰结构和逻辑流程,通过顺序、选择和循环等基本控制结构来组织代码。
- 面向对象程序设计强调对象的封装、继承和多态等特性,通过类和对象的概念来组织代码。
- 结构化程序设计和面向对象程序设计并不相互排斥,可以根据具体情况选择合适的编程范式。

4、数据类型、运算符与表达式、格式输入输出

(1)数据类型

在Java中,有多种数据类型可供使用。这些数据类型包括原始数据类型(Primitive Data Types)和引用数据类型(Reference Data Types)。下面是一些常见的数据类型:
1. 原始数据类型:
   - 整数类型:byte、short、int、long
   - 浮点数类型:float、double
   - 字符类型:char
   - 布尔类型:boolean
2. 引用数据类型:
   - 类(Class):用于创建对象的模板,可以定义属性和方法。
   - 接口(Interface):定义了一组方法的规范,类可以实现接口并提供具体的实现。
   - 数组(Array):存储固定大小的相同类型元素的容器。
每种数据类型都有其特定的取值范围和操作规则。原始数据类型用于存储简单的值,而引用数据类型用于存储对象的引用。
例如,声明一个整数变量和一个字符串变量的示例:

```java
int age = 25; // 整数类型变量
String name = "John"; // 字符串类型变量
```


在Java中,还可以通过创建自定义的类来定义自己的数据类型,以适应特定的需求。

(2)运算符与表达式

运算符与表达式在编程中扮演着重要的角色,用于进行各种计算和操作。以下是关于运算符与表达式的一些基本信息:
1. 算术运算符:用于执行基本的数学运算,比如加法(+)、减法(-)、乘法(*)、除法(/)和求余(%)等。
2. 赋值运算符:用于将右侧的值赋给左侧的变量,常见的赋值运算符为等号(=),还有一些复合赋值运算符如+=、-=、*=、/=、%=等。
3. 比较运算符:用于比较两个值的大小或者判断是否相等,常见的比较运算符有等于(==)、不等于(!=)、大于(>)、小于(<)、大于等于(>=)和小于等于(<=)等。
4. 逻辑运算符:用于对布尔值进行逻辑操作,最常见的逻辑运算符有与(&&)、或(||)和非(!)。
5. 位运算符:用于对二进制数据进行位级操作,如按位与(&)、按位或(|)、按位异或(^)、左移(`<<`)、右移(`>>`)、无符号右移(`>>>`)等。
6. 条件运算符(三元运算符):由三个操作数组成,格式为条件表达式 ? 表达式1 : 表达式2。根据条件表达式的结果,选择执行表达式1或表达式2。
7. 运算符优先级:不同的运算符有不同的优先级,当一个表达式中包含多个运算符时,会按照优先级规定的顺序进行计算。可以使用括号来明确指定运算的顺序。

8. 自增和自减运算符: 自增(`++`)自减(`--`)
9. 类型转换运算符:强制类型转换:`(类型) 表达式`
表达式由运算符和操作数组成,可以是简单的变量、常量,也可以是复杂的组合。通过使用运算符和操作数,表达式可以实现各种计算、逻辑判断和数值处理等功能。
以下是一个示例,展示了运算符与表达式的用法:

```java
public class Main {
    public static void main(String[] args) {
        int a = 5;
        int b = 3;
        int c = a + b; // 算术运算符

        boolean result = (a > b) && (a != 0); // 逻辑运算符

        int max = (a > b) ? a : b; // 条件运算符

        System.out.println("c = " + c);
        System.out.println("result = " + result);
        System.out.println("max = " + max);
    }
}
```


以上代码演示了算术运算符、逻辑运算符和条件运算符的使用。

(3)格式输入输出

1.使用Scanner类进行输入:

import java.util.Scanner;

    public class Main {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            System.out.print("请输入一个整数:");
            int num = scanner.nextInt();
            System.out.println("您输入的整数是:"+num);
            scanner.close();
        }
    }

2.使用System.out.printin()进行简单输出:

int num = 10;
System.out.println("数字是:"+num);

3.使用System.out.printf()进行格式化输出:

String name ="John";
int age = 25;
double height = 1.75;
System.out.printf("姓名:%5,年龄:%d岁,身高:%.2f米%n",name,age,height);

4.使用String.format()进行字符串格式化:

String name = "Alice";
int score = 95;
String message = String.format("学生姓名:%s,分数:%d", name,score);
System.out.println(message);

5.使用DecimalFormat类进行数字格式化:

import java.text.DecimalFormat;

    public class Main {
        public static void main(String[] args) {
            double num = 1234.5678;
            DecimalFormat decimalFormat = new DecimalFormat("#0.00");
            String formattedNum = decimalFormat.format(num);
            System.out.println("格式化后的数字:" + formattedNum);
        }
    }

5、程序的控制结构:顺序结构、选择结构、循环结构及使用

(1)顺序结构,程序中各个操作按照在源代码中的排列顺序,自上而下,依次执行

(2)选择结构,根据某个特定的条件进行判断后,选择其中一支执行;

(3)循环结构,在程序中需要反复执行某个或某些操作,直到条件为假或为真时才停止循环。

         java控制结构

         三大控制结构

6、数组:数组的基本概念、一维数组的定义、初始化及应用;二维数组的定义、初始化及应用。

(1)数组的基本概念    数组

(2)一维数组的定义、初始化及应用    Java 数组

(3)二维数组的定义、初始化及应用

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值