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 值;”的语句来进行值的返回
一个方法有返回值的时候,当我们调用了这个方法,,方法返回了一个值,对于调用者来说,我们可以选择接收返回值 , 也可以选择不接收。但一般情况下的都是接收的。
. PTA实践总结
选择不少于两个程序示例进行说明,需要发布源代码、测试用例。
谈一下在线刷题的个人感受。
2.1示例1
import java.util.Scanner;
public class Main{
public static void main(String[]args){
Scanner in=new Scanner(System.in);
int n,k;
k=1;
n=in.nextInt();
if(n==0){
System.out.println("32");
}else if(n<0){
System.out.println("0");
}else if(n>0){
while(n/2!=0){
n/=2;
k++;
}System.out.println(32-k);
}
}
}
一个整数,表达输入被表达为一个32位的二进制数时,在第一个1之前的0的数量。
总结:看似很难的题目,实际上很简洁的代码就可以解决,看到题目不要怕,好好想想,其实没有那么恐怖。
2.2示例2
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int N=sc.nextInt();
String str=sc.nextLine();
while(str.length()<N){
String strn=sc.nextLine();
str = str+'\n'+strn;
}int letters=0,blanks=0,digits=0,others=0;
for(int i=0;i<N;i++){
int x=str.charAt(i+1);
if(x>='a'&&x<='z'||x>='A'&&x<='Z'){
letters++;}
else if(x>='0'&&x<='9'){
digits++;}
else if(x==' '){
blanks++;}
else{
others++;}
}System.out.println("letters="+letters);
System.out.println("blanks="+blanks);
System.out.println("digits="+digits);
System.out.println("others="+others);
sc.close();
}
}
首先给出所输入字符的个数N,然后给出N个字符,统计其中英文字母、空格、数字字符和其他字符的个数。
总结:数组的应用,其实不用太过惧怕,只是因为是新学的内容导致做起来有点慢,其实好好认真做也没有那么难。
...
2.5在线评测系统使用感受
3. 改进学习方法、措施落实情况(内容可扩展,至少包括以下项)
3.1 除课堂外,遇到不会的问题时会到哪个平台搜索
答:主要是CSDN,因为就算去百度查查到的网页也是CSDN的网页。
3.2 根据记录2个月的每天代码时长,利用excel绘制统计表
答:excel表格不会弄,代码时长每天最少一个小时
一般情况下都在忙实验报告和PTA作业,经常情况下就是一天写一题
作业都做完的情况下就会在B站看一看课,反正不会少过一小时
3.3 感觉个人的哪些方法还存在不足?哪些方面需要改进?等
答:学习的知识与运用之间的联系还不够好,经常是上课听讲时觉得自己懂了,
实际上真到做PTA和实验报告的题目时发现自己还是毫无头绪。可以多上B站寻找知识点
更好的解释角度,加深印象,结合题目理解知识点。
4. 你知道csdn么,结合使用情况表述他的优点与不足
答:没有CSDN的话这个java我是学不下去了,我必须知道
优点:题库很广,只要是有的题目基本都能找到,而且不仅限于题目,还有很多知识点的总结
其实就是有很多大佬,一搜发现很多解题的思路,立刻就豁然开朗了。
缺点:一定程度上有点良莠不齐,有一些找到的解题方法有问题,要好好看才发现,不能保证
别人的代码就一定是对的。
4.1 csdn给你的直观感受是什么?
答:大佬很多,学习java的好工具,哪里不会搜哪里
4.2 csdn你感觉最不舒服的地方是什么?
答:不只有java,还有C++和python,所以搜起来有一点麻烦其实无伤大雅。
4.3 你还利用了哪些平台学习编程知识,他们是哪些网站或资源,优点是什么?
答:B站,学习没听懂或者忘了的知识点,优点是给了我一次再来的机会。
5. 你认为影响你学习编程的主要阻力是什么?如何克服!
答:阻力:题目基本没有限制,能在很多方面来考,而且方法也很多,多样性强
而且一题的话基本要做上一个小时,难的题目还没算
就造成了本人学上去的时候没啥激情和动力,学习效果就不咋滴。
克服:慢慢摸索属于
6. 其它(针对课程的学习,请发挥
答:感觉老师讲的挺好的,题目也很好,只是自己不争气罢了哈哈哈
下学期会更加努力学的,当然这个寒假也会,开学考试加油考过!