上次补充
while循环语句补充
1.do-while的格式和执行流程
do-whlie循环语句格式:
初始化语句;
do{
循环体语句;
控制体语句;
}while(条件表达式);
执行流程:
1)初始化语句赋值
2)执行循环体语句
3)执行控制体语句
4)条件表达式判断.如果条件成立,继续判定循环体....
条件表达式不成立,语句立即结束
新的方法
1.java.lang.Math方法
/*
产生一个随机数---->使用jdk--->java.lang.Math:数学运算的工具类
产生随机数的功能
Math类:public static double random() :功能就是获取随机数的功能 (目前先用这个功能)
要产生随机数:Math.random()---->获取的结果double [0.0,1.0) ,取不到1.0
*/
class MathDemo{
public static void main(String[] args){
//System.out.println(Math.random()) ;
//要产生1-100之间的随机数
int num = (int)(Math.random()*100+1) ;
System.out.println(num) ;
}
}
第三周总结
1.数组
概念:
只能够储存同类型的容器,在同一种数组中,元素的数据类型必须一样.
格式:
数据格式[] 数据名称;
数据格式 数据名称{};
数据类型:学习的基本数据类型;
数组的初始化:
1)动态初始化:
我们给定数组的长度,元素有系统(Jvm)默认初始化
数据类型[] 数组名称 = new 数据类型[长度];
数据类型 数组名称 [] = new 数据类型[长度];
常用的是第一种数据类型;
创建一个数组对象
int [] arr = new int [3];
int arr [] = new int [3];
2)静态初始化:
数据类型[] 数组名称 = new int[]{元素1,元素2,元素3...};
数据类型 数组名称[]= new int[]{元素1,元素2,元素3...};
简化格式:书写代码
int [] arr = new int []{1,2,3,4,5...};
int arr[] = new int []{1,2,3,4,5...}
注意事项:
数组的初始化:要么动态出初始/要要么静态初始化,不能"动静结合"
错误示例:
int [] arr =new int [3]{1,2,3};
面线对象
1.什么是面线对象
詹姆斯高斯林Java之父 ("万物皆对象")
本质是基于面向过程完成的;
面向过程的代表语言:C语言
完成某一件事情,从分析,到实现,都是自己亲力亲为完成的!
举例:
需求:获取数组中的最大值
分析:
1)有一个数组
2)定义参照物
3)遍历其他数组
3.1)获取到每一个元素,依次和参照物进行比较
如果后面的元素比参照物大
后面元素就是最大值
4)输出结果;
面向对象的代表语言:Java,c++,python...
面向对象跟面向过程:
生活中处处皆对象
举例:
做饭:
面向过程;
去菜市场---->看一看--->讨价还价--->摘菜----->洗菜---->切菜--->加油---->炒菜---放调料---->出锅
面向对象:
找一个对象---->等待出锅
面向对象的思想特点:
1)更符合我们生活中思想行为习惯
2)让更复杂的事情简单化
3)角色发生了变化:我们从执行者变成了指挥者!
什么是面向对象:
阐述下面向对象思想特点 + 结合我们中生活中的例子!
2.Java语言:面向对象语言---->它的设计原则
在程序中(符合生活中的场景),不断的创建对象,使用对象,指挥对象做事情(完成功能...)
举例:
1)创建键盘录入对象:Scanner
2)录入int类型/String类型数据
3.Java语言面向对象的三大特征
封装,继承,多态!
4.伪代码对比:面向过程/面向对象 ("将大象装进冰箱" 赵本山---)
将大象装进冰箱
伪代码:
面向过程
1)测试类 main方法所在类
2)分析:将大象装进冰箱
定义三个方法:
打开冰箱的方法
将大象装进去的方法
关闭冰箱的方法
3)分别在main方法进行调用
class Demo{
public static void main(String[] args){
//调用打开冰箱门的方法
open() ;
//将大象装进去
in() ;
//关闭冰箱门
close() ;
}
//定义一个打开冰箱门的方法
public static void open(){
//使用输出语句,代替整个功能
System.out.println("打开冰箱门...") ;
}
//定义一个将大象装进去的方法
public static void in(){
//...
System.out.println("将大象装进冰箱...") ;
}
//定义一个关闭冰箱门的方法
public static void close(){
//...
System.out.println("关闭冰箱门...") ;
}
}
//面向对象:"将大象装进冰箱"
//Java中最基本的单元类:
//分析: 有哪些名词 --- UML(名词提前法)----类
//分析:类中有哪些功能
//Demo类:测试类
//大象类 ---> "进去的功能"
//冰箱类 ---> "打开冰箱","关闭冰箱"
class Demo{//测试类
public static void main(String[] args){
//如果能够创建出冰箱类对象
冰箱类对象.open() ;
//如果创建出大象类对象
大象类对象.in() ;
冰箱类对象.close() ;
}
}
//冰箱类
class 冰箱类{
//定义一个打开冰箱门的方法
public static void open(){
//使用输出语句,代替整个功能
System.out.println("打开冰箱门...") ;
}
//定义一个关闭冰箱门的方法
public static void close(){
//...
System.out.println("关闭冰箱门...") ;
}
}
//大象类
class 大象类{
//定义一个大象进去的方法
public static void in(){
//...
System.out.println("大象进去...") ;
}
}
类与对象的关系
1.类
概念:能够描述一组事物的属性和行为的集合---->类
类------>能够描述现实世界真实存在的 "事物"
学生事物
属性:性别,年龄,姓名,学号,身高,班级,体重... 能够描述一个学生具体特点
行为: 主要的行为:学习, 吃,睡,玩.. 能够描述学生干什么
长方形事物
属性:长和宽
行为:计算它的周长/面积....
汽车事物
属性:品牌,价格,车身颜色,100m速度,非承载式/承载式...
行为:旅游,拉货.....
现在使用Java代码的方式 描述现实世界存在的事物
Java中最基本的单元:类 -----> 事物
成员变量-------> 描述事物的属性
成员方法(非静态的)-------> 描述事物的行为
成员变量: 在类中,方法外;
成员方法: 之前怎么定义方法,现在还怎么写,不过,去掉static关键字
public 返回这里类型 方法名(形式参数列表){
业务体
//有具体结果1)return 结果 ;
//没有具体结果:输出 打印...
}
定义:
两个明确
1)明确返回值 :有-->给具体类型 ,没有:void 代替 输出结果
2)明确参数类型,以及参数个数
具体情况,具体分析
2.类与对象的关系
类----描述真实事物的
学生事物
属性:
姓名
年龄
住址
..
行为:
学习JavaSE
学生类
class Student{
//成员变量 ---事物属性
String name ;//姓名
int age ;//年龄
String address;//住址
//...
//成员方法----事物的行为
public void study(String name){
System.out.println("正在学习"+name) ;
}
}
什么是对象?
体现出 "具体的事物" 因为类---描述事物----概括的事物("总称")
具体的学生:高圆圆,42,鄠邑区
在测试类中使用:main方法所在类
代码体现:
格式:
类名 对象名 = new 类名() ;
给具体事物属性赋值
对象名.成员变量 = 根据类型赋值;
调用具体事物的行为
对象名.成员方法名() ;
面向对象入门(2)
1.局部变量
1)在类的书写位置:在方法定义中或者是在方法声明上/
2)在内存中的位置:在栈内存中.
3)生命周期:随着方法的调用而存在,随着方法调用结束而消失.
4)初始化时机:要么先定义,使用钱必须初始化;要么直接初始化.
2.成员变量
1)在类的书写位置:在类中,方法外
2)在内存中的位置:在堆内存中
3)生命周期:随着对象的创建而存在,随着对象的调用完毕,等待垃圾回收器空闲时候回收,不会立即消失..
4)初始化时机:可以不赋值,系统默认对成员变量初始化 也可以通过对象名.成员变量 =赋值.
3.静态变量
1.所属范围不同。静态变量是属于类范围的
2. 存活时间不同。类的一生有着静态变量的伴随
3. 存储位置不同。静态变量时存储在方法区里的静态区
4. 调用方式不同。静态变量可以通过类名调用,也可以通过对象来调用
4.匿名对象
格式匿名对象的格式:
new 类名() ;
好处:
1)节省内存空间
2)开发中,匿名对象一般 使用"一次即可",使用完毕就立即垃圾回收器回收!
3)手机移动端/Android/鸿蒙系统:基于Java语言
ios系统:基于c语言
4).可以用作参数
访问类的成员变量:
new 类名().成员变量名;
访问类的成员方法:没有具体返回值类型
new 类名().成员方法名() ;
封装
1.特点
private:私有的,不能直接访问的;
特点:
被private修饰的成员变量或者是成员方法,只能在本类中访问;
外界类是不能直接访问的,间接可以通过公共的成员方法访问!
权限修饰符:
private :最小
public: 最大
this关键字
定义
定义:代表当前类对象的地址值引用.
构造方法
构造方法是一种特殊的方法,方法名和类名一致
特点:
1):方法名和类名一致
2):构造方法没有返回值类型
3)连void都没有
构造方法是重载的!
方法重载:
法名相同,参数列表不同,与返回值无关!
参数列表不同:
参数个数
参数类型
考虑类型先后属性
无参类型
没有参数,系统自己提供.
有参类型
有具体的参数类型.
一般java中报错的代码问题:
1.数组角标越界异常
ArrayIndexOutOfBoundsException
2.空指针异常
NullPointerException
3.出现问题的做法
1)编译时期异常:jvm检查语法不通过; 语法格式存在问题
举例:
同一个变量被定义多次
数组格式写错
...
2)运行时期异常:开发者:代码书写不严谨导致的问题
键盘录入:代码书写---->录入int类型
int num = 键盘录入对象.nextInt() ;
java.lang.ArrayIndexOutOfBoundsException:数组角标越界异常
出现的原因:访问了数组中不存在的角标(索引值)
如何解决:检查代码,更改索引值
java.lang.NullPointerException:空指针异常
引用类型的默认值都是null;
String s = null ; 字符串是一种特殊的引用类型
出现的原因:某一个对象已经为空了,null(没有堆内存地址),这个时候还要去访问元素或者调用
这个对象的方法,那么就出现空指针;
如何解决:
使用逻辑判断语句,对该对象进行非空判断