Java作业 信管1223 学号202211671302

1. 梳理总结学习过的知识点(自行总结,内容不限于下列)
1.1认识Java语言
1.1.1  java起源
1995年,Sun公司发布了java语言,并将其放在因特网上,免费供大家使用。即使是源代码也不保密,向大家公开。(这就是所谓的开源)之后,吸引了大量的程序员使用JAVA语言开发各种各样的小动画、小游戏等.Sun公司虽然推出了JAVA,但这只是一种语言,如果想开发复杂的应用程序,就必须有一个强大的开发库。
1.1.2  特点
 java程序的跨平台主要是指字节码文件可以在任何具有java虚拟机的计算机或者电子设备上运行,java虚拟机中的java解释器负责将字节码文件解释成为特定的机器码进行运行。
Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。
1.1.3  java的三个版本
(1)JavaSE。JavaSE的全称是JavaPlatformStandardEdition(Java平台标准版),是Java技术的核心,主要用于桌面应用程序的开发。
(2)JavaEE。JavaEEDe全称为JavaPlatformEnterpriseEdition(Java平台企业版),主要应用于网络程序和企业级应用程序的开发。任何Java学员都需要从JavaSE入门,JavaSE是Java语言的核心,JavaEE在JavaSE的基础上扩展。
(3)JavaME。JavaME的全名是JavaPlatformMicroEdition(Java平台的微型版),主要用于手机游戏、PDA、顶盒等消费类设备和嵌入式设备。
1.1.4  JRE、JDK:
JRE是个运行环境,JDK是个开发环境。因此写Java程序的时候需要JDK,而运行Java程序的时候就需要JRE。而JDK里面已经包含了JRE,因此只要安装了JDK,就可以编辑Java程序,也可以正常运行Java程序。
(1)下载安装
(2)配置环境变量
      --JAVA_HOME:不存在的,需要新建。用来指定jdk的安装位置。
      --PATH:已存在的,需要修改!!用来指定jdk中工具的位置。
(3)检查
      --打开DOS窗口(Window+r),运行DOS命令:java -version 如果显示了jdk版本号就成功。
1.1.5  java开发工具
Eclipse:一个开放源代码的、基于Java的可扩展开发平台。
NetBeans:开放源码的Java集成开发环境,适用于各种客户机和Web应用。
+IntelliJ IDEA:在代码自动提示、代码分析等方面的具有很好的功能。
MyEclipse:由Genuitec公司开发的一款商业化软件,是应用比较广泛的Java应用程序集成开发环境。
EditPlus:如果正确配置Java的编译器“Javac”以及解释器“Java”后,可直接使用EditPlus编译执行Java程序。
 1.2 数据类型、表达式
1.2.1  Java中主要有八种基本数据类型:
1、整型:byte、short、int、long
2、字符型:char
3、浮点型:float、double
4、布尔型:boolean
1.2.1.1   整型
Java中整型数据属于有符号数,即第一个bit位为0表示正整数,第一个bit位为1表示负整数。在计算机中负数由补码进行表示,补码=源码取反 + 1。
(1)  byte
8位、有符号的以二进制补码表示的整数。
min:-128(-2^7)
max:127(2^7-1)
默认值:0
包装类:Byte
(2)  short
16位、有符号的以二进制补码表示的整数。
min:-32768(-2^15)
max:32767(2^15-1)
默认值:0
包装类:Short
 (3) int
32位、有符号的以二进制补码表示的整数。
min:-2,147,483,648(-2^31)
max:2,147,483,647(2^31-1)
默认值:0
包装类:Integer
 (4) long
