当前位置: 首页 > news >正文

四川省住房和城乡建设厅网站查询付费wordpress

四川省住房和城乡建设厅网站查询,付费wordpress,网站公告模板代码,表情包制作在线[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b2gPyAnt-1676810001349)(./assets/%E7%8E%84%E5%AD%90Share%E4%B8%89%E7%89%88.jpg)] 玄子Share-BCSP助学手册-JAVA开发 前言#xff1a; 此文为玄子#xff0c;复习BCSP一二期后整理的文章#x…[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b2gPyAnt-1676810001349)(./assets/%E7%8E%84%E5%AD%90Share%E4%B8%89%E7%89%88.jpg)] 玄子Share-BCSP助学手册-JAVA开发 前言 此文为玄子复习BCSP一二期后整理的文章文中对知识点的解释仅为个人理解源码均可直接复制运行 配套PPT站点源码等学习资料请加文章封面联系方式 一、预科 1.1 JAVA 介绍 Java 是 Sun Microsystems 于1995年推出的高级编程语言 1.1.1 JAVA 之父 詹姆斯·高斯林James Gosling是一名软件专家1955年5月19日出生于加拿大Java编程语言的共同创始人之一一般公认他为Java之父 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zCAFcG6d-1676810001353)(./assets/java.jpg)] 1.1.2 JAVA 的核心优势 跨平台是Java语言的核心优势赶上最初互联网的发展并随着互联网的发展而发展建立了强大的生态体系目前已经覆盖 IT 各行业的第一大语言是计算机界的英语 1.1.3 JAVA 各版本的含义 ​ JavaSEJava Standard Edition标准版定位在个人计算机上的应用 ​ JavaEEJava Enterprise Edition企业版定位在服务器端的应用 ​ JavaMEJava Micro Edition微型版定位在消费性电子产品的应用上 1.1.4 JAVA 运行机制 计算机高级语言的类型主要有编译型和解释型两种而Java 语言是两种类型的结合 1.1.4 JVM、JRE 和 JDK ​ Java Virtual Machine (JVM) 用于执行字节码的”虚拟计算机”。不同的操作系统有不同版本 JVM屏蔽了底层运行平台的差别是实现跨平台的核心。 ​ Java Runtime Environment (JRE) 包含Java 虚拟机、库函数等。 ​ Java Development Kit (JDK)包含JRE编译器和调试器等。 1.2 JAVA 开发环境搭建 1.2.1 下载 JDK ORACLE官网 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dSZ5LIQ6-1676810001354)(./assets/202212221415811.png)] 下滑找到 Windows x64 安装程序点击后方链接下载安装包。 1.2.2 安装 JDK 按照图中指引一直下一步就可以了 中间可以更改安装位置但不建议更改为了方便后期配置环境变量。 1.2.3 配置环境变量 右键此电脑属性 高级系统设置 点击右下角环境变量 新建环境变量 变量名 JAVA_HOME 变量值java JDK 安装路径 默认为 C:\Program Files\Java\jdk1.8.0_341 设置完成后点击确定 再次点击新建 变量名 CLASSPATH 变量值 .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar 变量值是固定的注意变量值开头为英文字符点. 下滑找到Path双击变量值进入设置 然后点击右上角新建值为 JDK 安装的bin目录 默认为 C:\Program Files\Java\jdk1.8.0_341\bin 请注意这个值和 JAVA_HOME 是不一样的要进入到bin目录的路径后在复制 然后继续添加两条变量 变量固定分别为 %JAVA_HOME%\bin %JAVA_HOME%\jre\bin 这里直接点击编辑本文在变量尾部一次添加完效果是一样的 变量值 C:\Program Files\Java\jdk1.8.0_341\bin;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; 1.2.4 检验环境变量 键盘按下Win R输入cmd后按回车 在窗体输入 Java -version java 后面有一个空格 显示 java version “1.8.0_341” 即为环境变量配置成功 后面的1.8.0_341就是所安装 java 的 JDK 版本 恭喜你到这里 JDK 的下载、安装、配置环境变量就已经全部完成了 1.3 编写第一个 JAVA 程序 1.3.1 编写 JAVA 代码 在桌面上右键新建文本文档 将新建的文本文档更名为ChangeTheWorld 如果你新建的文本文档没有显示.txt后缀的话需要在文件资源管理器中设置显示 鼠标双击打开文本文档输入以下代码 public class ChangeTheWorld {public static void main(String[] args) {System.out.println(Change The World!);} }class 后面的代码要和文件名一致 全文都是在英文输入法下编写 1.3.2 执行 JAVA 程序 将文件名后缀修改为.java例如ChangeTheWorld.java 将修改后的 Java 文件复制到任意磁盘根目录 点击文件地址栏输入cmd回车 分别输入javac和java代码执行编译下面显示的Change The World即为我们编写的 Java 输出语句所输出的代码 javac ChangeTheWorld.java java ChangeTheWorld javac 后面跟文件全名需要带.java后缀 java 后直接写文件名即可 到这里你已经可以独立编写编译 Java 代码了后面我们会在学习一些计算基础知识 1.4 电脑常用快捷键 熟练的使用电脑快捷键可以让我们的工作效率事半功倍 按键说明Ctrl C复制Ctrl V粘贴Ctrl A全选Ctrl X剪切Ctrl Z撤销Ctrl Y撤回Ctrl S保存Alt F4关闭窗体Alt Tab窗体切换Windows R运行Windows L快速锁屏Windows E资源管理器Ctrl Shift ESC任务管理器 1.4.1 功能性快捷键 功能性快捷键在大多软件中都适用如 按键说明Ctrl C复制Ctrl V粘贴1.5 DOS 命令 1.5.1 打开 CMD 的方法 开始 系统 命令提示符 按下 Win R 输入 cmd 打开控制台推荐使用 在任意的文件夹下面按住 Shift 鼠标右键点击在此处打开命令行窗口 资源管理器的地址栏输入cmd 1.5.2 常用 DOS 命令 命令说明备注C:选择盘符盘符名称加冒号dir查看当前目录下的所有文件cd /d C:盘符切换Change Directorycd 文件名\文件名目录切换cd…返回上一级目录cls清理屏幕Clear Screenexit退出ipconfig查看电脑 IP 地址clacmspaintnotepad打开本地程序计算器画图记事本ping 网址ping命令md 文件名创建文件夹Make Directorycd a.txt创建文件注意文件后缀del a.txt删除文件注意文件后缀rd 文件名移除目录Remove Directory1.6 计算机语言发展史 1.6.1 一代语言 机器语言 我们都知道计算机的基本计算方式都是基于二进制的方式。 二进制010111001010110010110100 这种代码是直接输入给计算机使用的不经过任何的转换 十进制二进制11210311410051016110711181000161000032100000 1.6.2 二代语言 汇编语言 解决人类无法读懂机器语言的问题 指令代替二进制 目前应用 逆向工程机器人病毒 1.6.3 三代语言 高级语言 大体上分为面向过程和面向对象两大类 C语言是典型的面向过程的语言。C、JAVA是典型的面向对象的语言 高级语言 C C JAVA C# Python 先有C语言改良后为C面向对象语言再有JAVAC#是微软基于JAVA研发的.NET平台软件 1.7 安装 JAVA 开发工具 1.7.1 Intellij IDEA 开发工具 Intellij IDEA 是目前主流的 Java 开发工具付费软件安装教程这里不过多介绍 Intellij IDEA官网 详细免费安装教程请加文章封面联系方式QQ3336392096 1.7.2 初始化设置 IDEA 2022.3 工欲善其事比先利其器Idea 有许多实用的插件和设置可以提高我们的工作效率 汉化分别点击左上角File Settings 按照下图点击Plugins搜索Chinese下载汉化包后点击右下角Apply应用安装重启软件即可生效 还有一些实用插件分享从上到下分别是代码规范UI美化汉化包快捷键提示彩虹括号代码提示补全等 以及保存代码时自动格式化代码和方法间分割线 二、JAVA 基础 2.1 使用 IDEA 编写 JAVA 程序 2.1.1 Change The World package CH01_JAVABase; //Change The World! public class XZ01_ChangeTheWorld {public static void main(String[] args) {System.out.println(Change The World!);//Change The World!} }public class XZ01_ChangeTheWorld {} // public 关键字表示访问权限 // XZ01_ChangeTheWorld 类名与文件名要完全一样public static void main(String[] args) {} // main( )方法四要素必不可少 public static void main // main( )方法是 Java 程序执行的入口点System.out.println(Change The World!); // 从控制台输出信息代码语句说明快捷语句public static void main(String[] args) { }Main函数程序主入口main/psvmSystem.out.println( );输出语句sout2.2 注释 注释不会出现在字节码文件中即Java 编译器编译时会跳过注释语句 2.2.1 单行注释 单行注释使用//开头 //我是单行注释2.2.2 多行注释 多行注释以/*开头以*/结尾。注意多行注释不能嵌套使用 /*我是多行注释我是多行注释 */2.2.3 文档注释 文档注释以/** 开头以 */结尾注释中包含一些说明性的文字及一些 JavaDoc 标签后期写项目时可以生成项目的API文档 /*** XZ04_Annotate 类我是文档注释* author 玄子 作者* version 1.0 版本*/2.2.4 演示案例 package CH01_JAVABase; //注释/*** XZ04_Annotate 类我是文档注释** author 玄子 作者* version 1.0 版本*/ public class XZ04_Annotate {//我是单行注释public static void main(String[] args) {System.out.println(Change The World!);/*System.out.println(Change The World!);System.out.println(我是多行注释);*/} }注释语法注释名称快捷键//单行注释Ctrl //* */多行注释/** */文档注释 文档注释参数描述author作者名version版本号since指明需要最早使用的jdk版本param参数名return返回值情况throws异常抛出情况JavaDoc 命令是用来生成 API 文档的 2.2.5 JAVA API 文档 JAVA API 文档提供了很多官方的介绍和类、方法、变量的解释 一般很系统涉及所有的方面如果开发人员对正在使用的类不熟悉想查看类里面的变量或者方法就可以打开JavaAPI文档进行阅读和查看 很多开发语言都提供了官方的文档可以让开发人员迅速地提高能力 Java API 帮助文档 Java8 API 帮助文档 2.3 数据类型 Java 数据类型分为两大类基本数据类型primitive data type和引用数据类型reference data type 2.3.1 整型byte、short、int、long package CH01_JAVABase;//八大数据类型 public class XZ02_DataType {public static void main(String[] args) {int num1 1;byte num2 1;short num3 1;long num4 1L;// long 的数值后面需要加大写字母 L//整型} }类型占用存储空间表数范围byte1 字节-27 ~ 27-1-128~127short2 字节-215 ~ 215-1 -32768~32767int4 字节-231 ~ 231-1 (-2147483648~2147483647) 约21 亿long8 字节-263~ 263-1 2.3.2 浮点型double、float package CH01_JAVABase;//八大数据类型 public class XZ02_DataType {public static void main(String[] args) {double num5 1.1;float num6 1.2F;// float 的数值后面需要加大写字母 F//浮点型} }类型占用存储空间表数范围float4 字节-3.403E38~3.403E38double8 字节-1.798E308~1.798E308 2.3.3 字符型char package CH01_JAVABase;//八大数据类型 public class XZ02_DataType {public static void main(String[] args) {char ch a;char ch 玄;//单字符} }字符型在内存中占 2 个字节在 Java 中使用单引号来表示字符常量。例如A是一个字符它与A是不同的A表示含有一个字符的字符串 char 类型用来表示在 Unicode 编码表中的字符 Unicode 编码被设计用来处理各种语言的文字它占 2 个字节可允许有 65536 个字符 2.3.4 布尔型boolean package CH01_JAVABase;//八大数据类型 public class XZ02_DataType {public static void main(String[] args) {boolean is false;boolean is true;// 只有两个结果 true false//布尔型} }2.3.5 引用型String package CH01_JAVABase;//八大数据类型 public class XZ02_DataType {public static void main(String[] args) {String string Change The World!;//引用型不属于基本数据类型} }2.4 数据类型转换 八种基本数据类型除了boolean 类型之外的七种类型是可以自动转化的 自动类型转换指的是容量小的数据类型可以自动转换为容量大的数据类型。如图下所示的实线表示无数据丢失的自动类型转换而虚线表示在转换时可能会有精度的损失 2.4.1 隐式类型转换自动类型转换 可以将整型常量直接赋值给byte、short、char 等类型变量而不需要进行强制类型转换只要不超出其表数范围即可 package CH01_JAVABase;//数据类型转换 public class XZ03_TypeConversion {public static void main(String[] args) {int a 1;double b a;System.out.println(b);// b 1.0//隐式数据类型转换自动转换} }2.4.2 显示类型转换强制类型转换 package CH01_JAVABase;//数据类型转换 public class XZ03_TypeConversion {public static void main(String[] args) {double c 1.2;int d (int) c;System.out.println(d);// d 1//显式数据类型转换转换变量前加 (转换类型)} }2.4.3 数据类型转换拓展 package CH01_JAVABase;//数据类型转换 public class XZ03_TypeConversion {public static void main(String[] args) {char e a;int f e 1;System.out.println((int) e);// 97System.out.println(f);// 98System.out.println((char) f);// b} }2.4.4 注意事项 不能对布尔值进行转换不能把对象类型转换为不相干的类型在把高容量转换到低容量的时候强制转换转换的时候可能存在内存溢出或者精度问题这里的数据类型转换就证明了 char 类型的值本质上还是数字ASCII编码表 2.5 变量 package CH01_JAVABase;//变量 public class XZ05_Variable {static String str XuanZi; //类变量//成员变量int age; //默认值 0String Sex 男; //默认值nullboolean IsNull; //默认值falsepublic static void main(String[] args) {//局部变量int value 1;String name 玄子;//创建类的对象调用方法XZ05_Variable variable new XZ05_Variable();System.out.println(name);//输出局部变量variable.set();//调用类方法System.out.println(variable.IsNull);//实例变量需要创建对象后才能调用System.out.println(str);//类变量可直接调用}public void set() {String conn XuanZiShare; //局部变量System.out.println(age);System.out.println(Sex);System.out.println(conn);} }2.5.1 变量variable 变量本质上就是代表一个”可操作的存储空间”空间位置是确定的但是里面放置什么值不确定Java 是一种强类型语言每个变量都必须声明其数据类型。变量的数据类型决定了变量占据存储空间的大小可通过变量名来访问“对应的存储空间”从而操纵这个“存储空间”存储的值 2.5.2 注意事项 每个变量都有类型类型可以是基本类型也可以是引用类型变量名必须是合法的标识符变量声明是一条完整的语句因此每一个声明都必须以分号结束 2.5.3 类变量具有默认值 类变量具有默认值声明时可不对其赋值 变量类型默认值整型intbyteshortlong0单精度浮点型float0.0f双精度浮点型double0.0d字符型char/u0000布尔型booleanfalse引用类型arrayStringclass……null 2.5.4 变量的分类和作用域 变量有三种类型局部变量、成员变量(实例变量)和静态变量(类变量) 类型声明位置从属于生命周期作用域局部变量方法或语句块内部方法/语句块从声明位置开始直到方法或语句块执行完毕局部变量消失成员变量类内部方法外部对象对象创建成员变量也跟着创建对象消失成员变量也跟着消失静态变量类内部static 修饰类类被加载静态变量就有效类被卸载静态变量消失2.6 常量 package CH01_JAVABase;//常量 public class XZ06_Constant {// final 数据类型 常量名 值public static final double PI 3.14;// public static 修饰符不存在先后顺序public static void main(String[] args) {System.out.println(PI);} }2.6.1 常量Constant 初始化(initialization)后不能再改变值不会变动的值所谓常量可以理解成一种特殊的变量它的值被设定后在程序运行过程中不允许被改变常量名一般使用大写字符 2.7 运算符 计算机的基本用途就是执行数学运算Java 提供了一套丰富的运算符来操作变量 2.7.1 一元运算符 int num1 1; double num2 2.5; System.out.println(num1num2);// 1 // mum1 1 上一句输出后才1 2 // 1 mum1 下一句输出前就1 3 System.out.println(num2 % num1); //0.5 // - * / % // 加 减 乘 除 余加、减 、乘、除。与正常数学运算用法一致余%在 Java 中表示求余数 例如2.5 % 1的余数就是0.5 如果两个数都为int型的话余数会舍去尾数取整数 2.7.2 二元运算符 int num1 1; System.out.println(num1); // 写在变量后面等于 mum1 1 输出后才 1 2 System.out.println(num1); // 写在变量前面等于 1 mum1 输出前就 1 2 1 3 System.out.println(num1 1); // 4 // 二元运算符是改变变量实际值进行运算值会随着运算而改变 // -- // 自增 自减2.7.3 赋值运算符 int num1 1; System.out.println(num1); // // 赋值2.7.4 扩展运算符 int a 10; int b 20; System.out.println(a b); // a a b 10 20 30 System.out.println(a); // 30 //和二元运算符一样运算时是改变自身实际值运算 // - * / % // 加等 减等 乘等 除等 余等2.7.5 关系运算符 int num1 1; double num2 2.5; System.out.println(num1 num2); // 结果是布尔型 true 或 false // ! // 大于 小于 大于等于 小于等于 不等于 等等于2.7.6 逻辑运算符 int num1 1; double num2 2.5; System.out.println(num1 num2 || num2 num1); //两个条件一个为真就返回true //如果第一个条件就为假直接返回 false不再判断第二个条件 System.out.println(num1 num2 num2 num1); //两个条件均为真才返回 true System.out.println(!(num1 num2 num2 num1)); //判断结果取反 // 结果是布尔型 true 或 false // || ! // 与 或 非2.7.7 位辑运运算符 char A A; char B B; System.out.println(A: (int) A); System.out.println(B: (int) B); System.out.println(A ^ B); // -------二进制--------- // A 0011 1100 // B 0000 1101 // --------判断-------- // AB 0000 1100 不同为0相同为1 // A|B 0011 1101 有1即为1 // A^B 0011 0001 相同为0不同为1 // ~B 1111 0010 1为0 0为1 System.out.println(2 3); // -------二进制--------- // 0000 0000 0 // 0000 0001 1 // 0000 0010 2 // 0000 0011 3 // 0000 0100 4 // 0000 1000 8 // 0001 0000 16 // | ^ ~ // 与 或 非 异或(按位取反) 左移(*) 右移(/)2.7.8 条件运算符 int score 60; String type score 60 ? 及格 : 不及格; System.out.println(type); // ? : // 布尔 ? 条件1 : 条件2 // 如果布尔结果为 true 那么结果为条件1否则结果为条件22.7.9 字符串连接符 System.out.println( 10 20); // 1020 System.out.println(10 20 ); // 30 // String写在前后的区别 System.out.println( (10 20)); // 30 // ()加强运算优先级2.7.10 算术方法 System.out.println(Math.pow(2, 3) Math.pow(2, 3)); // 2的三次方 8.0 System.out.println(Math.pow(3, 2) Math.pow(3, 2)); // 3的二次方 9.0 // Math.方法2.7.11 常用运算符表 运算符种类符号描述算术运算符一元-*/%加减乘除余算术运算符二元–自增自增赋值运算符赋值扩展运算符-*/%加等减等乘等除等余等关系运算符!instanceof大于小于大于等于小于等于等等于不等于实例判断逻辑运算符||!^与或非按位位辑运运算符|^~ 与或非异或(按位取反)左移(*)右移(/)条件运算符三目? :布尔 ? 条件1 : 条件2如果布尔结果为 true 那么结果为条件1否则结果为条件2字符串连接符拼接两个字符串2.8 转义符 2.8.1 println() 与 print() 的区别 System.out.println(Change The World!); // 打印完引号中的信息后会自动换行System.out.println(Change The World!); // 打印输出信息后不会自动换行 2.8.2 转义符 \n 与 \t package CH01_JAVABase;//转义符 public class XZ08_EscapeCharacter {public static void main(String[] args) {System.out.println(人生若只如初见何事秋风悲画扇。);System.out.println();System.out.print(人生若只如初见);//这里的输 print 加上ln同样表示换行System.out.println(何事秋风悲画扇。);System.out.println();System.out.println(人生若只如初见\n何事秋风悲画扇。);System.out.println();System.out.println(人生若只如初见\t何事秋风悲画扇。);//\n 换行//\t 占位符} }2.8.3 常用转义符表 转义字符意义ASCII码值(十进制)\a响铃(BEL)007\b退格(BS) 将当前位置移到前一列008\f换页(FF)将当前位置移到下页开头012\n换行(LF) 将当前位置移到下一行开头010\r回车(CR) 将当前位置移到本行开头013\t水平制表(HT) (跳到下一个TAB位置)009\v垂直制表(VT)011\代表一个反斜线字符’’092’代表一个单引号(撇号)字符039代表一个双引号字符034?代表一个问号063\0空字符(NULL)000\ooo1到3位八进制数所代表的任意字符三位八进制\xhh十六进制所代表的任意字符十六进制2.9 命名规范与关键字 package CH01_JAVABase;//命名规范 public class XZ09_NamingSpecification {public static void main(String[] args) {// Java 所有的组成部分都需要名字。// 类名、变量名以及方法名都被称为标识符。String name;int num;double value;boolean is;//尽量使用英语单词作为标识符//常用命名法String studentName 玄子;//驼峰命名法以小写字母开头第二个及以后单词首字母大写String StudentName 玄子;//帕斯卡命名法以大写字母开头第二个及以后单词首字母大写} }2.9.1 JAVA 常用关键字 ———————————————abstractassertbooleanbreakbytecasecatchcharclasscontinuedefaultdodoubleelseenumextendsfinalfinallyfloatforifimplementsimportintinterfaceinstanceoflongnativenewpackageprivateprotectedpublicreturnshortstaticstrictfpsuperswitchsynchronizedthisthrowthrowstransienttryvoidvolatilewhile 2.9.2 识符命名规范 所有标识符应具有实际意义尽量不要使用 a、b 这样的无意义命名所有的标识符都应该以字母A-Z或者a-z美元符$、或者下划线_开始首字符之后可以是字母A-Z或者a-z美元符$、下划线_或数字的任何字符组合不能使用关键字作为变量名或方法名识符是大小写敏感的合法标识符举例age、$salary、_value、_1_value非法标识符举例123abc、-salary、#abc可以使用中文命名但是一般不建议这样去使用也不建议使用拼音很Low 2.9.3 常用命名法 所有变量、方法、类名见名知意具有实际意义类成员变量驼峰命名法studentName局部变量驼峰命名法studentAge常量以大写字母命名下划线拼接MAX_VALUE类名帕斯卡命名法StudentName方法名帕斯卡命名法StudentAge( )所有方法都带有( ) 2.10 包机制 package CH01_JAVABase;//包机制 public class XZ10_PackageMechanism {public static void main(String[] args) { // 为了更好地组织类Java提供了包机制用于区别类名的命名空间。 // 包语句的语法格式为 // package pkg1[. pkg2[. pkg3...]];// 一般利用公司域名倒置作为包名com.XuanZiShare.www // 为了能够使用某一个包的成员我们需要在Java程序中明确导入该包。 // 使用“import”语句可完成此功能 // import package1[.package2...].(classname|*); // *通配符 所有} }三、流程控制语句 3.1 Scanner 用户交互 Scanner 类是在 jdk1.5 版本引入的它在 java 的 util 工具包下主要用于扫描用户从控制台输入的文本。当我们需要通过控制台输入数据时只需要事先导入 java.util 包中的 Scanner 类然后调用 Scanner 类我们的程序就能获取我们在控制台所输入的数据了 3.1.1 导包 import java.util.Scanner;在 IDEA 中可直接创建 Scanner 对象 IDEA 会自动帮我们导包 3.1.2 基本用法 package CH02_JAVAProcessControl; //基础Scannerimport java.util.Scanner;//导包 public class XZ01_UserInteraction {public static void main(String[] args) {Scanner input new Scanner(System.in);// 创建Scanner对象// input 是对象名称在符合命名规范前提下可随意命名System.out.println(请输入);if (input.hasNext()) {// 判断用户是否输入数据String i input.next();// 声明变量接收用户输入数据例如// input.nextDouble();// input.nextInt();System.out.println(i);// 输出接收用户输入数据的变量}input.close();// 关闭Scanner对象} }通过 Scanner 类的 next() 与 nextLine() 方法获取输入的字符串在读取前我们一般需要使用 hasNext() 与 hasNextLine() 判断是否还有输入的数据 使用完Scanner后我们一定要记得将它关闭因为使用Scanner本质上是打开了一个 IO 流如果不关闭的话它将会一直占用系统资源。注意一旦你关闭后就算在input.close();这行代码后你再重新创建 Scanner 对象也不能重新再打开一个扫描器了如果继续使用程序会报错所以一定要在用不到扫描器之后再关闭即把input.close();放到代码的最后 3.1.3 next() 与 nextLine() 的区别 package CH02_JAVAProcessControl; //基础Scannerimport java.util.Scanner;public class XZ01_UserInteraction2 {public static void main(String[] args) {Scanner input new Scanner(System.in);System.out.println(next() 与 nextLine() 的区别);String i2 input.nextLine();// String i2 input.next();System.out.println(i2);// NextLine与Next的区别// NextLine会记录用户输入直到按下回车键的所有数据// Next遇到空格就自动停止input.close();} }3.1.4 next() 用法总结 一定要读取到有效字符后才可以结束输入对输入的有效字符之前所遇到的空白会自动将其去除只有输入的有效字符后才将其后面输入的空白作为结束符next()不能得到带有空格的字符串 nextLine() 用法总结 以回车符作为结束标识符获取到的是回车符前输入的所有字符串包括空格 3.1.5 演示案例 package CH02_JAVAProcessControl; //基础Scannerimport java.util.Scanner;public class XZ01_UserInteraction3 {public static void main(String[] args) {//我们可以输入多个数字并求其总和与平均数每输入一个数字用回车确认//通过输入非数字来结束输入并输出执行结果Scanner input new Scanner(System.in);double sum 0;// 声明变量记录用户输入数据和int count 0;// 声明变量记录用户输入数据次数System.out.println(请输入数字(输入字母停止));while (input.hasNextDouble()) {// 只有用户输入Double类型数据才会执行sum input.nextDouble();// 记录和的变量加上用户当前输入数据count;// 用户输入数据次数1}System.out.println(count 个数的和为 sum);input.close();} }3.1.6 顺序结构 JAVA的基本结构就是顺序结构除非特别指明否则就按照顺序一句一句执行顺序结构是最简单的算法结构语句与语句之间框与框之间是按从上到下的顺序进行的它是由若干个依次执行的处理步骤组成的它是任何一个算法都离不开的一种基本算法结构 3.2 If 选择结构 3.2.1 单层 if 选择结构 package CH02_JAVAProcessControl;//单层 if 选择结构 public class XZ02_SelectStructure {public static void main(String[] args) {int i 60;if (i 60) {System.out.println(及格);//当结果为true执行} else {System.out.println(不及格);//当结果为false执行}} }3.2.2 多重 if 选择结构 package CH02_JAVAProcessControl; //多重 if 选择结构import java.util.Scanner;public class XZ02_SelectStructure2 {public static void main(String[] args) {Scanner input new Scanner(System.in);// 判断用户输入数据对数据进行分区System.out.println(请输入成绩);double score input.nextDouble();if (score 100) {System.out.println(数据非法);} else if (score 100 score 90) {System.out.println(A级);} else if (score 80) {System.out.println(B级);} else if (score 70) {System.out.println(C级);} else if (score 60) {System.out.println(D级);} else {System.out.println(不及格);}input.close();} }3.2.3 嵌套 if 选择结构 package CH02_JAVAProcessControl; //嵌套ifimport java.util.Scanner;public class XZ02_SelectStructure3 {public static void main(String[] args) {Scanner input new Scanner(System.in);// 判断用户输入数据对数据进行分区System.out.println(请输入成绩);if (input.hasNextDouble()) {double score input.nextDouble();// if判断用户输入数据是否为double类型// 然后在进行分级判断if (score 100) {System.out.println(数据非法);} else if (score 100 score 90) {System.out.println(A级);} else if (score 80) {System.out.println(B级);} else if (score 70) {System.out.println(C级);} else if (score 60) {System.out.println(D级);} else {System.out.println(不及格);}}input.close();} }3.2.4 if 语句执行条件 如果第一条 if 语句执行结果就为true则下方的所有if语句都不会在执行也就是如果 if 能进入下一句判断则他一定不满足上一个 if 的条件 3.3 Switch 选择结构 3.3.1 switch 选择结构 package CH02_JAVAProcessControl; //switch判断整数import java.util.Scanner;public class XZ02_SelectStructure4 {public static void main(String[] args) {Scanner input new Scanner(System.in);System.out.println(请输入数字);int var input.nextInt();switch (var) {case 0:System.out.println(值1);break;case 1:System.out.println(值2);break;case 2:System.out.println(值3);break;default:System.out.println(默认值);}input.close();} }选择结构 多选择结构还有一个实现方式就是switch case 语句 switch case 语句判断一个变量与一系列值中某个值是否相等每个值称为一个分支 3.3.2 switch 选择结构进阶 package CH02_JAVAProcessControl; //switch判断字符串import java.util.Scanner;public class XZ02_SelectStructure5 {public static void main(String[] args) {Scanner input new Scanner(System.in);System.out.println(请输入值);String var input.next();switch (var) {case 玄子:System.out.println(玄子);break;case XuanZiShaer:System.out.println(XuanZiShaer);break;default:System.out.println(默认值);}input.close();} }switch 语句中的变量类型可以是 byte、short、int 或者 char从 Java SE 7 开始 switch 支持字符串 String 类型了同时 case 标签必须为字符串常量或字面量 3.3.3 switch 选择结构案例 package CH02_JAVAProcessControl; // 输入一个日期判断这个日期已经过了多少天import java.util.Scanner;public class XZ02_SelectStructure6 {public static void main(String[] args) {// 普通闰年:公历年份是4的倍数且不是100的倍数的为闰年。// 能被4整除且不能被100整除// 世纪闰年:公历年份是整百数的必须是400的倍数才是闰年)。// 能被100整除且被400整除Scanner input new Scanner(System.in);System.out.println(请输入日期年);int year input.nextInt();System.out.println(请输入日期月);int month input.nextInt();System.out.println(请输入日期日);int day input.nextInt();switch (month - 1) {case 11:day 30;case 10:day 31;case 9:day 30;case 8:day 31;case 7:day 31;case 6:day 30;case 5:day 31;case 4:day 30;case 3:day 31;case 2:if ((year % 4 0 year % 100 ! 0) || (year % 400 0)) {System.out.println(闰年);day 29;} else {System.out.println(平年);day 28;}case 1:day 31;break;}System.out.println(day);input.close();} }3.4 While 循环结构 3.4.1 while 循环语句 package CH02_JAVAProcessControl;//while输出100以内的和 public class XZ03_CirculateStructure {public static void main(String[] args) {int sum 0;int i 0;while (i 100) {sum i;i;}System.out.println(sum);} }while 是最基本的循环它的结构为 只要布尔表达式为 true循环就会一直执行下去大多数情况是会让循环停止下来的我们需要一个让表达式失效的方式来结束循环少部分情况需要循环一直执行比如服务器的请求响应监听等循环条件一直为true就会造成无限循环死循环我们正常的业务编程中应该尽量避免死循环。会影响程序性能或者造成程序卡死奔溃 3.5 Do…While 循环结构 3.5.1 do…while 循环语句 package CH02_JAVAProcessControl;//do while 和while的区别 public class XZ03_CirculateStructure2 {public static void main(String[] args) {int i 0;while (i 0) {i;System.out.println(i);}System.out.println();do {i;System.out.println(i);} while (i 0);} }do…while 循环 对于while语句而言如果不满足条件则不能进入循环。但有时候我们需要即使不满足条件也至少执行一次do…while 循环和 while 循环相似不同的是 do…while 循环至少会执行一次 3.5.2 while 和 do…while 的区别 while 先判断后执行dowhile 是先执行后判断Do…while 总是保证循环体会被至少执行一次 3.6 For 循环结构 3.6.1 for 循环语句 package CH02_JAVAProcessControl;//for循环输出100以内的和 public class XZ03_CirculateStructure3 {public static void main(String[] args) {int a 0;//初始化 //条件判断 //迭代for (int i 0; i 100; i) {a i;}System.out.println(a);} }for 循环 虽然所有循环结构都可以用 while 或者 do…while 表示但 Java 提供了另一种语句 for 循环使一些循环结构变得更加简单for 循环语句是支持迭代的一种通用结构是最有效、最灵活的循环结构for 循环执行的次数是在执行前就确定的 3.6.2 for 循环执行步骤 最先执行初始化步骤。可以声明一种类型但可初始化一个或多个循环控制变量也可以是空语句然后检测布尔表达式的值。如果为true循环体被执行。如果为false循环终止开始执行循环体后面的语句执行一次循环后更新循环控制变量迭代因子控制循环变量的增减再次检测布尔表达式。循环执行上面的过程 3.7 Foreach 循环结构 3.7.1 增强 for 语句 package CH02_JAVAProcessControl;//增强for public class XZ03_CirculateStructure7 {public static void main(String[] args) {//遍历数组中的值int[] a new int[]{10, 20, 30, 40, 50, 60};for (int x : a) {System.out.println(x);}} }增强 for Java5 引入了一种主要用于数组或集合的增强型 for 循环声明语句声明新的局部变量该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块其值与此时数组元素的值相等表达式表达式是要访问的数组名或者是返回值为数组的方法 3.8 Break 和 Continue package CH02_JAVAProcessControl;//break和continue的区别 public class XZ03_CirculateStructure1_break_continue {public static void main(String[] args) {int i 0;while (i 100) {i;System.out.print(i );if (i 30) {break;}}System.out.println();System.out.println();int j 0;while (j 100) {j;if (j % 10 0) {System.out.println();continue;}System.out.print(j);}} }3.8.1 break 和 continue 的区别 break 在任何循环语句的主体部分均可用break控制循环的流程。break用于强行退出循环不执行循环中剩余的语句。break语句也在switch语句中使用continue 语句用在循环语句体中用于终止某次循环过程即跳过循环体中尚未执行的语句接着进行下一次是否执行循环的判定 3.9 go to 关键字 package CH02_JAVAProcessControl;public class XZ04_GoToKeyWord {public static void main(String[] args) {// 打印101-159之间所有的质数// 质数是指在大于1的自然数中除了1和它本身以外不再有其他因数的自然数。int count 0;outer:for (int i 101; i 150; i) {for (int j 2; j i / 2; j) {if (i % j 0) {continue outer;}}System.out.print(i );}} }go to关键字 关于 go to 关键字 go to 关键字很早就在程序设计语言中出现尽管 go to 仍是 Java 的一个保留字但并未在语言中得到正式使用Java 没有go to然而在 break 和 continue 这两个关键字的身上我们仍然能看出一些 go to 的影子像是带标签的 break 和continue“标签”是指后面跟一个冒号的标识符例如label对 Java 来说唯一用到标签的地方是在循环语句之前。而在循环之前设置标签的唯一理由是我们希望在其中嵌套另个循环由于 break 和 continue 关键字通常只中断当前循环但若随同标签使用它们就会中断到存在标签的地方 3.10 循环结构案例 3.10.1 二进制转换十进制 package LearnJava.进制转换;import java.util.Scanner;public class 二进制转换十进制 {public static void main(String[] args) {Scanner input new Scanner(System.in);//先判断有几位数//输入数*输入位数减去1的平方//转换后数值相加//输出最终结果System.out.println(请输入二进制数字);int erjinzhi input.nextInt();int shijinzhi 0, p 0;while (erjinzhi ! 0) {shijinzhi ((erjinzhi % 10) * Math.pow(2, p));erjinzhi erjinzhi / 10;p;}System.out.println(shijinzhi);} }3.10.2 十进制转换二进制 package LearnJava.进制转换;import java.util.Scanner;public class 十进制转换二进制 {public static void main(String[] args) {Scanner input new Scanner(System.in);System.out.println(请输入十进制数字);int n input.nextInt();int t 0;//用来记录位数int bin 0;//用来记录最后的二进制数int r 0;//用来存储余数while (n ! 0) {r n % 2;n n / 2;bin r * Math.pow(10, t);t;}System.out.println(bin);} }3.10.3 打印 100 以内的奇数与偶数和 package CH02_JAVAProcessControl;//for循环输出100以内的奇数与偶数和 public class XZ03_CirculateStructure4 {public static void main(String[] args) {int ji 0;int oh 0;for (int i 0; i 100; i) {if (i % 2 0) {oh i;} else {ji i;}}System.out.println(ji);System.out.println(oh);System.out.println(ji oh);} }3.10.4 打印 1-1000 之间能被 5 整除的数并且每行输出 3 个 package CH02_JAVAProcessControl;//用while或for循环输出1-1000之间能被5整除的数并且每行输出3个 public class XZ03_CirculateStructure5 {public static void main(String[] args) {for (int i 1; i 1000; i) {if (i % 5 0) {System.out.print(i \t);}if (i % (3 * 5) 0) {System.out.println();}}} }3.10.5 打印正反 99 乘法表 package CH02_JAVAProcessControl;//打印正反99乘法表 public class XZ03_CirculateStructure6 {public static void main(String[] args) {// 1.我们先打印第一列这个大家应该都会// 2.我们把固定的1再用一个循环包起来// 3.去掉重复项ij// 4.调整样式for (int j 1; j 9; j) {for (int i 1; i j; i) {System.out.print(j * i (j * i) \t);}System.out.println();}System.out.println();for (int j 9; j 0; j--) {for (int i 1; i j; i) {System.out.print(j * i (j * i) \t);}System.out.println();}} }3.10.6 打印等腰三角形 package CH02_JAVAProcessControl;//打印三角形 public class XZ03_CirculateStructure8 {public static void main(String[] args) {// 空白与实体之间的关系 2*i-1for (int i 0; i 5; i) {for (int j 5; j i; j--) {System.out.print( );}for (int j 1; j 2 * i - 1; j) {System.out.print(*);}System.out.println();}System.out.println();for (int i 1; i 5; i) {for (int j 5; j i; j--) {System.out.print( );}for (int j 1; j i; j) {System.out.print(*);}for (int j 1; j i; j) {System.out.print(*);}System.out.println();}} }四、方法 4.1 方法的定义 package CH03_JAVAMethod;import java.util.Scanner;//方法的定义 public class XZ01_DefinitionOfMethod {public static void main(String[] args) {Scanner input new Scanner(System.in);System.out.println(请输入第一个数字);int x input.nextInt();System.out.println(请输入第二个数字);int y input.nextInt();// 声明变量x和y接收用户输入变量int result sum(x, y);// 调用方法获取返回值System.out.println(大数是 result);// 输出返回值input.close();}public static int sum(int x, int y) {// 修饰符 返回值类型 方法名参数类型 参数名{int result 0;// 声明变量返回结果if (x y) {return 0;}if (x y) {result x;} else {result y;}// 方法体return result;// return 返回值}}Java方法是语句的集合 它们在一起执行一个功能方法是解决一类问题的步骤的有序组合方法包含于类或对象中方法在程序中被创建在其他地方被引用 设计方法的原则 方法的本意是功能块就是实现某个功能的语句块的集合我们设计方法的时候最好保持方法的原子性就是一个方法只完成1个功能样利于后期代码的扩展。 4.1.2 方法的定义元素 Java的方法类似于其它语言的函数是一段用来完成特定功能的代码片段一个方法包括一个方法头和一个方法体方法头一般有一下内容修饰符修饰符是可选的告诉编译器如何调用该方法。定义了该方法的访问类型返回值类型方法可能会返回值。returnValueType 是方法返回值的数据类型。有些方法执行所需的操作但没有返回值returnValueType 就是关键字 void方法名是方法的实际名称。方法名和参数表共同构成方法签名参数类型参数像是一个占位符。当方法被调用时传递值给参数。这个值被称为实参或变量。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的方法可以不包含任何参数 形式参数在方法被调用时用于接收外界输入的数据实参调用方法时实际传给方法的数据 方法体方法体包含具体的语句定义该方法的功能 4.2 方法的重载 package CH03_JAVAMethod;//方法的重载 public class XZ02_OverloadingOfMethod {public static void main(String[] args) {// 声明变量x和y接收用户输入变量int result add(10, 20, 30);int result2 add(10, 20);double result3 add(10, 20, 30.6, 40);// 方法名相同根据传递参数数量类型不同自动判断System.out.println(和为 result);System.out.println(和为 result2);System.out.println(和为 result3);// 输出返回值}public static int add(int x, int y) {// 修饰符 返回值类型 方法名参数类型 参数名{int result 0;// 声明变量返回结果result x y;// 方法体return result;// return 返回值}public static int add(int x, int y, int z) {// 修饰符 返回值类型 方法名参数类型 参数名{int result 0;// 声明变量返回结果result x y z;// 方法体return result;// return 返回值}public static double add(double x, double y, double z, double n) {// 修饰符 返回值类型 方法名参数类型 参数名{double result 0;// 声明变量返回结果result x y z n;// 方法体return result;// return 返回值}}方法的重载重载就是在一个类中有相同的函数名称但形参不同的函数。 方法名称相同时编译器会根据调用方法的参数个数、参数类型等去逐个匹配以选择对应的方法如果匹配失败则编译器报错。 4.2.1 方法的重载规则 方法名称必须相同。参数列表必须不同个数不同、或类型不同、参数排列顺序不同等。方法的返回类型可以相同也可以不相同。仅仅返回类型不同不足以成为方法的重载。 4.3 命令行传参 package CH03_JAVAMethod;//传参 public class XZ03_ChuanshenOfMethod {public static void main(String[] args) {for (int i 0; i args.length; i) {System.out.println(args[ i ]: args[i]);}} }命令行传参有时候你希望运行一个程序时候再传递给它消息。这要靠传递命令行参数 给main( ) 函数实现。 通过cmd窗体编译 java 文件传递参数 编译文件javac XZ03_ChuanshenOfMethod.java cd…/ 回退到 src 目录下 书写全路径java CH03_JAVAMethod/XZ03_ChuanshenOfMethod 加上传递参数java CH03_JAVAMethod.XZ03_ChuanshenOfMethod XuanZi XuanZiShaer !!! 注释可能无法编译导致编译失败 4.4 可变参数 package CH03_JAVAMethod;//可变参数 public class XZ04_VariableParameterOfMethod {public static void main(String[] args) {printMax(312, 22.2, 3213, 32131);}public static void printMax(int a, double... numbers) {if (numbers.length 0) {System.out.println(No argument passed);return;}double result numbers[0];//排序for (int i 1; i numbers.length; i) {if (numbers[i] result) {result numbers[i];}}System.out.println(The max value is result);}}可变参数 JDK1.5 开始Java 支持传递同类型的可变参数给一个方法在方法声明中在指定参数类型后加一个省略号(…)一个方法中只能指定一个可变参数它必须是方法的最后一个参数。任何普通的参数必须在它之前声明 4.5 递归 package CH03_JAVAMethod;//递归 public class XZ05_RecursionOfMethod {public static void main(String[] args) {System.out.println(f(25));}public static long f(long n) {if (n 1) {return 1;} else {return n * f(n - 1);}} }递归 A方法调用B方法我们很容易理解递归就是A方法调用A方法就是自己调用自己调用递归可以用简单的程序来解决一些复杂的问题。它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。递归结构包括两个部分 递归头什么时候不调用自身方法。如果没有头将陷入死循环递归体什么时候需要调用自身方法 五、数组 5.1 数组的定义 package CH04_JAVAArrays;//数组的定义 public class XZ01_DefinitionOfArray {public static void main(String[] args) {int[] nums;// 声明数组nums new int[10];// 定义数组空间nums[0] 1;nums[1] 2;nums[2] 3;nums[3] 4;nums[4] 5;nums[5] 6;nums[6] 7;nums[7] 8;nums[8] 9;nums[9] 10;// 对数组进行赋值// nums[10] 11;// 数组素引超出范围int sum 0;for (int i 0; i nums.length; i) {sum nums[i];}System.out.println(和为 sum);} }数组的定义 数组是相同类型数据的有序集合数组描述的是相同类型的若干个数据按照一定的先后次序排列组合而成其中每一个数据称作一个数组元素每个数组元素可以通过一个下标来访问它们 5.2 数组状态 package CH04_JAVAArrays;//数组状态 public class XZ02_ArrayState {public static void main(String[] args) {int[] nums new int[10];nums[0] 1;// 动态状态int[] nums2 {10, 20, 30, 40, 50};// 静态状态System.out.println(nums[0]);System.out.println(nums[1]);System.out.println(nums2[0]);} }数组的默认初始化 数组是引用类型它的元素相当于类的实例变量因此数组一经分配空间其中的每个元素也被按照实例变量同样的方式被隐式初始化。 5.3 数组下标越界 package CH04_JAVAArrays;//数组下标越界 public class XZ03_ArraySubscriptOutOfBounds {public static void main(String[] args) {int[] nums new int[10];System.out.println(nums[10]);//打印数组下标超过数组存储就会报错 数组下标越界} }数组是相同数据类型(数据类型可以为任意类型)的有序集合数组也是对象。数组元素相当于对象的成员变量数组长度的确定的不可变的。如果越界则报错ArraylndexOutofBounds 5.3.1 数组的基本特点 其长度是确定的。数组一旦被创建它的大小就是不可以改变的。其元素必须是相同类型,不允许出现混合类型数组中的元素可以是任何数据类型包括基本类型和引用类型数组变量属引用类型数组也可以看成是对象数组中的每个元素相当于该对象的成员变量数组本身就是对象Java中对象是在堆中的因此数组无论保存原始类型还是其他对象类型数组对象本身是在堆中的 5.4 数组基础案例 package CH04_JAVAArrays;//数组基础案例 public class XZ04_ArrayBasicCase {public static void main(String[] args) {int[] nums {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};System.out.println(遍历数组);for (int i 0; i nums.length; i) {System.out.print(nums[i] \t);}System.out.println();System.out.println(遍历数组);for (int num : nums) {System.out.print(num \t);}System.out.println();System.out.println(计算和);int sum 0;for (int i 0; i nums.length; i) {sum nums[i];}System.out.print(和为 sum);System.out.println();System.out.println(计算最大数);int max nums[0];for (int i 0; i nums.length; i) {if (nums[i] max) {max nums[i];}}System.out.print(最大数为 max);System.out.println();System.out.println(反转数组);for (int i 0; i reverse(nums).length; i) {System.out.print(reverse(nums)[i] \t);}}public static int[] reverse(int[] nums) {// 反转数组int[] result new int[nums.length];for (int i 0, j result.length - 1; i nums.length; i, j--) {result[i] nums[j];}return result;}}5.4.1 数组插入 package XuanZi.CH08.数组; //数组插入import java.util.Arrays;public class XuanZi06 {public static void main(String[] args) {int[] lao {18, 17, 55, 19, 51, 45};//老数组int num 52;//插入数int[] xin new int[lao.length 1];//新数组长度等于老数组长度加一//新数组的i位成语老数组的i位System.arraycopy(lao, 0, xin, 0, lao.length);xin[lao.length] num;//新数组最后一位等于插入数Arrays.sort(xin);for (int i 0; i xin.length; i) {System.out.println(xin[i]);//排序输出}} }5.4.2 数组合并 package XuanZi.CH08.数组;public class XUanZi07 {public static void main(String[] args) {int[] a new int[]{10, 20, 30};int[] b new int[]{40, 50, 60};int[] xin new int[a.length b.length];int c 0;System.out.print(第一个数组中的元素:);for (int i 0; i a.length; i) {System.out.print(a[i]);if (i a.length - 1) {System.out.print(,);}}System.out.println();System.out.print(第二个数组中的元素:);for (int i 0; i a.length; i) {System.out.print(b[i]);if (i b.length - 1) {System.out.print(,);}}System.out.println();for (int i 0; i xin.length; i) {if (i a.length) {xin[i] a[i];} else {xin[i] b[c];c;}}System.out.print(两个数组合并后:);for (int i 0; i xin.length; i) {System.out.print(xin[i]);if (i xin.length - 1) {System.out.print(,);}}System.out.println();System.out.print(逆序后:);for (int i 0; i xin.length; i) {System.out.print((xin[xin.length - i - 1]));if (i xin.length - 1) {System.out.print(,);}}} }5.5 多维数组 package CH04_JAVAArrays;//多维数组 public class XZ05_multidimensionalArray {public static void main(String[] args) {int[] nums {1, 2, 3, 4, 5};int[][] ages {{1, 2}, {2, 3}, {3, 4}, {4, 5}};for (int i 0; i nums.length; i) {System.out.print(nums[i] \t);}System.out.println();System.out.println(打印多维数组);for (int i 0; i ages.length; i) {for (int j 0; j ages[i].length; j) {System.out.print(ages[i][j] \t);}}} }多维数组可以看成是数组的数组比如二维数组就是一个特殊的一维数组其每一个元素都是一个一维数组 5.6 Arrays 类 package CH04_JAVAArrays; //Arrays类import java.util.Arrays;public class XZ06_ArrayClass {public static void main(String[] args) {int[] nums {2, 4, 6, 7, 5};Arrays.sort(nums);//数组排序System.out.println(Arrays.toString(nums));//打印数组Arrays.fill(nums, 2, 4, 0);// 填充数组 起始下标 填充值System.out.println(Arrays.toString(nums));} }Arrays 类 数组的工具类java.util.Arrays由于数组对象本身并没有什么方法可以供我们调用但API中提供了一个工具类Arrays供我们使用从而可以对数据对象进行一些基本的操作Arrays类中的方法都是static修饰的静态方法在使用的时候可以直接使用类名进行调用,而不用“使用对象来调用注意是”不用”而不是“不能” 5.6.1 常用功能 给数组赋值通过fill方法对数组排序通过sort方法按升序比较数组通过equals方法比较数组中元素值是否相等查找数组元素通过binarySearch方法能对排序好的数组进行二分查找法操作 5.7 冒泡排序 package CH04_JAVAArrays;import java.util.Arrays;//冒泡排序 public class XZ07_bubbleSort {public static void main(String[] args) {// 比较数组中两个相邻的元素如果第一个数比第二个数大// 我们就交换他们的位置// 每一次比较都会产生出一个最大或者最小的数字// 下一轮则可以少一次排序// 依次循环直到结束int[] a {1, 4, 5, 6, 72, 2, 2, 2, 25, 6, 7};int[] sort sort(a);//调用完我们自己写的排序方法以后返回一个排序后的数组System.out.println(Arrays.toString(sort));}public static int[] sort(int[] array) {//临时变量int temp 0;//外层循环判断我们这个要走多少次for (int i 0; i array.length - 1; i) {boolean flag false;//减少没有意义的比较//内层循环比价判断两个数如果第一个数比第二个数大则交换位置for (int j 0; j array.length - 1 - i; j) {if (array[j 1] array[j]) {temp array[j];array[j] array[j 1];array[j 1] temp;flag true;}}if (!flag) {break;}}return array;} }冒泡排序无疑是最为出名的排序算法之一总共有八大排序冒泡的代码还是相当简单的两层循环外层冒泡轮数里层依次比较江湖中人人尽皆知我们看到嵌套循环应该立马就可以得出这个算法的时间复杂度为O(n2) 5.7.1 冒泡排序口诀 外层循环 n-1 ,控制比较轮数内层循环 n-1-i ,控制每一轮比较次数两两比较做交换 ,判断大小交换位置 六、面向对象编程 6.1 JAVA 的核心思想就是OOP 6.1.1 面向过程与面向对象 面向过程思想 步骤清晰简单第一步做什么第二步做什么…… 面对过程适合处理一些较为简单的问题 面向对象思想 物以类聚分类的思维模式思考问题首先会解决问题需要哪些分类然后对这些分类进行单独思考。最后才对某个分类下的细节进行面向过程的思索面向对象适合处理复杂的问题适合处理需要多人协作的问题 对于描述复杂的事物为了从宏观上把握、从整体上合理分析我们需要使用面向对象的思路来分析整个系统。但是具体到微观操作仍然需要面向过程的思路去处理。 6.1.2 面向对象的定义 面向对象编程(Object-Oriented Programming)简称OOP 面向对象编程的本质就是以类的方式组织代码以对象的组织封装)数据。 6.1.3 三大特征 封装继承多态 6.1.4 面向对象的优点 与人类的思维习惯一致隐藏信息提高了程序的可维护性和安全性提高了程序的可重用性易维护易重用易拓展安全性 6.2 类和对象 6.2.1 类与对象的定义 类是现实世界或思维世界中的实体在计算机中的反映它将数据以及这些数据上的操作封装在一起 对象是具有类类型的变量。类和对象是面向对象编程技术中的最基本的概念 6.2.2 类与对象的关系 类是对象的抽象而对象是类的具体实例类是抽象的不占用内存而对象是具体的占用存储空间类是用于创建对象的蓝图它是一个定义包括在特定类型的对象中的方法和变量的软件模板 类是对象的类型对象是类的实例 6.3 创建对象与初始化 package CH05_JAVAObjectOriented;//类与对象的创建 public class XZ01_Student {// 学生类String name;// 默认值 nullint age;// 默认值 0public void study() {System.out.println(this.name 在学习);// this 代表当前类的属性} }package CH05_JAVAObjectOriented;//一个项目应该只存在一个 Main 方法 public class XZ01_Main {public static void main(String[] args) {//类抽象的实例化//类实例化后会返回一个自己的对象XZ01_Student xiaoMing new XZ01_Student();// 使用new关键字创建对象System.out.println(xiaoMing.name);System.out.println(xiaoMing.age);xiaoMing.study();XZ01_Student xiaoHong new XZ01_Student();System.out.println(------------------------);xiaoHong.name 小红;// 对属性进行赋值xiaoHong.age 16;System.out.println(xiaoHong.name);System.out.println(xiaoHong.age);xiaoHong.study();//xiaoHong,xiaoHong就是一个Student类的具体实例} }6.4 构造器 类中的构造器也称为构造方法是在进行创建对象的时候必须要调用的。并且构造器有以下特点 方法名必须和类名相同没有返回值类型如果没有写构造方法则使用系统默认的构造方法系统默认提供一个无参构造方法带参构造方法如果构造方法有返回值则成为了普通方法不会报错构造方法重载方法重载方法名相同参数不同个数顺序类型 package CH05_JAVAObjectOriented;public class XZ02_Constructors {//一个类即使什么都不写它也会存在一个方法//显示的定义构造器String name;public XZ02_Constructors(String name) {//有参构造一旦定义了有参构造无参就必须显示定义//只要定义了有参构造就也定义个无参构造this.name name;}public XZ02_Constructors() {this.name 玄子;} }package CH05_JAVAObjectOriented;public class XZ02_Main {public static void main(String[] args) {XZ02_Constructors constructors new XZ02_Constructors(玉玉诏);System.out.println(constructors.name);// 这里看不懂可尝试 Debug 一下} }6.4.1 快捷生成 快捷键 Alt Instant 笔记本用户根据自己机型考虑加上 Shift 即同时按下 Alt Shift Instant 6.5 封装 package CH05_JAVAObjectOriented; //封装 public class XZ03_Encapsulation {private String name;private int age;private char sex;public String getName() {return name;}public void setName(String name) {this.name name;}public int getAge() {return age;}public void setAge(int age) { // 为了避免赋值错误需对属性设置限制在set()方法中进行验证if (age 100) {System.out.println(age 为非法数据);this.age 18;} else { // this代表当前对象this.age age;}}public char getSex() {return sex;}public void setSex(char sex) {this.sex sex;} }package CH05_JAVAObjectOriented;public class XZ03_Main {public static void main(String[] args) {XZ03_Encapsulation encapsulation new XZ03_Encapsulation();encapsulation.setName(玄子);encapsulation.setAge(12);encapsulation.setSex(男);System.out.println(encapsulation.getName());System.out.println(encapsulation.getAge());System.out.println(encapsulation.getSex());System.out.println(------------------);XZ03_Encapsulation encapsulation2 new XZ03_Encapsulation();encapsulation2.setAge(112);System.out.println(encapsulation2.getAge());} }6.5.1 面向对象三大特征之一 封装 将类的某些信息隐藏在类内部不允许外部程序直接访问而是通过该类提供的方法来实现对隐藏信息的操作和访问 我们程序设计要追求“高内聚低耦合” 高内聚就是类的内部数据操作细节自己完成不允许外部干涉 低耦合仅暴露少量的方法给外部使用 将属性私有通过get/set方法操作属性 6.5.2 封装的好处 隐藏类的实现细节只能通过规定方法访问数据方便加入控制语句方便修改实现 6.5.3 快捷生成 快捷键 Alt Instant 笔记本用户根据自己机型考虑加上 Shift 即同时按下 Alt Shift Instant 选择Getter 和 Setter 6.5.4 htis 关键字 是对一个对象的默认引用 调用成员变量 调用成员方法 调用已定义的构造方法 this 关键字是在对象内部指代自身的引用所以它只能调用实例变量、实例方法和构造方法不能调用类变量和类方法也不能调用局部变量 private String name;public String getName() {return name; }public void setName(String name) {this.name name; }6.5.5 方法的重载 package CH03_JAVAMethod;//方法的重载 public class XZ02_OverloadingOfMethod {public static void main(String[] args) {// 声明变量x和y接收用户输入变量int result add(10, 20, 30);int result2 add(10, 20);double result3 add(10, 20, 30.6, 40);// 方法名相同根据传递参数数量类型不同自动判断System.out.println(和为 result);System.out.println(和为 result2);System.out.println(和为 result3);// 输出返回值}public static int add(int x, int y) {// 修饰符 返回值类型 方法名参数类型 参数名{int result 0;// 声明变量返回结果result x y;// 方法体return result;// return 返回值}public static int add(int x, int y, int z) {// 修饰符 返回值类型 方法名参数类型 参数名{int result 0;// 声明变量返回结果result x y z;// 方法体return result;// return 返回值}public static double add(double x, double y, double z, double n) {// 修饰符 返回值类型 方法名参数类型 参数名{double result 0;// 声明变量返回结果result x y z n;// 方法体return result;// return 返回值}}方法的重载重载就是在一个类中有相同的函数名称但形参不同的函数。 方法名称相同时编译器会根据调用方法的参数个数、参数类型等去逐个匹配以选择对应的方法如果匹配失败则编译器报错。 6.5.6 方法的重载规则 方法名称必须相同。参数列表必须不同个数不同、或类型不同、参数排列顺序不同等。方法的返回类型可以相同也可以不相同。仅仅返回类型不同不足以成为方法的重载。 6.6 继承 package CH05_JAVAObjectOriented; //继承父类 public class XZ04_Extend /* extends Object*/ {public String name 玄子;// 所有的 Java 类都直接或间接地继承了Object类private int money;public void say() {System.out.println(我是父级XZ04_Extend);}public int getMoney() {return money;}public void setMoney(int money) {this.money money;} }package CH05_JAVAObjectOriented; //继承子类 public class XZ04_Student extends XZ04_Extend { // extends 父级XZ04_Extend 的所有方法 // Ctrl H 查看继承结构public String name XuanZi;public void test(String name) {System.out.println(name);// XuanZiShareSystem.out.println(this.name);// XuanZiSystem.out.println(super.name);// 玄子} }package CH05_JAVAObjectOriented;public class XZ04_Main {public static void main(String[] args) {XZ04_Student student new XZ04_Student();student.say();student.setMoney(1000);System.out.println(student.getMoney());System.out.println(------------------);student.test(XuanZiShare);} }6.6.1 面向对象三大特征之一 继承 一个类获取现有类的所有属性和行为的机制 创建基于现有类的新类可以重用现有类的属性和方法 可以在新创建的子类中添加新属性和方法 6.6.2 继承的作用 有效的解决了代码的重用问题使代码拓展更加灵活 从始至终完整的体现了一个应用系统逻辑更加清晰 增加软件的可扩展性以适应不同的业务需求 6.6.3 何时使用继承 JAVA中类只有单继承没有多继承 继承是类和类之间的一种关系。除此之外类和类之间的关系还有依赖、组合、聚合等 继承关系的俩个类一个为子类派生类)一个为父类基类)。子类继承父类使用关键字extends来表示 子类和父类之间从意义上讲应该具有is a的关系 public class XZ04_Student extends XZ04_Extend { // extends 后跟继承父级 // 继承 XZ04_Extend 类的所有方法 }6.6.4 Object 类 所有的 Java 类都直接或间接地继承了Object类位于java.lang包中。在定义一个类时如果没有使用extends关键字即没有显式地继承某个类那么这个类直接继承Object类 public class XZ04_Extend /* extends Object*/ { // 默认继承Object类 }Ctrl H 查看继承结构树 6.6.5 super 关键字 子类访问父类成员super代表父类对象 super调用父类的构造方法必须在构造方法的第一个super必须只能出现在子类的方法或者构造方法中super和 this 不能同时调用构造方法 6.6.6 访问父类的成员 super只能出现在子类的方法和构造方法中 super调用构造方法时只能是第一句 super不能访问父类的 private 成员 6.6.7 super 和 this 的区别 代表的对象不同 this本身调用者这个对象super代表父类对象的应用 前提 this没哟继承也可以使用super只能在继承条件才可以使用 构造方法 this(); 本类的构造 super(); 父类的构造 6.6.8 方法重写 方法的重写或方法的覆盖Override在子类中根据需求对从父类继承的方法体进行重新编写以实现子类需求 必须遵守的规则 重写方法和被重写方法必须具有相同的方法名 重写方法和被重写方法必须具有相同的参数列表 重写方法返回值类型必须和被重写方法的返回值类型相同或为其子类 重写方法不能缩小被重写方法的访问权限 6.7 多态 6.8 抽象类和接口 七、异常 八、集合框架 九、常用类 十、IO流 十一、多线程 十二、综合案例 玄子:2023年2月19日
http://www.tj-hxxt.cn/news/226341.html

