Day04
1:switch语句(掌握)
(1)格式:
switch(表达式) { case 值1: 语句体1; break; case 值2: 语句体2; break; ...
default:
} 语句体n+1; break; 格式解释说明: switch:说明这是switch语句。 表达式:可以是byte,short,int,char JDK5以后可以是枚举 JDK7以后可以是字符串 case:后面的值就是要和表达式进行比较的值 break:表示程序到这里中断,跳出switch语句 default:如果所有的情况都不匹配,就执行这里,相当于if语句中的else (2)面试题 switch语句的表达式可以是byte吗?可以是long吗?可以是String吗? 可以,不可以,JDK7以后可以 (3)执行流程: A:首先计算表达式的值 B:和每一个case进行匹配,如果有就执行对应的语句体,看到break就结束。 C:如果没有匹配,就执行default的语句体n+1。 (4)注意事项: A:case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的 B:default可以省略吗? 可以省略,但是不建议,因为它的作用是对不正确的情况给出提示。 特殊情况: case就可以把值固定。 A,B,C,D C:break可以省略吗? 可以省略,但是结果可能不是我们想要的。 会出现一个现象:case穿透。 最终我们建议不要省略 D:default一定要在最后吗? 不是,可以在任意位置。但是建议在最后。
E:switch语句的结束条件 a:遇到break就结束了 b:执行到末尾就结束了 (5)案例: A:键盘录入一个数字(1-7),输出对应的星期几。 B:单项选择题 C:键盘录入一个字符串的问题 String s = sc.nextLine(); D:根据给定的月份,输出对应的季节 (6)if语句和switch语句各自的场景 A:if 针对boolean类型的判断 针对一个范围的判断 针对几个常量的判断 B:switch 针对几个常量的判断
2:循环语句(掌握)
(1)有三种:for,while,do...while
(2)for循环语句
A:格式
for(初始化语句;判断条件语句;控制条件语句){ 循环体语句;
}
执行流程: a:执行初始化语句 b:执行判断条件语句 如果这里是true,就继续 如果这里是false,循环就结束 c:执行循环体语句 d:执行控制条件语句 e:回到b B:注意事项 a:判断条件语句无论简单还是复杂,结果是boolean类型 b:循环体语句如果是一条,可以省略大括号,但是不建议 c:有分号就没有左大括号,有左大括号就没有分号 C:案例 a:输出10次HelloWorld b:输出1-10的数据 c:输出10-1的数据 d:求1-10的和 e:求1-100的和,求1-100的偶数和,求1-100的奇数和 f:求5的阶乘
g:在控制台打印水仙花数 h:统计水仙花个数 i:改进版的回文数 一个五位数 个位 = 万位 十位 = 千位 个位 + 十位 + 千位 + 万位 = 百位 j:统计1-1000之间同时满足如下条件的数据有多少个 x%3==2 x%5==3 x%7==2 (3)while循环 A:基本格式 while(判断条件语句) { 循环体语句; } 扩展格式: 初始化语句; while(判断条件语句){ 循环体语句; 控制条件语句; } 通过查看这个格式,我们就知道while循环可以和for循环等价转换。 B:while的练习 把for语句的练习用while改进 C:for和while的区别 a:使用上的区别 for语句的那个控制条件变量,在循环结束后不能在使用了。 而while的可以继续使用。 b:理解上的区别 for适合于一个范围的判断 while适合次数不明确的 举例:吃葡萄 D:案例: a:珠穆朗玛峰问题 b:小芳存钱问题(break以后才能做) (4)do...while循环 A:基本格式 do { 循环体语句; }while(判断条件语句);
扩展格式:
初始化语句;
do {
循环体语句;
控制条件语句;
}while(判断条件语句);
通过查看格式,我们就可以看出其实三种循环的格式可以是统一的。 B:三种循环的区别
a:do...while循环至少执行一次循环体
b:for和while必须先判断条件是否是true,然后后才能决定是否执行循环体
(5)循环使用的注意事项(死循环)
A:一定要注意修改控制条件,否则容易出现死循环。
B:最简单的死循环格式
a:while(true){...}
b:for(;;){}
3:控制跳转语句(掌握)
(1)break:中断的意思
A:用在循环和switch语句中,离开此应用场景无意义。
B:作用
a:跳出单层循环
b:跳出多层循环,需要标签语句的配合
(2)continue:继续
A:用在循环中,离开此应用场景无意义。
B:作用
a:跳出单层循环的一次,可以继续下一次
C:填空题
for(int x=1; x<=10; x++) {
if(x%3 == 0) {
//补齐代码
}
System.out.println("Java基础班");
}
如何让控制台输出2次:Java基础班 如何让控制台输出7次:Java基础班 如何让控制台输出13次:Java基础班 (3)return:返回 A:用于结束方法的,后面还会在继续讲解和使用。 B:一旦遇到return,程序就不会在继续往后执行。
Day05
1:方法(掌握)
(1)方法:就是完成特定功能的代码块。
注意:在很多语言里面有函数的定义,而在Java中,函数被称为方法。
(2)格式:
修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2...) { 方法体语句;
return 返回值;
}
修饰符:目前就用 public static。后面再详细讲解其他修饰符
返回值类型:就是功能结果的数据类型
方法名:就是起了一个名字,方便我们调用该方法。
参数类型:就是参数的数据类型
参数名:就是变量
参数分类:
实参:实际参与运算的数据
形参:方法上定义的,用于接收实际参数的变量
方法体语句:就是完成功能的代码块
return:结束方法
返回值:就是功能的结果,由return带给调用者。
(3)两个明确:
返回值类型:结果的数据类型
参数列表:参数的个数及对应的数据类型
(4)方法调用
A:有明确返回值的方法
a:单独调用,没有意义
b:输出调用,不是很好,因为我可能需要不结果进行进一步的操作。但是讲课一般我就用了。
c:赋值调用,推荐方案
B:void类型修饰的方法
a:单独调用
(5)案例:
A:求和方案
B:获取两个数中的较大值
C:比较两个数据是否相同
D:获取三个数中的最大值
E:输出m行n列的星形
F:输出nn乘法表
(6)方法的注意事项
A:方法不调用不执行
B:方法之间是平级关系,不能嵌套定义
C:方法定义的时候,参数是用,隔开的
D:方法在调用的时候,不用在传递数据类型 E:如果方法有明确的返回值类型,就必须有return语句返回。 (7)方法重载 在同一个类中,方法名相同,参数列表不同。与返回值无关。
参数列表不同:
参数的个数不同。
参数的对应的数据类型不同。
(8)方法重载案例
不同的类型的多个同名方法的比较。
2:数组(掌握)
(1)数组:存储同一种数据类型的多个元素的容器。
(2)特点:每一个元素都有编号,从0开始,最大编号是长度-1。 编号的专业叫法:索引
(3)定义格式
A:数据类型[] 数组名;
B:数据类型 数组名[];
推荐是用A方式,B方法就忘了吧。
但是要能看懂
(4)数组的初始化
A:动态初始化
只给长度,系统给出默认值
举例:int[] arr = new int[3]; B:静态初始化 给出值,系统决定长度 举例:int[] arr = new int[]{1,2,3}; 简化版:int[] arr = {1,2,3}; (5)Java的内存分配 A:栈 存储局部变量 B:堆 存储所有new出来的 C:方法区(面向对象部分详细讲解) D:本地方法区(系统相关) E:寄存器(CPU使用) 注意: a:局部变量 在方法定义中或者方法声明上定义的变量。 b:栈内存和堆内存的区别 栈:数据使用完毕,就消失。 堆:每一个new出来的东西都有地址 每一个变量都有默认值
byte,short,int,long 0 float,double 0.0 char '\u0000' boolean false 引用类型 null 数据使用完毕后,在垃圾回收器空闲的时候回收。 (6)数组内存图 A:一个数组 B:二个数组 C:三个数组(两个栈变量指向同一个堆内存) (7)数组的常见操作 A:遍历 方式1: public static void printArray(int[] arr) { for(int x=0; x<arr.length; x++) { System.out.println(arr[x]); } } 方式2: public static void printArray(int[] arr) { System.out.print("["); for(int x=0; x<arr.length; x++) { if(x == arr.length-1) { System.out.println(arr[x]+"]"); }else { System.out.println(arr[x]+", "); } } } B:最值 最大值: public static int getMax(int[] arr) { int max = arr[0]; for(int x=1; x<arr.length; x++) { if(arr[x] > max) { max = arr[x]; } } return max; }
最小值: public static int getMin(int[] arr) { int min = arr[0]; for(int x=1; x<arr.length; x++) { if(arr[x] < min) { min = arr[x]; } } return min; } C:逆序 方式1: public static void reverse(int[] arr) { for(int x=0; x<arr.length/2; x++) { int temp = arr[x]; arr[x] = arr[arr.length-1-x]; arr[arr.length-1-x] = temp; } } 方式2: public static void reverse(int[] arr) { for(int start=0,end=arr.length-1; start<=end; start++,end--) { int temp = arr[start]; arr[start] = arr[end]; arr[end] = temp; } } D:查表 public static String getString(String[] strArray,int index) { return strArray[index]; } E:基本查找 方式1: public static int getIndex(int[] arr,int value) { for(int x=0; x<arr.length; x++) { if(arr[x] == value) { return x; } } return -1;
} 方式2: public static int getIndex(int[] arr,int value) { int index = -1; for(int x=0; x<arr.length; x++) { if(arr[x] == value) { index = x; break; } } return index; }
Java语言程序设计课程知识点总结
by wgc
1、构造方法
无返回值,和类名相同 new调用
2、方法的重载
(1同3不同)方法名称相同 参数个数 类型 顺序不同 与返回值类型无关 构造方法重载
普通方法重载
3、变量的作用域
成员变量
局部变量
局部变量隐藏成员变量 this
4、this关键字
得到当前对象的成员变量,代表当前对象
5、对象作为方法的参数
对象 传引用
基本类型 传值
6、 包
pakage
import
7、访问控制修饰符
类
public 缺省的
属性和方法
private
缺省的
protected
public
8、static
类成员变量(静态成员变量)
实例成员变量
类方法(静态方法)
类成员变量在类加载时初始化(分配内存空间)
实例方法可以调用任何成员变量和方法
类方法只能调用类变量和类方法
9、继承
定义 extends
属性和方法的继承
public 不同包能继承
protected 不同包能继承(访问不一样,必须在子类中才能访问)
友好的 同一包中能继承
private 不能被继承
总结:
(1)、当父子类定义在同一个包中时,父类的所有非私有属性和方法可以被子类
继承
(2)、当父子类定义在不同包中时(父类被public修饰),父类的被public和
protected 修饰的属性和方法可以被子类继承。
10、属性的隐藏
子类与父类成员变量名字相同时,子类成员变量隐藏了父类的成员变量 注意:
在子类中调用从父类继承的方法时,和子类的成员变量没关系。
11、方法的覆盖
子类与父类方法名字相同、参数类型、个数、顺序都相同时,子类方法覆盖
父类的方法。
12、继承关系中的构造方法
子类实例化时,会首先调用父类(或父类的父类)的构造方法,然后在调用自己
的构造方法。
13、super关键字
调用父类构造方法
默认无参super();
有参 super(a);
注:super关键字必须为子类构造方法的第一条语句。
调用父类被覆盖的普通方法,或被隐藏的成员变量
super.show();
super.a;
14、上转型对象(父、子类对象的使用与转化)
子类实例赋给父类的引用
上转型对象与父类对象唯一的区别为上转型对象调用子类覆盖(重写)的方法。 多态
15、abstract
抽象类与抽象方法
抽象类中可以有抽象方法和普通方法
抽象方法必须定义在抽象类中
抽象方法只有定义,没有实现。
通过继承抽象类的子类对象来调用抽象类中的方法
一个非抽象类继承抽象类,必须覆盖(重写)抽象类中的抽象方法。
16、final
修饰类
修饰成员变量
修饰局部变更
修饰方法
17、接口
interface
implements
接口中成员变量都是公共的、静态的常量 public static final int MIN=0; 接口中的方法都是公共的、抽象的 public abstract void method(); 接口之间可以多继承 // interface B extends A,Computable 类实现(implemnets)某个接口,必须实现里边所有方法
接口回调
把实现某个接口的类的对象赋给此接口的变量,称为接口回调 用法与对象的上转型对象相同。
18、abstract类与接口的比较
abstract类和接口都可以有abstract方法。
接口中只可以有常量,不能有变量;而abstract类中既可以有常量也可以有变量。 abstract类中也可以有非abstract方法,接口不可以。
意义区别:
抽象类表示事物之间纵向的联系。 如:车、汽车、公共汽车
接口表示事物之间横向的联系。 如:鸟、飞机、超人 (都能飞)
19、内部类
内容预览顺序流程分支流程循环流程顺序流程以前的程序都是顺序流程,这里略过。分支流程1.if语句a)格式:if(布尔表达式){语句内…
JAVA知识点总结一1Java中一个char类型可以存放一个汉字吗?为什么?可以。因为JVM的最小单位是两个字节,而java中以u…
Java程序设计基础知识点总结1类首字母大写如果一个类名由多个单词构成那么每个单词的首字母都大写中间不使用任何的连接符比如Pers…
Java基础知识总结写代码1明确需求我要做什么2分析思路我要怎么做1233确定步骤每一个思路部分用到哪些语句方法和对象4代码实现用…
Java基础知识总结写代码1明确需求我要做什么2分析思路我要怎么做1233确定步骤每一个思路部分用到哪些语句方法和对象4代码实现用…
知识点总结1Java的三大平台JavaSEJ2SEJavaEEJavaME2Java如何配置环境变量安装gt右键我的电脑gt高级g…
Java程序设计基础知识点总结1类首字母大写如果一个类名由多个单词构成那么每个单词的首字母都大写中间不使用任何的连接符比如Pers…
Java基础知识总结写代码1明确需求我要做什么2分析思路我要怎么做1233确定步骤每一个思路部分用到哪些语句方法和对象4代码实现用…
java知识点总结应同学要求特意写了一个知识点总结因比较匆忙可能归纳不是很准确重点是面向对象的部分12345678java有三个版…
内容预览注释包jar命令标识符变量与字面值局部变量表达式与运算符String字符串初探Java的注释说明性质的文字增强程序的可读性…
JAVA知识点总结一1Java中一个char类型可以存放一个汉字吗?为什么?可以。因为JVM的最小单位是两个字节,而java中以u…