64位、有符号的以二进制补码表示的整数。
min:-9,233,372,036,854,775,808(-2^63)
max:9,223,372,036,854,775,807(2^63-1)
默认值:0
包装类:Long
1.2.1.2 浮点型
Java中浮点型数据无法由二进制直接表示,而是一种对于实数的近似数据表示法,它遵循IEEE 754标准。
(1)  float
单精度、32位、符合IEEE 754标准的浮点数。
float在储存大型浮点数组的时候可节省内存空间
浮点数不能用来表示精确的值,如货币
默认值:0.0f
包装类:Float
(2)  double
双精度、64位、IEEE 754标准的浮点数。
浮点数的默认类型为double类型
double类型同样不能表示精确值,如货币
默认值:0.0d
包装类:Double
1.1.1.3 字符型
(1) char
char类型是一个单一的16位Unicode字符。
min:\u0000(即为0)
max:\uffff(即为65,535)
char数据类型可以储存任何字符
包装类:Character
1.2.1.4 布尔型
在JVM中并没有提供boolean专用的字节码指令,而boolean类型数据在经过编译后在JVM中会通过int类型来表示,此时boolean数据4字节32位,而boolean数组会被编译成Java虚拟机的byte数组,此时每个boolean数据1字节占8bit。
(1)  boolean
boolean数据类型表示一位的信息。
只有两个取值:true和false
这种类型只作为一种标志来记录true/false情况
默认值:false
包装类:Boolean
自动类型转换
指不需要编写代码,有系统自动完成的类型转换。由于实际开发中这样的类型转换很多,所有Java语言在设计时,没有为该操作设计语法,而是由JVM自动完成。
转换规则:从存储范围小的类型到存储范围大的类型。
具体规则:byte -> short(char)-> int -> long -> float -> double。
举例说明:byte类型的变量可以自动转换为short类型,
byte b = 11;
short sh = b;
这里在给sh赋值时,JVM首先将变量b的值转换成short类型然后再赋值给sh。
当然,在类型转换的时候可以跳跃,也就是byte可以自动转换为int类型,
注意,在整数之间进行类型转换时数值不会发生变化,但是当将整数类型特别是比较大的整数类型转换成小数类型时,由于存储精度不同,可能会存在数据精度的损失。
1.2.2 运算符
算数运算符 :+、-、*、/、%、++、– –。
关系运算符:>、<、>=、<=、==、!=。
逻辑运算符: !、&&、||、&、| 。
位运算符 :>>、<<、>>>、&、|、^、~。
赋值运算符:=、扩展赋值运算符,如+=、/=等。
条件运算符 :? :
其他:·,[],instanceof,()等
(1)算数运算符
算数运算符分为双目运算符和单目运算符。
(2)关系运算符
关系运算符是两个操作数之间的比较运算,关系运算符包括大于(>)、小于(<)、大于等于(>=)、小于等于(<=)、等于(==)、不等于(!=) 这六个运算符。其中“==”和“!=”还可用于布尔类型及字符串类型的操作。关系运算符的运算结果是布尔类型值,如果关系成立为true,否则为false。
(3)逻辑运算符
逻辑运算符是对布尔类型操作数进行的与,或,非,异或等运算,运算结果仍然是布尔类型值。逻辑运算符有&(与),I(或),!(非),^(异或),&&(条件与),II(条件或)。常用的逻辑运算符的基本运算,假设布尔变量A为真,变量B为假。
注意事项:
逻辑运算符可以针对结果为布尔值的表达式进行逻辑运算。如:5 > 3 && 1 != 0的结果为true
运算符“&”和“&&”都表示与操作,当且仅当运算符两边的操作数都为true时,其结果才为true,否则结果为false。
“&”和“&&”的区别:在使用“&”进行运算时,不论左边为true或者false,右边的表达式都会进行运算。如果使用“&&”进行运算,当左边为false时,右边的表达式不会进行运算,因此“&&”被称作短路与。
运算符“|”和“||”都表示或操作,当运算符任何一边的操作数或表达式为true时,其结果为true,当两边的值都为false时,其结果才为false。同与操作类似,“||”表示短路或,当运算符“||”的左边为true时,右边的表达式不会进行运算。
运算符“^”表示异或操作,当运算符两边的布尔值相同时(都为true或都为false),其结果为false。当两边布尔值不相同时,其结果为true。
(4)位运算符
位运算符是对操作数以二进制比特为单位进行的操作和运算,位运算数的运算对象只能是整型和字符型,结果为整型。
(5)赋值运算符
赋值运算符用于给变量赋值,格式如下:
变量名 = 表达式;
赋值运算符的次序是从右向左的,即先计算表达式的值,再将表达式的赋值予变量。
(6)条件运算符 
条件运算符与条件表达式的格式:e1? e2: e3。
格式说明:e1为Boolean类型,e2与e3的类型相同。
执行顺序: 若e1的值为true.则e2的值为最终结果;若e1的值为false,则e3的值为最终结果。
例如:
int min, x=4,y=20;
min=(x<y)? x : y;
即min的值是4。
注意: 条件运算符的优先级低于关系运算符和算术运算符,高于赋值运算符。 JAVA中条件运算表达式中的关系表达式值的类型必须为布尔类型,只能是true或false。 条件运算符的结合性是右结合性。
(7)运算符的优先级和结合性
优先级相同的运算符,运算次序由结合性决定。
运算符有不同的优先级,所谓优先级就是在表达式运算中的运算顺序。
1.2.3  表达式 :
Java中的语句有很多种形式,表达式就是其中一种形式。表达式由操作数与运算符所组成。
 对表达式求值将得到一个结果。字面值和变量是最简答的表达式,其结果就是字面值和变量的值。把一个运算符和一个或多个运算对象组合起来可以生成较复杂的表达式。
