【无标题】《程序设计基础》学习总结

一.知识总结

1.学习jdk的配置

1.1 

下载地址为: Java Downloads | Oracle

使用JDK 17.0.2,适用的时间可到2024年。

1.2

配置与验证

以window11为例,右键我的电脑—属性—在高级系统设置中找到环境变量—系统变量中新建变量名为JAVA_HOME,变量值为你下载jdk存放的路径(进入到“\jdk-17”即可,无需进入bin)—接着找到Path,编辑,新建一个“%JAVA_HOME%\bin”。

键盘同时按住“win”和“R” ,打开运行输入“cmd”打开命令行,在命令行中输入java -version后出现以下

java version "17" 2021-09-14 LTS

Java(TM) SE Runtime Environment (build 17+35-LTS-2724)

Java HotSpot(TM) 64-Bit Server VM (build 17+35-LTS-2724,

mixed mode, sharing)

表明配置成功,也可输入javac进行测试

2.数据类型与表达式

2.1

数据类型包括基本类型与引用类型

基本类型:又分为整数类型(byte,short,int,long),浮点类型(float,double),字符类型(char),和布尔类型(boolean).

他们的区别在于区间不同,布尔类型只有真true假false。Char类型有时要查ASCII码表。有时也要强制转换。

引用类型:类(class),接口(interface),集合(array).

2.2

运算符

+(加/连接),-(减),*(乘), /(除),%(取余)

逻辑运算符 &&(与), ||(或), !(非)

比较运算符 !=(不等于), >(大于), >=(大于等于), <(小于), <=(小于等于), ==(等于)

移位运算符>>, <<等

自增++,自减--,+=相加赋值(其他运算同理)。

2.3

表达式

例如:int a=5;int a=x>y?x:y

3.程序结构

条件语句(If语句,If...else if...语句)

switch语句

switch(表达式){

case值1:{}

case值2:{}

}

:(如需跳出用break)

循环语句

1.

while(条件){

}

2.

do {

}

while(条件)

3.

for(条件){

}

死循环时用while循环较多

4.数组应用

4.1一维数组

定义:数据类型[] 数组名 / 数据类型 数组名[]

4.2静态初始化

int[] array;      // 声明一个int类型数组

array = new int[]{1,2,3,4,5};   // 静态初始化数组

int[] array = new int[]{1,2,3,4,5};  // 声明并初始化数组

简写:

int[] array = {1,2,3,4,5}; // 声明并初始化一个int类型的数组

4.3动态初始化

int[] array = new int[10]; // 动态初始化数组

在数组声明的同时分配一块内存空间供该数组使用,其中数组长度是10,由于每个元素都为int型数据类型

4.4数组长度与遍历

长度:数组名.length

遍历:for(int i=0;i<数组名.length;i++) {

System.out.println(d[i]);

}

4.5二维数组

二维数组的声明:

int[][] array;

int array[][];

二维数组动态初始化的实例如下:

array=new int[3][2];    // 动态初始化3*2的二维数组

array[0]={1, 2}; // 初始化二维数组的第一个元素

array[1]={3, 4}; // 初始化二维数组的第二个元素

array[2]={5, 6}; // 初始化二维数组的第三个元素

二维数组静态初始化的示例如下:

array=new int[][]{

{1},

{2, 3},

{4}

};

对于二维数组的静态初始化也可用另一种形式,具体示例如下:

int[][] array={

{1},

{2, 3},

{4}

};

遍历:

for(int x=0; x<数组名.length; x++) {

            for(int y=0; y<数组名[索引].length; y++) {

                //把元素累加即可。

                sum += arr[x][y];

            }

        }

5.方法

5.1定义

修饰符 返回值类型 方法名([参数类型 参数名1,参数类型 参数名2,…]) {

方法体

return 返回值;

}

必须有return关键字,return后的返回,必须与返回值类型一致。

5.2调用

直接调用方法名;//方法名()

如果有参数要输入参数;//方法名(参数1,参数2...)

6.类

6.1类的定义

class 类名{

属性类型 成员变量名;   // 成员变量(对象属性)

…                              

      修饰符 返回值类型 方法名([参数列表]) { // 成员方法(对象行为)

           // 方法体

return 返回值;

     }

}

6.2对象的创建与使用

类名  对象名= new 类名();

对象名.成员变量;

对象名.成员方法();

6.3类有三大特性

封装性,继承性,多态性

