《程序设计基础》学习总结

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. 其它(针对课程的学习,请发挥
    答:感觉老师讲的挺好的,题目也很好,只是自己不争气罢了哈哈哈
           下学期会更加努力学的,当然这个寒假也会,开学考试加油考过!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值