Java
- 格式:doc
- 大小:105.36 KB
- 文档页数:13
java中文参考手册摘要:一、Java简介与历史二、Java语言特性1.简单性2.面向对象3.平台无关性4.高效性5.安全性三、Java基本语法1.变量与数据类型2.运算符与表达式3.流程控制4.函数与方法四、Java面向对象编程1.类与对象2.继承与多态3.封装与解耦4.接口与内部类五、Java常用类库1.字符串操作2.数学计算3.日期时间处理4.文件操作5.网络编程六、Java异常处理1.异常分类2.异常处理机制3.自定义异常七、Java集合框架1.集合接口与实现类2.列表3.集4.映射八、Java泛型1.泛型概念与优势2.泛型约束3.泛型实战九、Java输入输出流1.输入输出流分类2.文件输入输出3.网络输入输出十、Java多线程编程1.线程概念与创建2.线程同步与通信3.线程池与并行正文:一、Java简介与历史Java是一种广泛使用的计算机编程语言,由Sun Microsystems公司于1995年推出。
Java的诞生标志着计算机编程进入面向对象时代,同时也为互联网应用提供了强大的支持。
Java语言继承了C++的优点,摒弃了C++中容易引发错误的概念,如指针、多重继承等,使得Java更加简单、易学。
二、Java语言特性1.简单性:Java简化了C++中复杂的概念,如指针、多重继承等,降低了编程的难度。
2.面向对象:Java是一种完全面向对象的编程语言,支持类与对象、继承、多态等特性。
3.平台无关性:Java程序在不同平台上运行时,只需生成一次字节码,无需重新编译。
4.高效性:Java虚拟机(JVM)负责字节码的执行,保证了程序的高效运行。
5.安全性:Java提供了沙箱机制,使得程序在运行时受到一定程度的隔离与保护。
三、Java基本语法1.变量与数据类型:Java中的变量必须先声明后使用,变量有不同的数据类型,如整型、浮点型、字符型等。
2.运算符与表达式:Java支持算术、关系、逻辑等运算符,以及赋值、条件、逗号等表达式。
java 类的定义Java类的定义Java是一种面向对象的编程语言,类是Java面向对象编程的基本单元。
在Java中,类是用来描述对象的属性和行为的模板或蓝图。
创建一个类就是创建了一个新的数据类型,可以根据这个类创建多个对象。
类的定义是以关键字class开始,后面跟着类的名称。
类名的命名规则是以大写字母开头的驼峰命名法,例如:Person、Student、Car等。
在类的定义中,可以包含类的成员变量和成员方法。
成员变量是用来描述对象的属性的,也称为类的属性或字段。
成员变量定义的语法是:访问修饰符数据类型变量名。
访问修饰符可以是public、private、protected或默认,用来控制成员变量的访问权限。
数据类型可以是Java的基本数据类型,也可以是引用类型。
变量名用来标识成员变量,在命名时要符合命名规范,以小写字母开头的驼峰命名法。
成员方法是用来描述对象的行为的,也称为类的方法或函数。
成员方法定义的语法是:访问修饰符返回值类型方法名(参数列表)。
访问修饰符用来控制方法的访问权限。
返回值类型表示方法的返回值,可以是Java的基本数据类型,也可以是引用类型。
方法名用来标识方法,在命名时要符合命名规范,以小写字母开头的驼峰命名法。
参数列表是方法的输入,可以有多个参数,每个参数的定义格式是:数据类型参数名。
除了成员变量和成员方法,类的定义中还可以包含构造方法、静态变量和静态方法。
构造方法是用来创建对象的特殊方法,它的名称与类名相同,没有返回值。
构造方法的定义语法是:访问修饰符类名(参数列表)。
构造方法在使用new关键字创建对象时会被自动调用,用来初始化对象的成员变量。
静态变量是类的属性,可以在类的任何地方使用。
静态变量的定义语法是:访问修饰符 static 数据类型变量名。
静态变量在类加载时被初始化,且只有一份,所有对象共享。
静态方法是类的方法,可以在类的任何地方调用。
静态方法的定义语法是:访问修饰符static 返回值类型方法名(参数列表)。
java的具体运用Java是一种通用的、面向对象的编程语言,具有广泛的应用领域。
下面是Java的一些具体运用:1. 开发桌面应用程序:Java提供了丰富的GUI库,如Swing和JavaFX,可以用于开发跨平台的桌面应用程序。
2. Web应用程序开发:Java的企业级框架如Spring和JavaEE,可以用于构建高性能、可扩展的Web应用程序。
3. 移动应用程序开发:使用Java和Android开发工具包(Android SDK),可以构建Android手机和平板电脑上的应用程序。
4. 大数据处理:Java常用于大数据领域,如Hadoop和Spark等框架,用于处理和分析大规模数据。
5. 服务器端开发:Java的多线程和网络编程特性使其成为构建服务器端应用程序的理想选择,如Web服务器、应用服务器和数据库服务器等。
6. 游戏开发:Java提供了一些游戏开发框架,如LibGDX和jMonkeyEngine,用于创建跨平台的游戏应用程序。
7. 嵌入式系统开发:Java可以在嵌入式设备上运行,如智能家居、医疗设备和工业控制系统等。
8. 金融应用:Java的稳定性和安全性使其在金融领域得到广泛应用,如电子支付、证券交易和风险管理等。
9. 数据库连接:Java提供了各种数据库连接技术,如Java Database Connectivity(JDBC),可以访问和操作各种关系型数据库。
10. 网络编程:Java具有强大的网络编程库,可以通过套接字(Socket)和URL等方式进行网络通信。
这些只是Java的一些具体运用领域,实际上,Java在各个行业和领域中都有广泛应用。
它是一门功能强大、灵活且易于学习和使用的编程语言。
java、javac命令用法在Java编程语言中,java命令用于运行Java程序,而javac命令用于编译Java源代码文件。
1. java命令用法:-先使用javac命令将Java源代码文件编译成字节码文件(.class文件)。
-然后使用java命令运行编译后的字节码文件。
-命令格式:java [选项] [主类名] [参数]-选项和参数是可选的,主要用于指定虚拟机参数和传递给Java 程序的参数。
-主类名指定要运行的Java程序的入口类名。
如果程序中不存在main方法,则无法执行。
例如,要运行名为"HelloWorld"的Java程序:```javac HelloWorld.java //编译Java源代码文件java HelloWorld //运行编译后的字节码文件```注意:java命令默认在同一目录中查找字节码文件,如果字节码文件位于其他目录中,需要指定文件的路径。
2. javac命令用法:- javac命令用于将Java源代码文件编译成字节码文件。
-命令格式:javac [选项] [源文件]-选项主要用于指定编译参数,例如输出目录、类路径等。
-源文件是需要编译的Java源代码文件名。
例如,要编译名为"HelloWorld.java"的Java源代码文件:```javac HelloWorld.java //编译Java源代码文件```编译成功后会生成对应的字节码文件"HelloWorld.class"。
拓展:- java命令还可以通过-classpath/-cp选项指定类路径,以便在运行Java程序时指定需要引用的类文件的路径。
- javac命令可以用于编译多个Java源文件,可以一次性编译整个项目,也可以使用通配符模式编译指定目录下的所有源文件。
-除了java和javac命令,还有其他一些相关的Java命令,例如javadoc用于生成API文档、jar用于创建JAR文件等。
Java基础知识总结(超详细整理)Java语⾔的特点1.⾯向对象⾯向对象(OOP)就是Java语⾔的基础,也是Java语⾔的重要特性。
⾯向对象的概念:⽣活中的⼀切事物都可以被称之为对象,⽣活中随处可见的事物就是⼀个对象,我们可以将这些事物的状态特征(属性)以及⾏为特征(⽅法)提取并出来,并以固定的形式表⽰。
2.简单好⽤Java语⾔是由C和C++演变⽽来的,它省略了C语⾔中所有的难以理解、容易混淆的特性(⽐如指针),变得更加严谨、简洁、易使⽤。
3.健壮性Java的安全检查机制,将许多程序中的错误扼杀在摇蓝之中。
另外,在Java语⾔中还具备了许多保证程序稳定、健壮的特性(强类型机制、异常处理、垃圾的⾃动收集等),有效地减少了错误,使得Java应⽤程序更加健壮。
4.安全性Java通常被⽤在⽹络环境中,为此,Java提供了⼀个安全机制以防恶意代码的攻击,从⽽可以提⾼系统的安全性。
5.平台⽆关性Java平台⽆关性由Java 虚拟机实现,Java软件可以不受计算机硬件和操作系统的约束⽽在任意计算机环境下正常运⾏。
6.⽀持多线程在C++ 语⾔没有内置的多线程机制,因此必须调⽤操作系统的多线程功能来进⾏多线程程序设计,⽽ Java 语⾔却提供了多线程⽀持。
多线程机制使应⽤程序在同⼀时间并⾏执⾏多项任务,该机制使得程序能够具有更好的交互性、实时性。
7.分布式(⽀持⽹络编程)Java语⾔具有强⼤的、易于使⽤的⽹络能⼒,⾮常适合开发分布式计算的程序。
java中提供了⽹络应⽤编程接⼝(),使得我们可以通过URL、Socket等远程访问对象。
8.编译与解释共存Java语法基础标识符: ⽤来标识类名、对象名、变量名、⽅法名、类型名、数组名、⽂件名的有效字符序列。
合法的标识符:由字母、数字、下划线“_”、美元符号“$”或者“¥”组成,并且⾸字符不能是数字。
不能把java关键字和保留字作为标识符。
标识符对⼤⼩写敏感。
关键字:Java语⾔中已经赋予了特定含义的保留字: const、goto,Java版本中尚未使⽤,但以后版本可能会作为关键字使⽤变量:程序运⾏期间可以被改变的量。
管理学院Java课程设计报告设计题目:软件工程师管理系统专业:姓名:信息管理与信息系统教研室2016.5.4目录目录 (2)1总体设计 (3)1.1设计简介 (3)1.2功能模块及分析 (3)1.2.1总体功能模块 (3)1.2.2具体功能模块 (4)1.3数据库设计 (4)1.3.1数据库环境说明 (4)1.3.2逻辑设计 (4)1.3.3物理设计 (5)2详细设计 (5)2.1 程序系统的结构 (5)2.2 程序设计说明 (6)2.2.1 基础类 (6)2.2.2DB层如何使用JDBC完成DB层的功能 (6)2.2.3显示层类 (10)2.2.4 管理层类 (10)2.2.5 Uitl类(可选,若无该分类,则删除该标题)错误!未定义书签。
3 运行效果 (12)4结论 (12)成绩评定 (13)1总体设计1.1设计简介该系统是一个软件工程师的管理系统,使用java技术和mysql数据库开发,可以为公司提供对本公司软件工程师的日常管理工作,主要有系统管理员和系统所组成的软件工程师,可以实现在系统中的对软件工程师信息的增删改查1.2功能模块及分析本系统共分为数据的输入,查询,和显示【即输出】,管理员可以通过输入软件工程师的id来查询该工程师的具体的信息,后续的功能还有添加,删除,修改等,可以实现对该系统的基本掌控,具体的类为Engineer.java EngineerDom.java和Test主类1.2.1总体功能模块图1 软件工程师管理系统总体功能模块图1.2.2具体功能模块(1)输入模块工程师的资料主要包括:姓名、性别、生日、籍贯、学历、地址、电话、工龄、薪水、姓名:为字符串,最长不超过20个字符。
不能为空。
性别:用数字表示false表示女,true表示男。
不能为其它数值。
生日:表示年、月、日。
格式例如:年使用四位数字表示,月使用1-12表示,日使用1-31表示。
范围是(1900,2004)籍贯:使用字符串表示,最长不超过10个字符。
不能为空。
学历:使用数字表示高中0、学士1、硕士2、博士3、其它为4。
不能为其它数字。
地址:使用字符串表示,最长不超过30个字符。
不能为空。
电话:使用字符串表示,最长不超过15个字符。
不能为空。
工龄:使用数字表示,工龄范围是(0,50]。
薪水:0年薪制,1月薪制。
不能为空。
基本薪水:为实型,不能为0。
对这些输入的信息进行合法性检查。
保证系统接收合法的输入。
用户输入错误时具有提示功能和重新输入功能。
(2)删除模块可根据两种方式删除指定工程师资料,一是工程师的编号,二是工程师的姓名。
删除资料后,该工程师的信息则完全在系统中删除了。
其它工程师编号不变。
(3)查询模块可根据两种方式查询指定工程师资料,一是工程师的编号,二是工程师的姓名。
查询后打印该工程师的信息,如果没有该工程师资料则给用户提示。
(4)保存模块当用户输入工程师资料、修改、排序后需要用户决定是否保存工程师资料。
如果用户不保存,则默认输入和修改等不做保存。
(5)输出模块打印所有的工程师资料(不包括当月薪水)。
(6)退出模块当用户不再使用该系统后,可退出该系统。
如果用户进行了影响工程师资料信息的操作,提示用户是否进行保存。
1.3数据库设计1.3.1数据库环境说明我们使用的是mysql数据库,Navicat for MySQL是一套专为MySQL设计的强大数据库管理及开发工具。
它可以用于任何3.21或以上的MySQL数据库服务器,并支持大部份MySQL 最新版本的功能,包括触发器、存储过程、函数、事件、检索、权限管理等等。
Navicat for MySQL 使用了极好的图形用户界面(GUI),可以用一种安全和更为容易的方式快速和容易地创建、组织、存取和共享信息。
1.3.2逻辑设计软件工程师Engineer(编号,姓名,生日,籍贯,学历,性别,地址,电话,工龄,薪水,基本工资)1.3.3物理设计Engineer表:2详细设计2.1 程序系统的结构图2 程序流程图2.2 程序设计说明2.2.1 基础类import java.util.Scanner;public class Test {public static void main(String[] args){/** 控制台输入软件工程师资料,创建软件工程师对象* 数据赋值给对象,模拟软件工程师对象保存到数据库* 多次输入软件工程师资料,软件一直运行,知道发出指令退出系统*/Scanner sc = new Scanner(System.in);while(true){System.out.println("按1新增软件工程师,按2查询全部数据,按3根据id 查找用户,按4根据id删除用户,按5根据id修改用户信息,按6退出系统!");int type = sc.nextInt();switch(type){case 1:System.out.println("欢迎新增人员");//String no = sc.next(); //编号System.out.println("姓名:");String name = sc.next(); //姓名System.out.println("电话:");String tel = sc.next(); //电话System.out.println("性别:");String gender = sc.next(); //性别System.out.println("地址:");String address = sc.next(); //地址System.out.println("学历:高中0,学士1,硕士2,博士3,其他4");int education = 0;while(true){if(sc.hasNextInt()){education = sc.nextInt(); //学历break;}else{System.out.println("输入错误,请重新输入:");sc.next();}}System.out.println("籍贯:");String location = sc.next(); //籍贯System.out.println("工资类型:");String salaryType = sc.next(); //工资类型System.out.println("基本工资:");float basicSalary = sc.nextFloat();//工资System.out.println("工龄");int workTime = sc.nextInt(); //工龄System.out.println("生日:");String birth = sc.next(); //生日Engineer engineer = new Engineer();// engineer.setNo(no);engineer.setName(name);engineer.setTel(tel);engineer.setGender(gender);engineer.setAddress(address);engineer.setEducation(education);engineer.setLocation(location);engineer.setSalaryType(salaryType);engineer.setBasicSalary(basicSalary);engineer.setWorkTime(workTime);engineer.setBirth(birth);2.2.2 DB层如何使用JDBC完成DB层的功能import java.sql.SQLException;//对软件工程师对象的增删改查public class EngineerDao {//add是一个方法,用来保存软件工程师对象,把对象数据保存到数据库中public void add(Engineer en){// 四部//创建连接需要使用的url,最后面的soft指的是数据库的名字String url = "jdbc:mysql://localhost:3306/soft";String u = "root";//链接用户名String p = "root";//连接数据库密码Connection conn = null;//数据库连接变量,表示用navicat创建的连接PreparedStatement ps = null;//表示查询窗口String sql = "insert into engineer values (default,?,?,?,?,?,?,?,?,?,?)";try {Class.forName("com.mysql.jdbc.Driver");//第一步,加载驱动类conn = DriverManager.getConnection(url,u,p);//获得一个数据库连接ps = conn.prepareStatement(sql);ps.setString(1, en.getName());//1表示第一个?,en.getName()用软件工程师的name值替换第一个?。
ps.setString(2,en.getTel());//替换性别数据ps.setString(3,en.getAddress());//地址ps.setString(4,en.getGender());//性别ps.setInt(5,en.getEducation());//学历ps.setString(6,en.getLocation());//籍贯ps.setString(7, en.getSalaryType());//工资类型ps.setFloat(8,en.getBasicSalary());//基本工资ps.setInt(9,en.getWorkTime());//工龄ps.setString(10,en.getBirth());//出生日期ps.execute();//execute()把sql语句执行到数据库中} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}public void select(){String url ="jdbc:mysql://localhost:3306/soft";String u = "root";String p = "root";Connection conn = null;PreparedStatement ps = null;ResultSet rs = null;String sql = "Select * from engineer";try {Class.forName("com.mysql.jdbc.Driver");conn = DriverManager.getConnection(url,u,p);ps = conn.prepareStatement(sql);rs = ps.executeQuery();while(rs.next()){System.out.println(rs.getInt(1));System.out.println(rs.getString(2));System.out.println(rs.getString(3));System.out.println(rs.getString(4));System.out.println(rs.getString(5));System.out.println(rs.getString(6));System.out.println(rs.getString(7));System.out.println(rs.getString(8));System.out.println(rs.getFloat(9));System.out.println(rs.getInt(10));System.out.println(rs.getString(11));System.out.println("-----------------------");System.out.println("-----------------------");}} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{try {rs.close();ps.close();conn.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}2.2.3显示层类使用scannerimport java.util.Scanner;Scanner can =new Scanner(System.in);int type = can.nextInt();2.2.4 管理层类Text类:package com.haina.seven;import java.util.Scanner;public class Text{public static void main(String[] args){Scanner can =new Scanner(System.in);while (true)//无限循环{System.out.println("按1新增软件工程师,按2退出系统,3显示所有软件工程师信息,4根据id查找用户,5根据姓名查找用户,6删除用户");int type = can.nextInt();switch (type){case 1:System.out.println("欢迎新增人员")System.out.println("请输入id,格式0001");String no=can.next();//像代码输入字符串next方法System.out.println("请输入姓名,格式可以中文");String name=can.next();//名字System.out.println("请输入生日,格式如下:1999-9-9");String birth=can.next();//生日System.out.println("请输入籍贯,格式");String location=can.next();//籍贯int education=0;while(true){System.out.println("请输入学历,格式:高中0,学士1,硕士2,博士3,其他4");if(can.hasNextInt()){education=can.nextInt();//学历break;}else{System.out.println("输入错误请重试!");can.next();}}System.out.println("请输入性别,格式true|false");boolean gender=can.nextBoolean();System.out.println("现地址");String address=can.next();//地址System.out.println("请输入电话");String tel=can.next();//电话System.out.println("请输入工龄,格式数字类型");int workTime=can.nextInt();//工龄System.out.println("请输入薪水,数字类型);int salaryType=can.nextInt();//薪水System.out.println("请输入基本薪水");float basicSalary=can.nextFloat();//基本薪水//用上面是个值组成一个对象,先创建一个空工程师Engineer engineer=new Engineer();engineer.setNo(no);engineer.setName(name);engineer.setAddress(address);engineer.setBasicSalary(basicSalary);engineer.setBirth(birth);engineer.setEducation(education);engineer.setSalaryType(salaryType);engineer.setTel(tel);engineer.setLocation(location);engineer.setWorkTime(workTime);engineer.setGender(gender);//把工程师保存到数据库System.out.println("连接数据库");System.out.println("保存数据");System.out.println("成功");EngineerDao ud =new EngineerDao();//创建对象ud.add(engineer);//调用方法break;case 2://退出系统,结束软件System.exit(0);break;case 3:System.out.println("显示所有软件工程师信息");//调用另一类里面的一个方法,来显示所有工程师信息EngineerDao ud1= new EngineerDao();ud1.showAll();break;case 4:System.out.println("请输入你要查找的人的id,数字型");int id=can.nextInt();EngineerDao ud2= new EngineerDao ();ud2.query(id);break;case 5:System.out.println("请输入你要查询的人的姓名");String name1 = can.next();EngineerDao ud3= new EngineerDao ();ud4.queryName(name1);break;case 6:System.out.println("请输入要删除的id");int id1 =can.nextInt();EngineerDao ud4= new EngineerDao ();ud3.del(id1);break;}}}}3 运行效果从主函数开始运行,按照控制台提示开始使用软件。