6.4构造方法

构造方法名与类名相同。

构造方法没有返回值类型。

构造方法中不能使用return返回一个值。

每次定义构造方法要先定义一个无参构造,再根据需求构建有参构造。

6.5static关键字与final关键字

static关键字表示静态的,用于修饰成员变量、成员方法以及代码块,如用static修饰main()方法。灵活正确地运用static关键字,可以使程序更符合现实世界逻辑。

在Java中,为了考虑安全因素,要求某些类不允许被继承或不允许被子类修改,这时可以用final关键字修饰。它可用于修饰类、方法和变量,表示“最终”的意思,即用它修饰的类、方法和变量不可改变,具体特点如下:

    • final修饰的类不能被继承。
    • final修饰的方法不能被子类重写。
    • final修饰的变量是常量,初始化后不能再修改。

6.6代码块

代码块是指用大括号“{}”括起来的一段代码,根据位置及声明关键字的不同,代码块可分为普通代码块、构造代码块、静态代码块和同步代码块,其中同步代码块在第7章进行讲解。

6.7内部类

在Java中,类中除了可以定义成员变量与成员方法外,还可以定义类,该类称作内部类,内部类所在的类称作外部类。根据内部类的位置、修饰符和定义的方式可分为成员内部类、静态内部类、方法内部类以及匿名内部类4种。

内部类有3点共性:

1.内部类与外部类经Java编译器编译后生成的两个类是独立的。

2.内部类是外部类的一个成员,因此能访问外部类的任何成(包括私有成员),但外部类不能直接访问内部类成员。

3.内部类可为静态,可用protected和private修饰,而外部类只能用public 和默认的访问权限。

6.8类的继承

格式如下:

class 子类名 extends 父类名 {

       属性和方法

}

Java使用extends关键字指明两个类之间的继承关系。子类继承了父类中的属性和方法,也可以添加新的属性和方法。

Java语言只支持单继承,不允许多重继承,即一个子类只能继承一个父类,否则会引起编译错误,具体示例如下:

class A {}

class B {}

class C extends A, B {}

Java语言虽然不支持多重继承,但它支持多层继承,即一个类的父类可以继承另外的父类。因此,Java类可以有无限多个间接父类,具体示例如下:

class A {}

class B extends A {}

class C extends B {}

6.9 this与super关键字

类在定义成员方法时,局部变量和成员变量可以重名,但此时不能访问成员变量。为避免这种情形,Java提供了this关键字,表示当前对象,指向调用的对象本身。

当子类重写父类方法后,子类对象将无法访问父类被重写的方法。如果在子类中需要访问父类的被重写方法,可以通过super关键字来实现,其语法格式如下:

super.成员变量

super.成员方法([实参列表])

在继承中,实例化子类对象时,首先会调用父类的构造方法,再调用子类的构造方法,这与实际生活中先有父母再有孩子类似。子类继承父类时,并没有继承父类的构造方法,但子类构造方法可以调用父类的构造方法。在一个构造方法中调用另一个重载的构造方法使用this关键字,在子类构造方法中调用父类的构造方法用super关键字,其语法格式如下:

super([参数列表])

7.Pta实践总结

7.1

示例1

循环-乘法运算

接收一个正整数N,然后打印输出:N个等式,形如:i(1->N)N=iN 格式的数据。

import java.util.Scanner;

public class Main{

    public static void main(String[] args){

        Scanner sc=new Scanner(System.in);

        int a=sc.nextInt();  //只有一个正整数N

        for(int i=1;i<=a;i++){

//输出共N行数据,形式如:i (1->N)*N=? 格式的表达式。

            System.out.println(“”+i”*”+a+”=”+(i*a));

        }

    }

}

输入:

4

输出:

1*4=4

2*4=8

3*4=12

4*4=16

示例2

直角坐标系象限判断

X是一个喜欢数学的小孩,现在刚刚学了坐标系。

他想知道点(X,Y)在第几象限内。输入数据保证点不在坐标轴及原点上。

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        while (sc.hasNext()){

//每组输入两个整数X,Y,代表点(X,Y)

        int x= sc.nextInt();

        int y= sc.nextInt();

        if (x>0&&y>0){          //第一象限条件

            System.out.println("1");

        }else if (x<0&&y>0){    //第二象限条件

            System.out.println("2");

        }else if (x<0&&y<0){    //第三象限条件

            System.out.println("3");

        }else {                 //第四象限条件

            System.out.println("4");

        }

        }

    }

}

