java的介绍:
Java 是一种广泛使用的编程语言,具有众多显著的特点和优势:
Java 是一种面向对象的编程语言,它强调将数据和对数据的操作封装在对象中,这使得代码更具模块化和可维护性。
它具有“一次编写,随处运行”的特性。这意味着只要 Java 程序在一个平台上被编译成字节码,就可以在几乎任何支持 Java 运行时环境的设备或操作系统上运行,大大提高了程序的可移植性。
Java 拥有丰富的类库,涵盖了从网络编程、图形用户界面(GUI)开发到数据库操作等众多领域。这为开发者提供了极大的便利,减少了重复开发的工作量。
在安全性方面,Java 有着严格的安全机制,包括字节码验证、运行时安全检查等,这使得 Java 程序在运行时更加可靠和安全。
例如,在企业级应用开发中,许多大型系统如银行的交易处理系统、电商平台的后台管理系统等都是使用 Java 构建的。因为它能够处理高并发、大数据量的业务场景,并且具有良好的稳定性和可扩展性。
在移动开发领域,Android 应用的开发主要使用 Java 语言,众多流行的手机应用都是基于 Java 技术实现的。
总之,Java 以其强大的功能、良好的可移植性和安全性,在软件开发的各个领域都发挥着重要的作用,是编程领域中不可或缺的一门语言。
对象
面向对象(OOP)就是Java语言的基础,也是Java语言的重要特性。面向对象的概念:生活中的一切事物都可以被称之为对象,生活中随处可见的事物就是一个对象,我们可以将这些事物的状态特征(属性)以及行为特征(方法)提取并出来,并以固定的形式表示。
实用性
Java语言是由C和C++演变而来的,它省略了C语言中所有的难以理解、容易混淆的特性(比如指针),变得更加严谨、简洁、易使用。
安全性
Java通常被用在网络环境中,为此,Java提供了一个安全机制以防恶意代码的攻击,从而可以提高系统的安全性。
多样性
在C++ 语言没有内置的多线程机制,因此必须调用操作系统的多线程功能来进行多线程程序设计,而 Java 语言却提供了多线程支持。多线程机制使应用程序在同一时间并行执行多项任务,该机制使得程序能够具有更好的交互性、实时性。
分布式
Java语言具有强大的、易于使用的网络能力,非常适合开发分布式计算的程序。java中提供了网络应用编程接口(java.net),使得我们可以通过URL、Socket等远程访问对象
2.Java语法基础
标识符
用来标识类名、对象名、变量名、方法名、类型名、数组名、文件名的有效字符序列。
合法的标识符
由字母、数字、下划线“_”、美元符号“$”或者“¥”组成,并且首字符不能是数字。
不能把java关键字和保留字作为标识符。
标识符对大小写敏感。
关键字
Java语言中已经赋予了特定含义的
保留字
const、goto,Java版本中尚未使用,但以后版本可能会作为关键字使用
变量
程序运行期间可以被改变的量。在程序中使用变量,必须先创建它并为它取一个名字,并且指明它能够存储信息的类型,这称为“变量声明”,也叫容器的创建。
变量的使用
变量的声明:数据类型 变量名;
变量的赋值:变量名 = 数据;
变量的操作:放入打印语句进行输出或者进行运算
Java 中的注释
单行注释
多行注释
文档注释
二、提升代码质量的技巧
1.使用有意义的命名:为类名、变量名、方法名等使用描述性的名称,使代码易于阅读和理解。
// 不推荐:
int a;
// 推荐:
int studentAge;
2.遵循编码规范:遵循统一的编码规范,例如Java编码规范 (Java Code Conventions)。
遵循编码规范可以提高代码的可读性和可维护性。以下是一些遵循Java编码规范的示例
(1)类名应使用驼峰命名规则,并以大写字母开头。
public class EmployeeRecord {
// 类的成员和方法
}
(2)方法名和变量名应使用驼峰命名规则,首字母小写。
public void calculateSalary() {
// 方法的实现
}
int numberOfStudents;
(3)常量名应使用全部大写字母,并用下划线分隔单词。
public static final int MAX_STUDENT_COUNT = 50;
(4)使用缩进(一般为4个空格)来表示代码块的层次结构。
for (int i = 0; i < 10; i++) {
if (i % 2 == 0) {
System.out.println("偶数: " + i);
} else {
System.out.println("奇数: " + i);
}
}
(5)使用花括号来明确代码块的开始和结束,并确保代码的风格一致。
if (condition1) {
// 逻辑1
} else if (condition2) {
// 逻辑2
} else {
// 默认逻辑
}
(6)在二元操作符之间使用空格,使代码更易读。
int sum = num1 + num2;
int product = num1 * num2;
3.注释清晰明了:使用注释解释代码的功能、目的和实现方式,方便他人理解和维护代码。
示例:
// 计算并返回两个数的和
public int add(int num1, int num2) {
return num1 + num2;
}
4.编写简短而功能单一的方法:确保方法只有一个明确的功能,提高方法的可读性和可维护性。
编写简短而功能单一的方法可以将代码逻辑拆分为更小的部分,提高代码的清晰度和可维护性。以下是一个示例:
public class Calculator {
public int add(int num1, int num2) {
return num1 + num2;
}
public int subtract(int num1, int num2) {
return num1 - num2;
}
public int multiply(int num1, int num2) {
return num1 * num2;
}
public int divide(int num1, int num2) {
if (num2 == 0) {
throw new IllegalArgumentException("除数不能为零");
}
return num1 / num2;
}
}
在上面的示例中,每个方法都只完成一个特定的数学运算,例如add方法用于执行加法操作,multiply方法用于执行乘法操作等。每个方法的功能明确,易于理解和维护。
如果将所有的运算逻辑都放在一个方法中,代码可能会变得冗长且难以阅读。通过将其拆分为多个简短的方法,可以使代码结构更清晰,同时也可以更方便地测试和重用这些独立的功能。
5.避免使用魔法数值:将常量或魔法数值定义为易于理解的变量,提高代码的可读性和可维护性。
示例:
// 不推荐:
if (score > 60 && score < 90) {
// do something
}
// 推荐:
int passingScore = 60;
int excellentScore = 90;
if (score > passingScore && score < excellentScore) {
// do something
}
6.处理异常并提供有意义的错误信息:避免捕获异常后忽略或无操作的情况,提供清晰明了的错误信息以便快速定位问题。
示例:
try {
// 可能抛出异常的代码
} catch (Exception e) {
logger.error("处理数据时出现错误:" + e.getMessage());
}
三、基础案例分享
1.数值拆分
需求:一个三位数,将其拆分为个位、十位、百位后,打印在控制台
2.求三个整数的最大值
需求:定义三个整数,找出最大值并打印在控制台
分析
1.用三元运算符获取前两个整数的最大值, 并用临时变量保存起来
num1 > num2 ? num1 : num2;
2.用三元运算符,让临时最大值和第三个整数进行比较,并记录结果
temp > num3 ? temp : num3;
3.输出结果
3.键盘录入
需求:请完成Java程序与用户交互,比如录入用户输入的名称、年龄。
4.求和
需求:求1-5之间的数据和,并把求和结果在控制台输出
分析:
1.定义for循环使其能够依次访问到1、2、3、4、5.
2.在循环外定义一个整数变量sum用来累加这些数据
3.循环结束后,输出求和变量即是结果
5.元素搜索---学生信息系统的数据搜索
需求:后台程序需存储学生信息并展示,然后要提供按学号搜索学生信息的功能
分析:
1.定义Student类,定义ArrayList集合存储学生对象信息,并遍历出来
2.提供一个方法,可以接收ArrayList集合,和要搜索的学号,返回搜索到的学生信息,并展示
3.使用死循环,让用户可以不停的搜索
public class Student {
private String studyNumber;
private String name;
private int age;
private String className;
public Student() {
}
public Student(String studyNumber, String name, int age, String className) {
this.studyNumber = studyNumber;
this.name = name;
this.age = age;
this.className = className;
}
public String getStudyNumber() {
return studyNumber;
}
public void setStudyNumber(String studyNumber) {
this.studyNumber = studyNumber;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getClassName() {
return className;
}
public void setClassName(String className) {
this.className = className;
}
}
public class Test {
public static void main(String[] args) {
ArrayList<Student> students = new ArrayList<>();
students.add(new Student("20180302", "叶孤城", 23, "护理一班"));
students.add(new Student("20180303", "东方不败", 23, "推拿二班"));
students.add(new Student("20180304", "西门吹雪", 26, "中药学四班"));
students.add(new Student("20180305", "梅超风", 26, "神经科二班"));
System.out.println("学号\t名称\t年龄\t班级");
for (int i = 0; i < students.size(); i++) {
Student s = students.get(i);
System.out.println(s.getStudyNumber() + "\t" + s.getName() + "\t" + s.getAge() + "\t" + s.getClassName());
}
//按照学号搜索功能
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("请您输入学号查询学生对象");
String studentNumber = sc.next();
Student s = getStudentById(students, studentNumber);
if (s != null) {
System.out.println(s.getStudyNumber() + "\t" + s.getName() + "\t" + s.getAge() + "\t" + s.getClassName());
} else {
System.out.println("查无此人");
}
}
}
/**
* 根据学生的学号查询学生对象赶回
*
* @param students 存储全部学生对象的集合
* @param studyNumber 搜索的学生的学号
* @return 学生对象|null
*/
public static Student getStudentById(ArrayList<Student> students, String studyNumber) {
for (int i = 0; i < students.size(); i++) {
Student s = students.get(i);
if (s.getStudyNumber().equals(studyNumber)) {
return s;
}
}
return null;
}
}
以下介绍本人学期章节测试
示例:
一维数组
二维数组
编写mymath类
类的继承