补充:
补充:随机返回方法——>random
即,随机生成的double类型的数,在 [0,1)之间
补充:比较字符穿方法——>equals方法:字符串比较肯定不能用==用之无效但是字符可以,要用equal方法,
一一一java简介与开发环境
一,java运行环境与搭建
1.jdk与jre关系
2.下载安装jdk后环境配置
二,java的简介
1.编译与运行
2.Java的基础规则
(1)学习思路
(2)Java规则
规则6演示 :可多个其他class
其他class类中也可以写main方法(规则8):
当其他类有入口main,可以给其他有入口的类单独运行,即只用Java后加要运行的类名。
(3)Java的转义字符
(4)Java的注释与“+”的使用
(5)Java的代码书写规则
(6)DOS介绍
一一二 java变量及详解
一,变量
示例:
储存时即使是存储同一个字符,不同数据类型所占的空间不同
二,变量详解
1.整形数据
以上四个类型都是整数类型,根据不同的数据大小选择合适的数据类型存储数据,可以节约存储空间。
整数类型细节:
示例:
2.浮点数类型
浮点数详细细节:
实例:
注意:浮点数的使用陷阱
补:API
3.字符类型
字符类型细节:
实例:
字符本质:
4.布尔类型
实例:
布尔运用:
三、数据转换
1.自动转换
实例:
自动转换细节:
实例:
2.强制类型转换
强转细节
实例:
3.String(引用数据类型)与基本数据类型转换
常规,引用数据类型与(除char)基本数据类型转换
string变char类型
实例:
String转换细节:
实例:
作业总结
2答:
3答:
4答:
一一三 java各种运算符及其详解
1.运算符
1.1运算符的类型
2.各种运算符
2.1 ->算术运算符
算术运算符细节:
细节演示:
++面试题
自增例子:
算术运算应用练习:
2.2 ->关系运算符
关系运算符实例:
关系运算符使用细节:
2.3 ->逻辑运算符
逻辑运算符介绍:
短路与和逻辑与:
短路或和逻辑或:
取反和异或:
取反例子:
逻辑运算练习:
2.4 ->赋值运算符
赋值运算符细节:
2.5 ->三元运算符
三元运算符运用:
2.6-> 位运算符
(1)反码补码原码关系:
(2)位运算符介绍:
位运算符实例:
注意:左移不分正负的情况都在地位补0:当操作数的正负号改变时,表明错误。因为只是左移,即,只成2不会改变正负,当正负改变时说明错误。
注意:右移有正负号之分,给高位补的就是他们的正负号数。正补0,负补1。
无符号右移注意:也同样没正负情况之分,都在高位补0
三元运算符实例:注意(1)前++是先加一,赋值再进行下一步(2)后++是先背用一次再加一
三元运算符细节:
细节演示:
三元练习:
3. 运算符相关规则,规范
3.1 运算符优先级
3.2 运算符命名
规则,规范
规则实例:
补充:关键字,保留字
补充:键盘输入
键盘输入例子:
补充:进制与转换
进制例子:
进制转换:
其他进制转十进制:
十进制转其他进制:
二进制与八进制,十六进制:
本章作业
一一四 程序控制结构
控制分类
一.顺序控制:
即,正常按程序先后顺序走。
二.分支控制
2.1 if分支
1 if单分支:
2 if双分支
*此例子,记得前面导入Java.util.Scanner包双分支:
# if单双分支练习:
3 多分支
多分支注意:结果只有一个有一个成立就会跳过后面的分支判断,只执行此分支成立时的目的代码块
# if多双分支练习:
练习1:
练习2:
注意:“==”是比较,而“=为赋值”;
if多分支只有一个结果出口,一个符合后执行完他的目的块,其后面的分支将不会执行
4 if嵌套分支
# if嵌套分支练习:
练习1:
注意:字符的接受其实是字符串的接收,然后把字符串的第一个字符转换成字符类型------>zifuchuan.charAt(0)
2.2 switch分支
1 switch基本语法
switch语句注意:表达式是一个值但是这个值可以是用一个式子
表示
入门示例:
2 细节
细节一详解:表达式和case理应是匹配的关系,所以表达式代表的值必须和case的常量类型一样
细节二详解:switch中的表达式,常熟数据围绕着有限的几个数据类型才能运行
细节三详解:即,表达式是因,常量是果,因是变量,果是定数(常量)
细节四详解:
细节五详解:无跳出,会从符合的case运行到完
# switch随堂练习
练习1:
注意:字符接收 zifuchuan.next().charAt(0)
练习2:
这里注意这种字符函数的思想。
练习3:使用穿透
注意:switch中只有对 byte short int enum 可以用
2.3 分支if和switch的比较
三.循环控制
3.1 for循环
1 for基本语法
2 细节详解
细节2详解:细节2如果i在for里面定义的话,在for外面不可以使用i,因为i的作用域在for内,所以有时会把i写在for外
细节3详解:初始值与迭代句可不唯一
# for随堂练习:涵盖老师编程独家秘笈
练习1:
练习2:
3.2 while循环
1 while基本语法
2 while细节详解
# while随堂练习
练习1
注意:i应为多少
练习2
和练习一一样;只要把范围变下,把被除数改下。
3.3 do while循环
1 do while基本语法
# 2 do while细节以及练习
练习3
练习4:注意:字符串比较肯定不能用==用之无效但是字符可以,要用equal方法,这里不用break,用了和没用一样(还是跳出就近默认的if),应该用return直接结束
3.4 for,while,do while区别(流程图表示)
for
while
do while
3.5 多重循环
1 多重循环基本语法
2 多重循环讲解示例
# 多重循环练习
练习1,2
课后作业,自己写答案
四、break
4.1 基本语法及功能图示:即,符合某个条件后跳出“指定”(有指定标签的话跳出指定标签;没有的话跳出默认最近的代码块)代码。
4.2 快速入门示例
补充:随机返回方法——>random
即,随机生成的double类型的数,在 [0,1)之间
1 入门例子
4.3 break细节:主要是跳转到指定标签的具体分析
break默认跳转:跳出最近的代码块
break有标签跳转:跳出指定的代码块
# 课堂练习
练习1:for循环回顾,注意i的作用范围
练习2:
补充:比较字符穿方法——>equals方法
思路及其代码
五 continue
5.1 基本语法及功能图示
5.2 快速入门示例
5.3 continue细节:主要是跳转到指定标签的具体分析
continue默认跳转:在最近的代码块中跳过此次循环进行下次循环
continue有标签跳转:指定代码块中跳过此次循环进行下次循环
六 return
6.1 基本语法
本章作业666666
一一五 数组排序查找
目录
一 数组(引用类型)
1.1 数组基本语法:注意数组也是一种数据类型,引用数据类型。即,一个数组和它的组成元素不一样,因为其为数组类型,元素应为一些别的同类型元素,例如int,String等(就算如果元素也是数组,那麽此数组为多维数组类型。)
引出数组及介绍数组
数组的动态初始化 之 声明初始化一体:int a[] =new int[10] 等于 int[] a = new int[10]。
这样是声明初始化一起来。在哪里声明就确定了其作用域,所以要注意作用域。
数组的动态初始化 之 声明初始化分开
先声明再动态初始化,因为涉及到变量的作用范围问题
两种动态分配例子
静态初始化:
两种都可以
1.2 数组的细节
# 数组练习:注意数组也是一个数据类型,所以数组的数据类型与其包含的某个变量类型不一样。注意数据类型转换,char类型加int结果是int类型所以要强转。
1.3 数组的赋值机制与普通的赋值
1.4 数组的常用功能
1 数组的拷贝(与数组的赋值不同拷贝代表有着各自的独立的储存空间而不是两个都是同一个地址存储)
![在这里插入图片描述](https://img-blog.csdnimg.cn/f53ff55cf3104307a9e0496ab992fd6a.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5byA5b-D5ZCR5YmN,size_20,color_FFFFFF,t_70,g_se,x_16
数组拷贝代码
2 数组的反转:有两种方法一种利用前后互换;一种用新的数组来反向承接再把旧的那个数组指向新的数组,旧数组会因为没有指针指向它而被系统除去。
方法一:
方法二:新数组的反转与回收
3 数组的添加(扩容):即,创建新的更大容量数组并承接旧数组的值再回收回收旧数组。
数组添加:
扩容思想以及代码:
# 练习:数组缩减(与数组的扩容一样)
二 排序
2.1 排序介绍
2.2 冒泡排序及其思想
2.3 冒泡代码实现
三 查找
3.1 查找介绍
3.2 查找代码
四 二维数组
4.1 引出二维数组及其基本语法(二维数组是引用类型)
引出:
初始化图示:
二维数组图示
1 声名赋值一体化的动态初始化 注意:这个每个一元数组元素都是一样的元素类型与数量
2 声明赋值分开的动态初始化 注意:这个每个一元数组元素也都是一样的元素类型与数量
3 动态初始化666 注意这个每个一元数组元素都是不一样的元素类型与数量——即,列数不确定
注意System.out.print()不换行,如果用 System.out.println()就会每输出一次就换行
4 静态初始化 注意:每个元素都应该带{}因为每个子元素都是一维数组类型,如果不加{}他的子元素就不是数组类型是其他的数据类型从而报错
# 二维数组遍历
# 二维数组杨辉三角练习
4.2 二维数组细节
1 韩老师细节解读
2 细节
4.3 # 二维数组与一维数组的关系的练习
本章作业 666
一一六 面向对象(初)
错过:
1 方法调用的错误:错在“{}”弄错,test公共类和aa类混用“{}”
改:
目录
一 类与对象
1.1 引出对象
如果用以前的技术来实现的话
实例化来解决上面的问题
2.2 类与对象介绍
1 类与对象的关系示意图
2 类与对象的区别:即,类是模板,对象是模板的具体化
3 对象的内存图示
注意String,(对象,数组)都是引用类型所以当对象通过地址到栈后,有String类型的话栈中会存他在方法区中的常量池的地址,常量池里的是存的才是真数据。如果对象中是其他基本类型那麽直接在栈对其数据存储,而且在存储过程中会给把对象的属性和方法都存在方法区(如果属性方法不变以后就不用再存了)
4 对象的分配机制
5 对象的创建过程(注意:栈,堆,方法区存放什么)
2.3 成员变量(属性和就是成员变量)
1 属性和就是成员变量
属性示例:
2 属性的注意事项
2.4 如何创建对象与访问对象的属性
1 如何创建对象
2 访问对象的属性
二 成员方法
2.1 成员方法的基本介绍
# 成员方法快速入门练习 注意:有返回值的方法应该有一个同类型或者可以使返回值自传的类型或者强转类型,来接收返回值。;而void的类型的方法不用接引直接接受就可。
练习1(方法的调用注意:同一类中调用方法可以直接用方法名调用“方法名”,不同的类中要调用方法的话要先创建对象的实例化,即先new再才可以“实例名.方法名”调用)
练:调用无返回类型方法输出文字
练习2,3
练习4
2.2 方法的调用机制
2.3 引出方法
1 使用方法的好处
数组遍历方法示例:
2.4 方法的细节
1 方法的返回类型方面细节
细节一:一个方法只会有一个返回值,如果想返回多个值可以用数组返回(把想返回的值放数组中)
细节二:(返回类型可任意),三(有返回类型的方法):返回类型的接应值(返回的值可以是一个式子回顾switch那个的‘值’)可自传为接应值类型或者两个同类型或者强转为同一类型
细节四:在方法为void的类型时如果写return就只能写“return;”此时它可以理解为结束不可返回东西
2 方法的形参的细节,与方法体的细节:方法体内无方法
细节2-可自传为接应值类型或者两个同类型或者强转为同类型
# 方法的随堂练习
练习1
练:传参给无返回类型方法判断奇偶
练习2
2.5 方法的传参机制细节(重点)
细节一:基本数据类型的传参机制,即,值传递时是传参数给形参的在别的方法中运用所属的局部变量的范围不一样所以值传递的话互不影响。
例子:
细节二:引用类型{其实传参传送的变量过去后就已经和调用该方法的类无关了只不过因为引用类是地址传递即,传过去的是本类中的对象的地址所以被调用的类中方法的直接改变会影响,但是一旦更改了对象的地址和原来的主类中的方法没有丝毫的关系了}(对象,数组,字符串等)传参的是地址所以本身形参和实参相传递的就是同一个数据的地址所以值会相互影响
引用类型传参类型1 用数组当例子,即,直接传参数组不修改作为传递变量的数组使子函数直接使用:(附有传参图)引用类型传参(对象也是引用类型的),所以方法传给形参的是也是地址所以本质就是同一个。
引用传参图:
引用类型传参类型2(引用类型传递过去后滞空)
看“测试题”
答,即,滞空的是形参而已对主方法中的对象无影响的还是原来的 {其实传参传送的变量过去后就已经和调用该方法的类无关了只不过因为引用类是地址传递即,传过去的是本类中的对象的地址所以被调用的类中方法的直接改变会影响,但是一旦更改了对象的地址和原来的主类中的方法没有丝毫的关系了}
引用类型传参类型3(引用类型传递过去后重new给形参) ——————答:对象测试2过程是:开始确实传递过去是实参形参同地址,但是形参随后new后重新在堆中创建个新的不同地址的。所以此时开始两者就毫无关系。之后在次调用方法类中改变的是它自己指向的那个,并不影响实参中的。当执行完子方法后因为在主方法中调用p所以盗用的是主函数的p即,没有改变的10
内存图示:
# 传参练习:
1 子方法一个二位数遍历的方法
2 克隆
克隆图示:
补:递归
递归的定义(补,递归调用定义,注意其实递归应该是一个if,else的一个判断当是出口时return出口值,当不是出口值时就应该是递归的那个规则,即与上一层调用的关系公式)
递归可以解决的问题:
方法的递归调用规则:
递归举例:
阶乘练习: