Java语言程序设计1

                                                                第一章:Java环境搭建              

         定期进行排名比赛 4. 课堂案例及时练习;练习过程出现问题,多沟通 下课的要求: 1. 及时完成作业;雨课堂 2. 作业过程中,有问题,及时沟通(微信、E307) Java是一种计算机编程语言;除了java编程语言, 还有很多的编程语言:c、c++、c#、python等 不同编程语言类比于不同国家语言;每个编程语言的 语法不同;应用场景不同 Java是一个用于后端开发的编程语言

        一、Java历史 1. 1995年,sun公司推出的一款面向对象的编程语 言 2. jdk:java开发的必要工具 97     jdk1.1 98     jdk1.2 .. 2004年: jdk1.5版本,更名为 jdk5.0         添加新特性:泛型、增强的for等         jdk6.0         jdk7.0

         二、Java语言的特点 【了解】 1. 简单性:相对 c、c++等 2. 开源性(开放源代码,编程人员写的程序) 3. 资源广泛性:很多编程爱好者进行研究,大厂作 为推手         jdk8.0 -> 企业,lambda表达式 (stream流)                 ...         jdk18.0         .... 2009年:sun被 oracle(甲骨文)收购了 java发展方向分为:【记住】     JavaSE:Java语言核心基础     JavaEE:企业级开发应用     JavaME:通信相关 4. 跨平台性:可以在不同的操作系统运行 5. 面向对象性:后续的讲解

        三、Java运行机制 1. Java运行机制:先编译后解释运行 windows、linux、unix、macos等 开发环境 windows /macos 部署环境:linux 源码文件:.java文件,开发人员进行编写 编译:将 .java源文件通过编译器 生成对应的 字节码文件     (.class文件) 运行:将 .class文件 通过解释器-》逐行的翻译 并运行 2. 注意:实际运行时,运行 .class 文件;.java只需 要编译一次,.class文件可以被多次的运行(一次 编译多次运行)

        四、环境搭建 1. 名词解释: 注意:如果源代码更改,重新的编译,生成新的对 应的.class (1) JVM:Java虚拟机;作用:屏蔽不同操作系统 之间差异 (2) JRE: Java运行环境;JRE = 解释器+JVM (3) JDK:Java开发工具,JDK=JRE+编译器+工 具类+工具 2. 安装JDK 3. 配置环境变量 点击 jdk的安装文件,按照 步骤完成即可。 (1) jdk不要重复安装,如果想卸载,需要通过控 制面板 (2) jdk没有 提供操作界面,需要安装 notpad++ 文本编辑器进行编写代码 (1) java_home:jdk的根目录     C:\Program Files\Java\jdk1.8.0_131       (2) path:java的 bin目录     C:\Program Files\Java\jdk1.8.0_131\bin       (3) classPath:. ; 代表:告知jvm去哪找对 应的执行.class文件;. 代表在当前路径下查找 4. 测试jdk的安装是否成功 打开 Dos 命令窗口进行测试: (1) 直接在 搜索框中输入 cmd按回车:

        五、Java的第一个开发程序 1. java的源文件以:.java进行结尾 2. class:类,代码容器 (2)直接 利用 先 系统键 + 同时 再按 R,输入 cmd即可 (3) 在 文件夹 的输入框中 输入 cmd,回车即可 在 窗口中 输入 :javac 和 java 3. 编译和运行: class 类名{   public static void main(String[] args){ } } (1) main函数:被称为 主函数,程序的入口,一 个类中最多只能有一个主函数 (2) System.out.println();// 控制台打印 输出信息 (1) 编译:javac 源文件名.java (2) 运行:java 类名 4. 细节: 5. 公开类:

        六、package(包) (1) 一个源文件中可以定义多个类,每个类中都可 以定义一个main函数 (2) 一个源文件中多个类之间不允许重名 (1) public:公开的、公共的 (2) 一个类被 public 修饰,则此类被称为公开 类、公共类 (3) 语法:   public class 类名{}     (4) 公开类的类名必须和源文件名字一致 (5) 一个源文件中最多只能定义 一个公开类 1. 作用:类似于文件夹,方便进行分门别类进行管 理 2. 语法:package 包名; 3. 注意事项: 4. 带包的编译和运行

        七、编码规范 1. 良好的标识符命名规范 (1) package语句必须位于源文件中第一行有效语 句 (2) 一个源文件中最多只能定义一个package 语 句 (1) 编译:javac -d . 源文件名.java (2) 运行:java 包名.类名 标识符:起名字的内容,统称为标识符 (1) 硬性要求[语法要求 - 开发+面试题目涉及] (2) 建议要求【软性要求】 1. java中标识符只能以 数字、字母、_、$组 成,但是不能以数字开头 2. java中标识符没有长度限制 3. java中标识符严格区分大小写 4. 不能使用 java中关键字、保留字(goto、 const)、特殊符号命名(true/false/null) 注意:java中允许使用汉字命名,但是不建议使 用,容易出现乱码   2. 良好的编码格式 3. 良好的注释习惯 (1) 望文生义,Student / Worker (2) 包名:全小写, package demo.com.zmj; (3) 类名:每个单词首字母大写,TestStudent               (4) 变量名/函数名/方法名:第一个单词首字母小 写,其余单词首字母大写(驼峰命名法) , ageAndName (5) 常量:全大写; PI (1) 建议 一行只写一句代码 (2) 层级之间要有严格缩进,一个Tab键 注释:对代码的解释和说明 (1) // :单行注释:只能写一行注释内容 (2) /* 多行注释:可以写 N行注释内容   */   注意:注释内容不参与编译 注意2:单行注释不能嵌套多行注释;     但是多行注释可以嵌套单行注释 练习:创建一个源文件命名为 TestStudent.java 定义 包结构,包名为 demo; 定义公开类,类中打印输出信息为:   大家好,我叫XXx (把自己的姓名)   人美心善,帅气... 编译和运行 

                                        第二章:变量、数据类型、运算符、表 达式

        一、变量 1. 概念:计算机中的一块内存空间,存储数据的基 本单元 2. 变量的组成部分:数据类型、变量名、数据 3. 语法: (1) 先声明,再赋值:   数据类型 变量名; // 声明   变量名 = 值;   // 赋值     (2) 声明的同时并赋值:   数据类型 变量名 = 值;     (3) 同时定义多个相同类型的变量:   数据类型 变量名1,变量名2=值,变量3;

         二、java中的数据类型分类 1. 简单数据类型、基本数据类型(原始数据) B-Byte,字节,1个字节 = 8位(8b) b->bit 1KB= 1024B 1MB= 1024KB 1GB= 1024MB 1TB= 1024GB .. 10.24号,称之为 程序猿节 (1) 整数类型(4种)   byte   1B   -128~127   short   2B   -32768~32767   int     4B   -2147483648~2147483647   long   8B   -922京 ~922京-1     注意:long的字面值后面需要加L或是l(建议大 写,区分数字1) (2) 小数类型(浮点类型-2种)   float:单精度,4B,字面值后面必须加f/F   double:双精度,8B,字面值后面可以加 D/d,或是不加   注意:float和double可以采用科学计数法进 行存储 (3) 字符类型(1种)   char 2B ,字面值形式如下:       a. 单引号引起来的一个字符       char c1 = 'A';   b. 采用整数形式,整数范围 0~65535       char c2 = 65;       char c3 = 29233;   c. 转义字符:       '\n':换行       '\t':水平跳格       '\' ':单引号       '\" ':双引号 2. 对象数据类型、引用数据类型 (4) 布尔类型(1种)   boolean 字面值 true/false       true:代表关系成立       false:关系不成立 (1) 类、数组、接口等都称为对象类型 (2) 以字符串为例:   a. 字符串:String   b. 使用 双引号引起来的 一个或是多个字符       String str = "hello"; 数据类型实际开发总结: 整数类型通常使用:int 小数类型:double 布尔类型:通常应用判断、循环结构中 字符类型:实际开发不常用 字符串:实际开发频繁使用 实际存储数据:根据项目业务 姓名 :String name ="韩晨夕" ;   年龄 : int age = 35; 成绩 :double score = 99.5; 性别 :String sex = "男";     char c = '男';     int flag = 1; // 1-男 0-女 电话: String tel= "17710131197"; 地址: String addr = "天津市武清区"; 身份证号: String id="37082819891012203x"

        三、数据类型之间的转换 1. 自动类型提升 2. 强制类型转换 (1) 场景:小数据类型赋值给大数据类型(存储的 数据范围衡量数据的大小) (2) 规则:   byte->short->int->long->float- >double     char->int->long->float->double (1) 场景:大数据类型赋值给小数据类型,需要强 制类型转化 (2) 语法:   源数据类型 变量名 = 值;   目标类型 变量名2 = (目标类型)变量名;

        四、表达式 1. 理解:表达式由字面值、变量、运算符组成式 子,通常有一个结果 2. 表达式的结果规则:

        五、运算符 1. 算术运算符 (1) 如果表达式中有double类型,结果为double (2) 表达式中没有double类型,有float,结果 为float (3) 表达式中没有double/float,有long,结 果为long (4) 其余结果为:int 2. 赋值运算符 3. 比较运算符(关系运算符) +   -   *(乘法)   /(除法) %(取余数/取 模) 注意:+ 的两种用法:   a. 如果+两端都为数值类型,则为加法运算   b. 如果+两端有一端为字符串类型,则为字 符串拼接 =   +=   -=   *=   /= 4. 逻辑运算符 5. 一元运算符: > :大于 >=:大于等于 < :小于 <= :小于等于 == :等于 != :不等于 注意:被关系运算符连接的表达式结果类型为布尔 类型,所以关系运算符连接的表达式也被称为 布尔 表达式(结果:true/false) &&:逻辑与,两端连接的为布尔表达式,只有当两 端同时为true,结果才true ||:逻辑或,两端连接的是布尔表达式,只要有一 端为true,结果为true !:逻辑非,在结果上取反 6. 三元运算符

         六、Scanner(扫描仪) 1. 作用:可以让用户输入信息,提高人机交互 ++(自增)       --(自减) 实际开发应用: a++ 和 ++a:将a自身变量值进行加1 a-- 和 --a:将a自身变量值进行减1 面试/考试常见内容: int c = a++; 先使用,再加1 int c = ++a;先计算加1,再使用 (1) 语法:   布尔表达式?表达式1:表达式2 (2) 原理:先判断表达式是否成立,结果为 true,执行表达式1,否则执行表达式2 2. 导包: 3. 步骤: (1) 语法:import 包名1.包名2.类名;// 导入 指定类         import 包名1.包名2.*;//导入包中 所有 类         (2) 位置:定义在package语句的后面,所有类上 面 (3) 例如:import java.util.Scanner;

                                                        第三章:分支结构

        一、if分支结构 1. 基本if结构:(1) 语法:   if(判断条件/布尔表达式){       // 语句   } (2) 执行原理:如果判断条件成立,则执行{}中的 语句 (1) 语法:   if(判断条件/布尔表达式){       // 语句1   }else{       // 语句2   } (2) 执行原理:如果if条件成立,则执行语句1, 否则执行语句2 4. if嵌套结构 (1) 语法:   if(判断条件1){       // 语句1   }else if(判断条件2){       // 语句2   }else if(判断条件3){       // 语句3   }else{       // 语句n   } (2) 执行原理:从上往下依次判断,哪一个条件成 立,则执行对应{}中的语句

        二、等值分支结构(switch...case结构) 1. 语法: (1) 语法:   if(判断条件/布尔表达式){       if(判断条件/布尔表达式){           //       }else if(判断条件){                   }else{}   }else {           } 2. 执行原理: 3. 细节: switch(表达式){   case 值1:语句1;break;   case 值2:语句2;break;   case 值3:语句3;break;   ...   default:语句n;break; } 首先获取switch()中表达式的结果,根据结果从 上往下进行匹配case后面的值,结果和哪一个 case的值相等,则执行对应的后面的语句;如果都 不相等,则执行default后面的语句 (1) 表达式的结果类型:byte、short、int、 char、String (2) break:终止switch结构,防止case穿透 (3) default没有位置先后要求

         三、局部变量 1. 概念:定义在函数/方法内部的变量 2. 特点: 第四章:循环结构 一、理解: 1. 循环:通过某个条件,重复并且有规律的执行一 段代码 (1) 必须先赋值,再使用   报错:可能尚未初始化变量 (2) 作用范围:从定义位置开始,到定义它的代码 块结束   报错信息为:找不到符号 (3) 在重合的作用范围内,不允许命名冲突   报错信息为:已在方法xxx中定义了变量 xx

                                                        第四章:循环结构

        一、理解: 1. 循环:通过某个条件,重复并且有规律的执行一 段代码2. 循环组成部分:循环变量的初始化、循环条件、 循环变量的改变、循环体 3. 循环分类:while循环、do..while循环、for循环

        二、while循环 1. 语法: 2. 执行原理: // 循环变量的初始化 while(循环条件){   // 循环体   // 循环变量改变 } 3. 循环特点:

         三、do..while循环 1. 语法: 先执行循环变量的初始化,接着判断循环条件,如 果循环条件满足——结果为true,则执行循环体,然 后执行循环变量的改变,接着再次判断循环条件, 如果满足——true,则再次执行循环体,同时循环变 量进行改变...直到循环条件不满足-结果为 false,则终止、跳出循环结构。 (1) 先判断,再执行,执行次数:0~n次 (2) 如果程序写的不合适,可能会出现死循环 // 循环变量的初始化 do{   // 循环体   // 循环变量的改变 }while(循环条件); // 分号不能省 2. 执行原理: 3. 特点:先执行,再判断,执行次数为1~n次。

        四、for循环 1. 语法: 2. 执行原理: 先执行循环变量的初始化,然后执行循环体,接着 对循环变量进行改变,判断循环条件,满足-结果为 true,则再次的执行循环体,对循环变量进行概 念,判断循环条件....直到循环条件结果为 false,结束、跳出循环结构。 for(循环变量的初始化;循环条件;循环变量的改 变){   // 循环体 } 3. 执行特点: (1) 先判断,再执行,执行次数 0~n次 (2) for()中的循环变量初始化可以定义在外面, 但是变量的作用范围扩大了 (3) for中的判断条件如果为空语句,则默认结果 为true

        五、循环控制语句 【开发+面试+考试重点】 1. break:终止、结束当前循环结构;可以应用在 swtich..case结构中,防止case穿透 2. continue:中止、结束本次循环,从而进入下一 次循环         六、循环的嵌套 1. 理解:在循环结构中,定义一个完整的循环结构 循环总结: while和for:循环特点相同 先判断,再执行 do...while:先执行,再判断 实际开发:for循环比较常用 while循环:循环次数不明确时,建议使用while 循环 for循环:循环次数明确时,建议使用for 2. 循环的次数:外层循环次数*内层循环次数 3. 循环控制语句应用的嵌套中: 4. 利用循环结构打印图形:外层循环控制行数、内 层循环控制列数

                                                                第五章:函数

        一、函数 1. 理解:执行一段特定功能的代码,并且可以通过 名字进行反复的调用 2. 函数的使用流程: 外层循环和内层循环 break:终止、结束本层循环 continue:中止、结束本层本次循环 3. 函数的定义位置:定义类以内,其他函数以外的 位置(与main函数并列)

        二、函数的基本使用 1. 函数的定义: (1) 函数的定义:确定函数的功能和函数名       a. 函数的声明:确定函数的名字       b. 函数的实现:确定函数的功能     (2) 函数的调用:通过名字进行反复的使用 2. 函数的调用:

        三、参数的使用 public static void 函数名(){   // 函数的实现 } 函数的定义:函数的声明和函数的实现 (1) 函数的声明:   public static void 函数名()   注意:函数名 ,望文生义,采用驼峰命名法 形式命名 (2) 函数的实现:{} (1) 通过函数名直接使用函数对应的功能 (2) 语法:函数名(); 1. 多数情况下,函数与调用者之间需要数据的交 互;调用者必须提供必要的数据,才能使函数完 成相应的功能,调用者和函数之间交互的数据, 称为参数 2. 形式参数: 3. 实际参数: (1) 形式参数:简称形参,函数和调用者之间的一 种约定,约定了调用者需要给函数传递什么数据 (2) 定义:   public static void 函数名(数据类型 变量名,数据类型 变量名,数据类型 变量名3){           } (3) 使用:形参相当于 函数内部的局部变量 (4) 一个函数可以定义多个形参,称为形参列表 (0~n个)

         四、函数的返回值 1. 理解:函数和调用者之间的一种数据交互,调用 者通过函数获取一些数据结果(函数给调用者一 定的结果) 2. 返回值的语法: (1) 实际参数:简称实参,函数调用时,传递的数 据 (2) 实参的作用:给形参赋值 (3) 注意:实参的个数、顺序、数据类型必须和形 参一致 定义一个函数selectMax,接收两个整数m,n,打 印两个数据中的较大值;在main函数中调用此函数 3. 函数的返回值分类: 4. 函数返回值的处理: public static 函数返回值 函数名(形参列表) {   // 函数的实现、函数体 } (1) 返回值类型为:void,代表函数没有返回 值,函数不需要给调用者任何结果返回   public static void 函数名(参数){} (2) 返回值类型为:8种基本数据类型或是对象, 代表函数有返回值,函数必须给调用者返回值对应 类型的数据   public static 返回值类型 函数名(参数) {       return xxx;   } 5. return的作用:

        五、函数的执行机制 1. 理解: (1) 第一种处理方式:定义同类型的变量接收返回 值 (2) 第二种处理方式: (1) 将函数返回值进行返回值给调用者 (2) 结束当前的函数 程序以Main函数作为入口,进入main函数从上往 下依次执行,如果遇到函数的调用,则优先执行被 调用的函数内部代码,被调用函数执完毕之后,带 着带着返回值返回到调用为止,继续后续代码内容 2. 函数的嵌套调用:被调用的函数内部,又调用了 其他的函数

        六、递归调用 1. 理解:一个函数中调用自身函数 2. 注意:如果使用递归解决问题,必须给递归设置 一个出口,否则出现无穷递归,最终运行报错, 错误信息为: java.lang.StackOverflowError(栈溢出) 3. 递归的思想: 4. 案例: (1) 递进:每一次推进,计算都比上一次变得简 单,直至简单到无需继续推进,就能获得结果。也 叫到达出口。 (2) 回归:基于出口的结果,逐层向上回归,依次 计算每一层的结果,直至回归到最顶层。 package demo; public class Test6{ public static void main(String[] args){ int r =jieCheng(8); System.out.println(r); } // 函数功能:计算 n的阶乘 public static int jieCheng(int n) { // n的阶乘 = n * n-1 的阶乘 // 设置一个出口,当 n=1 或是0 , 结果直接为1 if(n==1 || n==0) return 1; return n * jieCheng(n-1); } }

                                                                第六章:数组

        一、理解 1. 数组:一次性的定义多个同类型的变量,可以存 储多个数据,而且可以对多个变量进行统一管理 2. 数组的重要因素:数据类型、数组的长度 3. 数组的使用: 4. 细节: (1) 声明数组:确定数据类型   数据类型[] 数组名; // 建议   数据类型 数组名[];   数据类型 []数组名;       int[] a; (2) 分配空间:确定数组的长度   数组名= new 数据类型[长度];       a = new int[4]; 5. 数组的默认值: (1) 数组下标:从0开始,依次为 0、1、2、 3...数组的长度-1 (2) 访问数组时,采用数组名+下标,数组名[下 标] (3) 操作数组时,给定的下标不在合理范围内,编 译通过,运行报错,错误信息为: java.lang.ArrayIndexOutOfBoundsExcept ion:(数组的下标越界) (4) // 对数组元素进行一一 ,称为数组的遍历 for(int i=0;i<5;i++){ System.out.println("i="+i+"对应的元 素   为:"+ages[i]); } (5) 获取数组的长度:数组名.length 6. 数组 不同定义方式: 整数类型:0 小数类型:0.0 布尔类型:false 字符类型:空字符 引用类型:null (1) 先声明,再分配空间:   数据类型[] 数组名;   数组名 = new 数据类型[长度];     (2) 声明的同时并分配空间:   数据类型[] 数组名 = new 数据类型[长 度];     (3) 显示初始化:   数据类型[] 数组名= new 数据类型[]{值 1,值2,值3};     (4) 显示初始化:   数据类型[] 数组名= {值1,值2,值3}注意:数组的声明和初始化一起完成 (1) 创建一个更大空间的新数组,通常为原数组的 2倍 (2) 将原数组的内容进行一一赋值到新的数组中 (3) 新地址覆盖旧地址 (1) 第一种方式: int[] a = {4,7,3}; // 数组的长度为 System.out.println("数组的长度 为:"+a.length); for(int ivint[][] a= new int[4][3];// 4行3列二维 数组 (1) 冒泡排序:每次将相邻的两个元素进行一一比 较,较大的值往后放 int[] a = {9,4,5,2,6,3,1,9}; /* 从小到大进行排序   冒泡排序:每次将相邻的两个元素进 行一一比较,较大的值往后       下标: 0   1   2 3 元素: 9   4   5 2 ---------第一轮--------- --- a0~a1 4   9   5 2 a1~a2 4   5   9 2 a2~a3 4   5   2 9(最大 值)     ----------第二轮--------- -- a0~a1 4   5   2 9 a1~a2 4   2   5 9 ---------第三轮--------- -- a0~a1 2 4   5 9 */ // 第 i=1 轮:使用 a[j]代表第一个 比较项,相邻 的一项 a[j+1] /*for(int j=0;j a[j+1]){ // 交换:借助第三遍历 int temp = a[j]; a[j] = a[j+1]; a[j+1] = temp; } } // 第i=2抡: for(int j=0;j a[j+1]){ // 交换:借助第三遍历 int temp = a[j]; a[j] = a[j+1]; a[j+1] = temp; } } // 第i=3抡 for(int j=0;j a[j+1]){ // 交换:借助第三遍历 int temp = a[j]; a[j] = a[j+1]; a[j+1] = temp; } }*/ // 外层循环控制比较的轮数 for(int i=1;i a[j+1]){ // 交换:借助第三遍 历 int temp = a[j]; a[j] = a[j+1]; a[j+1] = temp; } } for(int i=0;i} System.out.print(a[i]+"\t"); } (2) 第二种:借助工具类 java.util.Arrays.sort(数组名);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值