操作数可以是常量、变量,也可以是方法;运算符就是数学中的运算符号如“+”、“-”、“*”、“/”、“%”等。以下面的表达式(z+100)为例,“z”与“100”都是操作数,而“+”就是运算符。
1.3 程序结构
1.3.1选择结构
在Java程序中,如果要根据条件来决定是否执行某一段代码,就需要if语句。
1.3.1.1if 判断
(1)if 语句的基本语法:
if(条件){
    // 条件满足的执行
}
根据 if 的计算结果是true还是false,JVM决定是否执行 if语句块,即{}花括号包含的所有语句。
     ( 注:if语句块可以包含多条语句。 )               当if语句块只有一行语句时,可以省略花括号{},但是省略花括号并不总是一个好主意,不推荐忽略花括号的写法。
(2)if 语句加上 else { ...}
        当条件判断为false时,将执行else的语句块。
if(条件){
    // 条件满足的执行
} else {
    // 条件不满足的执行
}
       (注:else不是必须的。)

(3)多个"if ... else if ..."串联
if(条件1){
    //  条件1满足的执行
} else if (条件2){
    //  条件2满足的执行
} else {
    // 条件1和条件2都不满足才执行
}
        在串联使用多个if时,要特别注意判断顺序,if语句从上到下执行,只要满足第一个条件后面的就不再执行。
1.3.1.2 判断引用类型相等
        在Java中,判断值类型的变量是否相等,可以使用" == "运算符。
        但是判断引用类型的变量是否相等,"=="表示"引用是否相等"或者"是否指向同一个对象"。因此,要判断引用类型的变量内容是否相等,必须使用equals()方法。
1.3.2
标准的switch语句格式:
switch(表达式) {
    case 常量值1:
    语句体1;
    break;
    case 常量值2:
    语句体2;
    break;
    ……
    default:
    语句体n+1;
    break;
    // 最后一个break可以省略,但是推荐不要省略
}
// switch语句使用的注意事项:
(1) 多个case后面的数值不可以重复。
(2)  switch后面小括号当中只能是下列数据类型:
基本数据类型:byte/short/char/int
引用数据类型:String字符串、enum枚举
(3) switch语句格式可以很灵活:前后顺序可以颠倒,而且break语句还可以省略。
“匹配哪一个case就从哪一个位置向下执行,直到遇到了break或者整体结束为止。”
1.3.3  Java提供了3种循环语句实现循环结构,包括while语句、do-while语句、for语句。它们的共同点是根据给定条件来判断是否继续执行指定的程序段(循环体)。如果满足执行条件,就继续执行循环体,否则就不再执行循环体,结束循环语句。