输入:

2 3

-2 -3

输出

1

3

示例3

水仙花数

编写程序打印出所有的水仙花数。所谓"水仙花数"是指一个三位数,其各位数字立方和等于该本身。例如:153是一个水仙花数,因为153=1^3+5^3+3^3。 输出的数之间用“,”(英文半角的逗号)分割。

153,370,371,407

public class Main {

    public static void main(String[] args) {

        int count=0;

        for (int i = 100; i < 1000; i++) {

            int a=i/100;     //百数位置的数字

            int b=i%10;      //个位位置的数字

            int c=(i/10)%10; //十位位置的数字

            if (Math.pow(a,3)+Math.pow(b,3)+Math.pow(c,3)==i){

//Math.pow(a,3)为a的三次方,其他同理相加得到水仙花数

                count++;

                System.out.print(i);

                if (count<4){

                    System.out.print(",");

                }

            }

        }

    }

}

7.2

在线评测感受:

我感觉每次做完pta都有一种满足感,对于java的每一次学习与了解都有很好的意义,主要是锻炼了我们的算法能力,每周固定的次数,能够让我们很好的坚持学习。但是每次如果有错,我都会查很久,系统并没有很明确告诉你哪里错误,虽然这也能很好的让我们学会去找错但对于萌新来说很痛苦。但是总体来说在线评测我十分的接受与认可。

三.改进学习方法、措施落实情况

8.1

除课堂外,遇到不会我会求助csdn这个平台,或者bilibili。

8.2

没有记录无法做表,但是之前没结课时,每天都保持着学习Java,虽然可能时间不长。

8.3

对于算法的理解不好,我很容易把问题复杂化,导致会浪费太多时间,碰到问题容易钻牛角尖,不会往回想。加强我的算法能力,我觉得敲代码是一件枯燥的事情,但是还是要坚持每天去学习,才能够巩固知识,要学会解决枯燥,每天保存新鲜。

四.CSDN

9.1

内容丰富,多方面,兼顾各计算机语言,方便,直观。

9.2

有些文章要钱才能进去,有广告,评论区隐藏的太深不好与其他人交流学习

9.3

用bilibili,有视频,有老师带,直观方便可重复观看

五.阻力

10.1

难以理解,导致太受挫,看到别人卷到很远就会丧失动力。所以我不去过度关注别人,知道有些人的天赋比较好,先学了就好,然后自己再慢慢学,不要被影响,要追着他的步伐。

六.其他

针对课程的学习,之后会尽力去参加一些比赛给自己的简历加分,然后继续学习加深java,努力毕业后能找到一个更好的工作。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java程序设计基础是指学习和掌握Java编程语言的基本概念、语法和技巧。下面是一些Java程序设计基础的内容: 1. Java语言特点:Java是一种面向对象的编程语言,具有简单、可移植、安全、高性能等特点。 2. 基本语法:Java的基本语法包括变量、数据类型、运算符、控制流程(条件语句、循环语句)、数组等。 3. 面向对象编程:Java是一种面向对象的编程语言,具有封装、继承、多态等特性。学习面向对象编程的概念和原则是Java程序设计基础。 4. 类和对象:Java中的类是对象的模板,对象是类的实例。学习如何定义类、创建对象、访问对象的属性和方法等是Java程序设计基础。 5. 方法和函数:Java中的方法用于封装可重用的代码块,函数是方法的一种殊形式。学习如何定义和调用方法、传参数等是Java程序设计基础。 6. 异常处理:Java提供了异常处理机制,用于处理程序运行过程中可能出现的异常情况。学习如何捕获和处理异常是Java程序设计基础。 7. 输入输出:Java提供了丰富的输入输出类和方法,用于处理文件、网络等输入输出操作。学习如何读写文件、网络编程等是Java程序设计基础。 8. 集合框架:Java提供了一套集合框架,用于存储和操作数据集合。学习如何使用集合框架进行数据操作是Java程序设计基础。 9. 多线程编程:Java支持多线程编程,可以同时执行多个任务。学习如何创建和管理线程、线程同步等是Java程序设计基础。 10. GUI编程:Java提供了Swing和JavaFX等图形用户界面库,用于开发图形界面应用程序学习如何使用GUI库进行界面设计和事件处理是Java程序设计基础。 以上是Java程序设计基础的一些内容,希望对你有所帮助。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值