1. 梳理总结学习过的知识点
1.1 数据类型、表达式运算符
1.1.1数据类型主要可以分为两大类:
第一大类基本数据类型
分为三种类型
第一类数值型包含
一、整数类型
1.byte
8位、有符号的以二进制补码表示的整数。
范围(-128(-2^7),127(2^7-1))
默认值:0
包装类:Byte
2.short
16位、有符号的以二进制补码表示的整数。
范围(-32768(-2^15),32767(2^15-1))
默认值:0
包装类:Short
3.int
32位、有符号的以二进制补码表示的整数。
范围(-2,147,483,648(-2^31),2,147,483,647(2^31-1))
默认值:0
包装类:Integer
4.long
64位、有符号的以二进制补码表示的整数。
范围(-9,233,372,036,854,775,808(-2^63),9,223,372,036,854,775,807(2^63-1))
默认值:0
包装类:Long
二、浮点型
Java中浮点型数据无法由二进制直接表示,而是一种对于实数的近似数据表示法,它遵循IEEE 754标准。
5.float
单精度、32位、符合IEEE 754标准的浮点数。
float在储存大型浮点数组的时候可节省内存空间
浮点数不能用来表示精确的值,如货币
默认值:0.0f
包装类:Float
6.double
双精度、64位、IEEE 754标准的浮点数。
浮点数的默认类型为double类型
double类型同样不能表示精确值,如货币
默认值:0.0d
包装类:Double
第2类字符型
char
位数16位
范围(0,2^16-1)
默认值:null
第·3类布尔型
boolean
位数8位
默认值
false
范围ture、false
第二大类引用数据类型
class类
接口
数组
1.1.2表达式,运算符
常用运算符
运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。Java也提供了一套丰富的运算符来操纵变量,们可以把运算符分成以下几组:
算术运算符、关系运算符、位运算符、逻辑运算符、赋值运算符 和 其他运算符
Java中的语句有很多种形式,表达式就是其中一种形式。表达式由操作数与运算符所组成。
操作数可以是常量、变量,也可以是方法;运算符就是数学中的运算符号如“+”、“-”、“*”、“/”、“%”等。以下面的表达式(z+100)为例,“z”与“100”都是操作数,而“+”就是运算符。
表达式的计算结果必须是一个值,如果表达式是一个条件,就会产生逻辑值结果,即真或假。在其他情况下,值通常为计算的结果。
1.2 程序结构
1.2.1 while循环结构
while循环的语法如下:
while(布尔表达式){
循环体;
}
说明:
布尔表达式表示循环体执行的条件,当条件为true时执行循环体。
循环体既可以是一条简单的语句,也可以是复合语句。
while语句的执行过程是:计算布尔表达式的值,如果其值是true,执行循环体;再计算布尔表达式的值,如果其值是true,再执行循环体,形成循环,直到布尔表达式的值变为false,结束循环。
1.2.3. do-while循环结构
do-while循环的语法如下:
do{
循环体;
}while(布尔表达式);
说明:
布尔表达式表示循环执行的条件。
循环体既可以是一条语句,也可以是语句序列。
do-while语句执行的过程是:执行循环体,计算布尔表达式的值,如果其值为true,再执行循环体,形成循环,直到布尔表达式的值变为false,结束循环,执行do-while语句后的语句。
注意:
1. do-while语句执行时最少执行一次,因为先执行循环体,再判断表达式
2. while语句执行时最少执行零次,因为先判断表达式,再执行循环体
1.2.4. for循环结构
for循环的语法结构:
for(表达式1; 表达式2; 表达式3){
循环体;
}
说明:
表达式1的作用是给循环变量初始化。
表达式2的作用是给出循环条件。
表达式3的作用是改变循环变量的值。
循环体可以是一条或多条语句。
for循环的执行过程是:执行表达式1,计算表达式2,如果表达式2的值为true,执行循环体,执行表达式3,改变循环变量的值,再计算表达式2的值,如果是true,再进入循环体,形成循环,直到表达式2的值为false,结束循环,执行for后面的语句。
1. if结构
if(布尔表达式){
//如果布尔表达式的值为true
}else{
//如果布尔表达式的值为false
}
如果布尔表达式的值为 true,则执行 if 语句中的代码块,否则执行 if 语句块后面的代码。
2. if-else分支结构
if 语句后面可以跟 else 语句,当 if 语句的布尔表达式值为 false 时,else 语句块会被执行。
if(布尔表达式){
//如果布尔表达式的值为true
}else{
//如果布尔表达式的值为false
}
4. switch-case结构
switch(expression){
case value1 :
//语句1
break; //可选
case value2 :
//语句2
break; //可选
//你可以有任意数量的case语句
default : //可选
//语句3
}
//语句4
switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。
执行流程:
计算变量/表达式的数值 ⇒ 判断是否匹配字面值1;
⇒ 匹配,执行语句1,执行语句4
⇒ 不匹配,判断是否匹配字面值2
⇒ 匹配,执行语句2,执行语句4
⇒ 不匹配,执行语句3,执行语句4
1.3 数组应用
一、冒泡排序
冒泡排序算法原理:重复地遍历要排序的元素,依次比较相邻两个元素,如果前一个比后一个大,就把它们两个调换位置,直到没有元素再需要比较。这个算法的名字由来是因为越小(或越大)的元素会经由交换慢慢“浮”到数列的顶端。
二、 选择排序
选择排序原理:首先定义一个记录最小(大)元素的下标,将下标为i的元素依次与数组中其他所有元素进行比较,找到最小(大)的元素下标,然后将最小(大)元素与下标为i的元素互换位置。
每轮比较结束后都会将一个最小(大)的元素排好序,不需要在进行比较,因此外层循环控制每次要排序的元素下标,从0开始,到倒数第二个数结束,因为最后一位数已经不需要在进行比较了,他后边已经没有元素了;内层循环控制数组的遍历,即控制比较次数,从第二个数开始,到最后一个数结束。
三、插入排序
插入排序原理:将数组第一个元素视为已经排好的序列,将要插入的元素与前边已经排好的序列从后往前依次进行比较,当找到一个比他小的元素时,将要插入的序列放到该元素之后,其余元素向后移动,重复以上动作知道排序完成。
1.4类、方法
3.1 Java 类结构
一个Java文件只能有1个public class,其类名和文件名必须相同
注释的两种方法
双斜杠的单行注释
/*···*/的块注释
类时Java中的最基础逻辑单元
Java所有的内容都需要放在类中
内容不允许游离在类以外
Java项目是由一个个类组成的
类的构成
成员变量/属性
成员方法/函数
一、方法的定义
方法包含一个方法头和一个方法体。下面是一个方法的所有部分:
修饰符 返回值类型 方法名(参数类型 参数名){
...
方法体
...
return 返回值;
}
1
2
3
4
5
6
修饰符:修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。
返回值类型:方法可能会返回值。returnValueType是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值。在这种情况下return
ValueType 是关键字void。
方法名:是方法的实际名称。方法名和参数表共同构成方法签名。
参数类型:参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为实参或变量。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。
方法体:方法体包含具体的语句,定义该方法的功能。
二、方法的调用
含有static的方法(静态方法),完整的调用方法是:类名.方法名(实参) ;
不含static的方法(成员方法),必须先创建对象,然后:引用.方法名(实参);
在同一个类中调用时,可以省略 “类名.”;但当未声明 “类名.”时,默认从当前类中寻找方法,不能省略类名调用其他类中的方法。
三、方法的返回值
1.当该方法没有特殊声明返回值类型的时候,默认为void类型
2.方法的返回值类型不是void的时候:
要求方法必须保证百分之百的执行“return 值;”的语句来进行值的返回
一个方法有返回值的时候,当我们调用了这个方法,,方法返回了一个值,对于调用者来说,我们可以选择接收返回值 , 也可以选择不接收。但一般情况下的都是接收的。
2. PTA实践总结
选择不少于两个程序示例进行说明,需要发布源代码、测试用例。
谈一下在线刷题的个人感受。
2.1示例1sdut-循环-7-统计正数和负数的个数
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner sc= new Scanner(System.in);
int num;
int sum = 0;
double ave;
int x = 0;
int y = 0;
while(sc.hasNextInt()){
num=sc.nextInt();
sum+=num;
if(num==0){
break;
}else if(num>0){
x+=1;
}else if(num<0){
y+=1;
}
}
ave = (1.00*sum/(x+y));
System.out.println(x + "\n" + y + "\n" + sum);
System.out.printf("%.2f",ave);
}
}
说明:本题目主要考验while循环,其中sc.hasNextInt()代表循环输入整数。
测试用例
1 2 3 -1 -2 -3 0
结果3
3
0
0.00
2.2示例2 按正整数的相反数字顺序输出
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int a=sc.nextInt();
while(a!=0){
int b=a%10;
System.out.print(b);
a/=10;
}
}
}
说明:主要利用%余数首先输出个位数,/10后十位数变为个位数并循环达到目的
实验用例
5236
结果
6325
2.5在线评测系统使用感受
考的非常细致,有时候一个小问题可能要找好久。
3. 改进学习方法、措施落实情况(内容可扩展,至少包括以下项)
3.1 除课堂外,遇到不会的问题时会到哪个平台搜索
csdn
3.2 根据记录2个月的每天代码时长,利用excel绘制统计表
3.3 感觉个人的哪些方法还存在不足?哪些方面需要改进?
在类的方面运用不足,编程思想不够灵活容易进入死胡同。
...
4. 你知道csdn么,结合使用情况表述他的优点与不足
4.1 csdn给你的直观感受是什么?便利,多数问题可以找到答案
4.2 csdn你感觉最不舒服的地方是什么?有些文章要钱
4.3 你还利用了哪些平台学习编程知识,他们是哪些网站或资源,优点是什么?哔哩哔哩,视频资源丰富,有讲解,且灵活分散,基本免费
5. 你认为影响你学习编程的主要阻力是什么?如何克服!编程思想未形成,不够熟练和熟悉,多自我思考,多进行代码练习
6. 其它(针对课程的学习,请发挥)
学习计划:完成团队考核,继续深入学习java