(1) while循环
while循环的语法如下:
 while(布尔表达式){
 循环体;
}
说明:
布尔表达式表示循环体执行的条件,当条件为true时执行循环体。
循环体既可以是一条简单的语句,也可以是复合语句。
while语句的执行过程是:计算布尔表达式的值,如果其值是true,执行循环体;再计算布尔表达式的值,如果其值是true,再执行循环体,形成循环,直到布尔表达式的值变为false,结束循环。
(2) do-while循环
do-while循环的语法如下:
 do{
 循环体;
}while(布尔表达式);
说明:
布尔表达式表示循环执行的条件。
循环体既可以是一条语句,也可以是语句序列。
do-while语句执行的过程是:执行循环体,计算布尔表达式的值,如果其值为true,再执行循环体,形成循环,直到布尔表达式的值变为false,结4束循环,执行do-while语句后的语句。
(3) for循环
for循环的语法结构:
 for(表达式1; 表达式2; 表达式3){
 循环体;
}
说明:
表达式1的作用是给循环变量初始化。
表达式2的作用是给出循环条件。
表达式3的作用是改变循环变量的值。
循环体可以是一条或多条语句。
for循环的执行过程是:执行表达式1,计算表达式2,如果表达式2的值为true,执行循环体,执行表达式3,改变循环变量的值,再计算表达式2的值,如果是true,再进入循环体,形成循环,直到表达式2的值为false,结束循环,执行for后面的语句。
(4) break 、continue语句的使用 
break是结束当前最近的一个循环
continue只是结束当前的一次循环,后面还是会继续执行
1.4 数组应用
数组 数组是一种容器,用来储存同种数据类型的多个值。
1.4.1 数组的定义格式
格式一:数据类型[] 变量名 范例:int[] array  
格式二:数据类型[] 变量名 范例:int array[]
1.4.2  数组初始化
数组动态初始化:初始化的时候,手动指定数组长度,系统会为数组容器分配初始值;
格式: 数据类型[] 数组名 = new 数据类型[数组长度];
范例:int[] arr = new int[3];
数组静态初始化: 初始化时指定每个数组元素的初始值,由系统决定数组的长度时
格式: 数据类型[] 数组名 = new 数据类型[]{数据1,数据2,数据3...};
范例:int[] arr = new int{1,2,3...};
1.4.3 区别:
动态初始化:手动指定数组长度,由系统给出默认初始值。
静态初始化:手动指定数组元素,系统会根据元素个数,计算出数组的长度
1.4.4  使用场景:
动态初始化:只明确元素个数,不明确具体数值,推荐使用动态初始化
例如:使用数组容器来储存键盘录入的5个数
int[] arr = new int[5];
静态初始化:需求中已经明确了要操作的具体数据,直接静态初始化即可
1.4.5  数组元素访问
(1) 数组内存地址访问方式 格式:数组名
(2) 数组内部保存的数据的访问方式 格式:数组名[索引]
(3) 索引 是数组容器中空间的编号
特征: 索引从0开始; 索引是连续的; 索引逐一增加,每次加一
作用:访问数组容器中的空间位置
注意: 数组在创建完毕后,即使没有赋值,也可以取出,但取出的元素都是默认初始化值。
小问题:
索引越界:访问了数组不存在的索引对应的元素,造成了索引越界问题
空指针异常:访问的数组已经不再指向堆内存的数据,造成空指针异常
null:空值,引用数据类型的默认值,表示不指向任何有效对象
1.4.6 内存分配
栈内存:方法运行时,进入的内存,局部变量都存放于这块内存当中
堆内存:new出来的内容都会进入堆内存,并且会存在地址值
方法区:字节码文件(.class文件)加载是进入的内存
本地方法栈:调用操作系统相关资源
寄存器:交给CPU去使用
1.4.7 多维数组
多维数组可以看成是数组的数组,比如二维数组就是一个特殊的一维数组,其每个元素就是一个一维数组
1.4.8 数组的遍历
对于数组来说,基本上可以看做是一些数字。我们在使用字符串的时候,有过遍历的操作,那么对应的数组也能够进行遍历。遍历的方法:for循环、增强for循环
(1)for循环
i代表arr的下标,arr[i]获取i下标处的数组值。输出格式可以自由调整。
(2)增强for循环
Java为数组提供了一个更简单的循环,foreach循环。这种循环会自动遍历数组和集合,更加简洁。使用foreach时无需获得数组和集合的长度,无需根据指引访问数组元素和集合元素。
 1.5 类、方法
1.5.1类和对象的基本概念
在Java中一切皆对象,一切都围绕对象进行,找对象、建对象,用对象等
类:把具有相同属性和行为的一类对象抽象为类。类是抽象概念,如人类、犬类等,无法具体到每个实体。
对象:某个类的一个实体,当有了对象后,这些属性便有了属性值,行为也就有了相应的意义。
类是描述某一对象的统称,对象是这个类的一个实例而已。有类之后就能根据这个类来产生具体的对象。一类对象所具备的共同属性和行为(方法)都在类中定义。
1.5.2 类与对象的定义与使用
(1) 创建类的语法:
class 类名称 { 
成员变量/ 实例变量;
成员方法; 
}
(2) 创建具体的对象:
类名称 引用名称 = new 类名称()
Person per = new  Person();
  这个对象的引用   对象(在堆中储存)