相关文章:

  • 网站设计概念263企业邮箱入口 邮箱登录
  • 电子商务网站策划书模板五种关键词优化工具
  • 做移门配件的网站wordpress汽车主题公园
  • 企业网站建设信息管理平台站长工具网站测速
  • 网站优化模板贸易公司如何找客户
  • 展示型网站功能萧山品牌网站建设
  • 网站的模糊搜索怎么做商城网站建设行情
  • 安徽和住房建设厅网站网站建设和赚钱方法
  • 自己做购物网站怎么做大连公司注册网站
  • 安徽茶叶学会 网站建设网站设计建设方案
  • 宣武青岛网站建设苏州正规制作网站公司
  • 做一个推广网站多少钱免费外链网盘
  • 时尚网站欣赏代理商加盟网站
  • 广州网站备案号吉林建站
  • 采集站seo课程人们常说的蓝领是从事什么工作的
  • 门户网站特点一小时赚8000元的游戏
  • 银川网站公司网站租空间多少钱
  • 时尚女装网站设计河北建设工程造价信息网站
  • 网站母版页怎么做北京网站优化厂家
  • 创建网站免费注册网站360做的标记如何取消
  • 网站页面设计报价表许昌旅游网站建设现状
  • 哪个网站可以卖自己的设计住房城乡建设部网站诚信平台
  • 宝塔网站建设跳转微信可打开为什么四川省建设厅网站打不开
  • 西昌建设招聘信息网站网站举报平台建设情况
  • 怎么样做美术招生信息网站网架公司的螺丝是不是公司安好
  • 信息网站大全电子商务网站建设 百度文库
  • 西宁市网站建设网站建设入门教学
  • 腾讯云手动搭建wordpress个人站点做网站的公司多吗
  • 国内jsp网站有哪些低价网站建设湘潭
  • 企业网站定制开发流程网站如何做分享