(相当于给对象起了个名字)(所有类的对象都是引用数据类型)
注意事项:
在Java中一个源文件(*.java)只可以存在一个主类(public class)
类的命名规则:使用有意义的大驼峰单词命名法,每个单词的首字母都要大写
类中定义的成员变量都有默认值
关于引用数据类型的特殊值 null:null在Java中表示“空引用”,即只有名字,没有任何对内存中的地址,如果直接使用值为null的引用,去操作(使用.操作符)任何属性或者方法(成员变量、成员方法),都会报错。
1.5.3 static关键字  
static修饰属性(类属性、类变量)
(1) 当一个实例变量被static关键字修饰后,它就表示类的属性,该类的所有对象共享此属性,且对象的属性值相同。static修饰的属性在JVM的方法区中存储。
(2) static修饰的属性,直接通过类名称就可以访问,无须通过对象。
(3) final 和 static 的区别
 若在类中定义了一个常量,通常情况下都会把static 和 final 共同使用,称为类的常量
(因为age属于成员常量,Person类的所有对象都有age这个属性,且值都是18——>天然的共享概念,将它定义为static final,所有Person类的对象共享这个属性,全局唯一。(既节省空间,有对应共享语义)) 
全局常量的命名规则:所有单词全部大写,多个单词使用下划线分隔
1.5.4 static修饰方法(类方法、工具方法)
static修饰的方法通过类名称直接访问方法,没有对象也可以访问。
为什么static 方法是一个静态方法? 
因为主方法是程序的入口,在进入主方法前没有对象, 如果主方法是一个成员方法,需要通过对象调用,就会产生矛盾。要使程序开始执行,只有通过类名称直接调用静态方法,无须产生对象。
静态方法能否访问成员变量和成员方法?
不能。 静态方法可以通过类名称直接访问,此类中没有对象也可以访问;成员方法和成员变量必须要通过类中的对象来访问。没有对象的方法去调用必须通过对象访问的变量和方法,二者之间矛盾。
成员方法能否访问静态变量和静态方法?
可以。 必须通过对象访问的方法去调用不需要对象就可以访问的变量和方法,逻辑通过
static方法只能调用静态变量和静态方法等,static家族的成员可以相互调用(都属于静态
域)
普通的类能否使用static关键字修饰(不是内部类)?
类定义出来是要产生对象的,用static关键字修饰一个类,这个类不需要对象就能调用,矛盾。
1.5.5 面向对象的特性
面向对象一共有三大特性:封装、继承和多态
封装:保护性和易用性
封装有很多表现形式,private实现属性和方法的封装只是其中一种。
权限修饰符:在Java中,权限修饰符指的是所修饰的属性、方法或者类可见的范围有多大。
一共有四大访问修饰修饰符,可见的范围由小到大依次为 :
private(私有的):被private 修饰的属性和方法,只在当前类可见,出了类的{ },对外就完全隐藏了,外部不知道有其存在。
 default(不需要写这个关键字,什么权限也没有(包访问权限))
protected(继承访问权限)
public(公共的、公开的):被public 修饰的,在当前程序(项目)中都是可见并且可以使用的。
1.5.6 构造方法
(1) 构造方法:构造方法是类中非常特殊的一类方法,使用关键字new 实例化对象时实际上调用的就是该类的构造方法。
(2) 构造方法的作用就是产生对象
(3) 使用new关键字产生一个对象时,大致分为以下两步:
第一步,为对象在堆中分配空间(空间大小由该类中成员变量的属性决定)
第二步, 调用对象的构造方法为对象成员变量赋值(当构造方法调用结束后,该对象初始化完成)
1.5.7 构造方法的语法规则
(1)方法名称与类名称完全相同
(2)构造方法没有返回值声明(不是void)
(3)一个类中至少存在一个构造方法,若没有显示定义,编译器会生成一个默认的无参构造。
(若没有定义构造方法,编译器会生成一个默认的无参构造,当类中自定义了构造方法,默认的无参构造就不再生成。)
构造方法的重载
 构造方法是为了类中的成员变量赋值的,此时的重载只可能是参数的个数不同。
1.5.8 this 关键字(表示当前对象的引用)
(1) this关键字调用当前对象的成员变量为什么通过构造方法给成员变量初始化了,但输出结果仍是默认值?
形参名称与成员变量名称相同。程序设计理念:就近匹配原则,编译器会找最近的相同名称的变量在哪
(2) 如何打破就近匹配原则,从类中找同名变量呢?
使用this关键字,this调用其他的构造方法必须放在当前构造方法的首行
1.5.9 代码块
 代码块:指的是使用{ }括起来的一段代码,称为代码块。根据定义的代码块的位置以及关键字的不同分为以下四种代码块。
(1) 普通代码块
定义在方法中,使用{ }括起来的一段代码。
(2)成员代码块
定义在类中,不加任何修饰符的代码块,又称构造块。优先于构造方法执行,有几个对象产生就调用几次构造块。
(3)静态代码块
定义在类中,使用static修饰的代码块,在类加载时执行一次,与对象无关。无论产生多少对象,静态代码块只在类加载时执行一次。
1.5.10 toString方法(注意大小写)
当一个引用类型的变量调用println函数打印时,默认输出的都是引用类型的地址。(不是真正的内存地址,Java中程序员是无法知道任何确认的内存地址)在类中构造一个toString()方法,对象默认调用此方法进行打印。
2. PTA实践总结
选择不少于两个程序示例进行说明,需要发布源代码、测试用例。
谈一下在线刷题的个人感受。
    2.1示例1
题目:第一行为一个正整数 T ,表示有 T 组测试数据。
接下来T行,每行第一个整数N, 然后有N个整数,无序。0<N <= 100。
输出共 T 行。
每行一个整数,代表本行数据从小到大冒泡排序所进行的交换次数。
代码:
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
    Scanner sc=new Scanner(System.in);
        int T=sc.nextInt();
        for(int m=1; m<=T; m++) {
            int N=sc.nextInt();
            int count=0;
            int [] arr=new int[N];
            for(int j=0; j<arr.length; j++) {
                arr[j]=sc.nextInt();
            }
            for(int j=0; j<arr.length-1; j++) {
                for(int i=0; i<arr.length-1-j; i++) {
                    if(arr[i]>arr[i+1]) {
                        int a=arr[i];
                        arr[i]=arr[i+1];
                        arr[i+1]=a;
                        count++;
                    }
                }
            }
            System.out.println(count);
        }
    }
}
输入样例:
3
5 1 2 3 4 5
4 5 3 7 1
2 2 1
输出样例:
0
4
1
说明:该题目较简单,先使用Scanner输入整数T,因为有T组数据,我们使用for循环,将数据循环记入数组arr中,然后定义一个计数器count,用以记录冒泡排序交换数字的次数,再使用双重for循环和if语句进行比较数字大学和进行排序,并记录数字交换次数,最后输出count的值。
    2.2示例2
 题目: 本题目要求输入一个正整数,按数字的相反顺序输出。
输入格式:
输入一个正整数。
输出格式:
按输入正整数的数字相反顺序输出一个数字。
输入样例:
5236
输出样例:
6325
代码:
import java.util.Scanner;
public class Main{
public static void main(String[] args{    
Scanner sc=newScanner(System.in);
    int a = sc.nextInt();
    int b, c = 0;
    do{
        b = a % 10;
        c = a / 10;
        a = c;
        System.out.print(b);
    }while(a % 10 !=0); 
}
}
说明:该题主要考察循环语句和数学知识,使用10对该数进行取余然后除以10,可以得到每一个数位上的数字,然后输出这些数字就可以了。
   2.3在线评测系统使用感受
感觉还行,简单一点的能做完,但是如果题目难的话可能不够时间完成。此外,pta系统测试样例的点不知道在哪,明明可以跑出正确结果,却经常会扣分,而且扣分了也不知道哪里出错。
3. 改进学习方法、措施落实情况(内容可扩展,至少包括以下项)
    3.1 除课堂外,遇到不会的问题时会到哪个平台搜索
会在 CSDN上搜索。
    3.2 根据记录2个月的每天代码时长,利用excel绘制统计表
没有记录每天写代码的时长,如果没作业的话,可能不会敲代码,但是有作业的情况下,每天写一个小时左右。
    3.3 感觉个人的哪些方法还存在不足?哪些方面需要改进?等
   Java基础知识掌握不牢固,随着学习难度越来越高,后面的知识点不太明白,而且平时学习Java的时间较少。
4. 你知道csdn么,结合使用情况表述他的优点与不足
    4.1 csdn给你的直观感受是什么?
内容丰富,可以学到很多知识。
    4.2 csdn你感觉最不舒服的地方是什么?
有些帖子要收费才能看完。
    4.3 你还利用了哪些平台学习编程知识,他们是哪些网站或资源,优点是什么?
还在B站上看教学视频学习,优点是可以暂停下了思考。
5. 你认为影响你学习编程的主要阻力是什么?如何克服!
各个学科的作业太多,分配到Java学习的时间很少,此外,在写代码是需要数学知识进行辅助,而本人数学不太好。
如何克服:
(1)合理分配各科的学习时间,争取明天都有时间学习Java知识。
(2)多学习数学知识。
6. 其它(针对课程的学习,请发挥)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值