程序员成长之路(Day 5)

Posted poppingQQ星

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了程序员成长之路(Day 5)相关的知识,希望对你有一定的参考价值。

目录

学习目标:

学习内容:

方法的定义 

    方法调用:

    方法的重载:

    构造方法:

                finalize() 方法:

延伸: 

Git教程

Git的简介

Git的诞生:

Git的安装:

创建版本库:

时光机穿梭:

版本回退:

Lintcode刷题:

·回退并重新提交commit

·计算纸张的折叠次数 

·continue继续循环 

·字符串字符排序 

·判断三角形

·判断闰年 

 ·主对角线元素之和

学习时间:

学习产出:


学习目标:

  • 方法的定义
  • 方法的形参和实参
  • 方法的递归调用

学习内容:

方法的定义 

一般情况下,定义一个方法包含以下语法:

        修饰符 返回值类型 方法名(参数类型 参数名){ ... 方法体 ... return 返回值; }方法包含一个方法头和一个方法体。下面是一个方法的所有部分:

                修饰符:修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。

                返回值类型 :方法可能会返回值。returnValueType 是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值。在这种情况下,returnValueType 是关键字void。

                方法名:是方法的实际名称。方法名和参数表共同构成方法签名。

                参数类型:参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为实参或变量。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。

                方法体:方法体包含具体的语句,定义该方法的功能。

    方法调用:

                Java 支持两种调用方法的方式,根据方法是否返回值来选择。

                当程序调用一个方法时,程序的控制权交给了被调用的方法。当被调用方法的返回语句执行或者到达方法体闭括号时候交还控制权给程序。

                当方法返回一个值的时候,方法调用通常被当做一个值。

    方法的重载:

                同样的方法不同的传入参数类型不同即可重载方法

    构造方法:

                当一个对象被创建时候,构造方法用来初始化该对象。构造方法和它所在类的名字相同,但构造方法没有返回值。通常会使用构造方法给一个类的实例变量赋初值,或者执行其它必要的步骤来创建一个完整的对象。不管你是否自定义构造方法,所有的类都有构造方法,因为Java自动提供了一个默认构造方法,默认构造方法的访问修改符和类的访问修改符相同(类为 public,构造函数也为 public;类改为 private,构造函数也改为 private)。一旦你定义了自己的构造方法,默认构造方法就会失效。

                finalize() 方法:

        Java 允许定义这样的方法,它在对象被垃圾收集器析构(回收)之前调用,这个方法叫做 finalize( ),它用来清除回收对象。在 finalize() 方法里,你必须指定在对象销毁时候要执行的操作。finalize() 一般格式是:

protected void finalize() { // 在这里终结代码 }

关键字 protected 是一个限定符,它确保 finalize() 方法不会被该类以外的代码调用。当然,Java 的内存回收可以由 JVM 来自动完成。如果你手动使用,则可以使用上面的方法。


延伸: 

Git教程

Git的简介

Git的诞生:

        破解BitKeeper协议被BitMover公司发现了,Linus花了两周时间自己用C写了一个分布式版本控制系统,就是Git

Git的安装:

        Git官网下载安装程序安装即可

创建版本库:

        版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。

                使用方式:

                1、创建一个空目录

    E:\\git>mkdir learngit

    E:\\git>cd learngit

                2、用git init命令把在这个目录变成Git可以管理的仓库

E:\\git\\learngit>git init

Initialized empty Git repository in E:/git/learngit/.git/

                3、添加文件到Git仓库编写readme.txt

Git is a  version control system.

Git is free software.

                        a.用git add 文件名告诉Git,把文件添加到仓库

E:\\git\\learngit>git add readme.txt

                         b.用git commit -m”备注”把文件提交到仓库

E:\\git\\learngit>git commit -m"wrote a readme file"

[master (root-commit) a75f925] wrote a readme file

 1 file changed, 2 insertions(+)

 create mode 100644 readme.txt

时光机穿梭:

        修改文件后使用git status命令来查看仓库当前状态

修改文件

Git is a distributed version control system.

Git is free software.

 查看仓库状态

E:\\git\\learngit>git status

On branch master

Changes not staged for commit:

  (use "git add <file>..." to update what will be committed)

  (use "git restore <file>..." to discard changes in working directory)

        modified:   readme.txt


no changes added to commit (use "git add" and/or "git commit -a")

        发现仓库文件被修改后可以用git diff 文件名来查看具体修改内容

E:\\git\\learngit>git diff readme.txt

diff --git a/readme.txt b/readme.txt

index d8036c1..5fbfb0d 100644

--- a/readme.txt

+++ b/readme.txt

@@ -1,2 +1,2 @@

-Git is a version control system.

+Git is a distribute version control system.

 Git is free software.

\\ No newline at end of file

        在git add 文件名之后使用git status命令可以确认要提交的文件

E:\\git\\learngit>git add readme.txt



E:\\git\\learngit>git status

On branch master

Changes to be committed:

  (use "git restore --staged <file>..." to unstage)

        modified:   readme.txt

提交完后的git status会返回没有需要提交的修改,而且工作目录是干净的

E:\\git\\learngit>git commit -m "add distribute"

[master 87b21d6] add distribute

 1 file changed, 1 insertion(+), 1 deletion(-)

E:\\git\\learngit>git status

On branch master

nothing to commit, working tree clean

版本回退:

        先是再次修改文件后提交

修改文件

Git is a distributed version control system.

Git is free software distributed under the GPL.

 提交

E:\\git\\learngit>git commit -m"append GPL"

[master 083eac5] append GPL

 1 file changed, 1 insertion(+), 1 deletion(-)

        用git log命令来查看每次都改了什么内容

E:\\git\\learngit>git log

commit 083eac56be0121ff8770737bb54e04a0c18b4987 (HEAD -> master)

Author: QianQiXiang <qianqixiang@demogic.com>

Date:   Fri Aug 13 14:39:16 2021 +0800

    append GPL

commit 87b21d631eb64a4d798f0f3304a0c7b03b72cd34

Author: QianQiXiang <qianqixiang@demogic.com>

Date:   Fri Aug 13 13:52:50 2021 +0800

    add distribute

commit a75f925ea05917b96866421536b9faffe819498f

Author: QianQiXiang <qianqixiang@demogic.com>

Date:   Fri Aug 13 11:31:41 2021 +0800

    wrote a readme file

        简略信息显示可以在后面加上--pretty=oneline参数

E:\\git\\learngit>git log --pretty=oneline

083eac56be0121ff8770737bb54e04a0c18b4987 (HEAD -> master) append GPL

87b21d631eb64a4d798f0f3304a0c7b03b72cd34 add distribute

a75f925ea05917b96866421536b9faffe819498f wrote a readme file

        在Git中,在HEAD表示当前版本,上一个版本时HEAD^,上上一个时HEAD^^,数字多的时候往上n个版本写成HEAD~n 使用(git reset --hard HEAD版本)来实现回退

E:\\git\\learngit>git reset --hard HEAD^

More? ^

HEAD is now at 87b21d6 add distribute

        使用type 文件名.txt命令来展示txt内容

E:\\git\\learngit>type readme.txt

Git is a distribute version control system.

Git is free software.

        再用git log时

E:\\git\\learngit>git log

commit 87b21d631eb64a4d798f0f3304a0c7b03b72cd34 (HEAD -> master)

Author: QianQiXiang <qianqixiang@demogic.com>

Date:   Fri Aug 13 13:52:50 2021 +0800

    add distribute

commit a75f925ea05917b96866421536b9faffe819498f

Author: QianQiXiang <qianqixiang@demogic.com>

Date:   Fri Aug 13 11:31:41 2021 +0800

    wrote a readme file

        想要返回未来的某个版本需要找到哪个文件的commit id

E:\\git\\learngit>git reset --hard 083ea

HEAD is now at 083eac5 append GPL

E:\\git\\learngit>type readme.txt

Git is a distribute version control system.

Git is free software distribute under the GPL.

当你用$ git reset --hard HEAD^回退到add distributed版本时,再想恢复到append GPL,就必须找到append GPL的commit id。Git提供了一个命令git reflog用来记录你的每一次命令

E:\\git\\learngit>git reflog

083eac5 (HEAD -> master) HEAD@{0}: reset: moving to 083ea

87b21d6 HEAD@{1}: reset: moving to HEAD^

083eac5 (HEAD -> master) HEAD@{2}: commit: append GPL

87b21d6 HEAD@{3}: commit: add distribute

a75f925 HEAD@{4}: commit (initial): wrote a readme file

Lintcode刷题:

·回退并重新提交commit

                 Git->(延伸)

cd my-repo
##########
git log
##########
ls
##########
git reset --hard HEAD^
##########
ls
##########
touch solution.h
##########
git add solution.h
##########
git commit -m 'This is a correct commit.'
##########
git log

·计算纸张的折叠次数 

 

         While循环判断纸张厚度大于山的高度没有,在循环中paperThickness不停的*2,次数增加即可

import java.util.Scanner;


class Main {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        int height=scanner.nextInt();
        double paperThickness=scanner.nextDouble();
        int i =0;
        while (paperThickness<height){
            paperThickness*=2;
            i++;
        }
        System.out.println("Need to fold "+i+" times");
    }
}

·continue继续循环 

 

         在for循环中加入if判断用continue跳出本次循环

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        int num=scanner.nextInt();
        for (int i=1;i<=num;i++){
            if (i%3==0){
                continue;
            }
            System.out.println(i);
        }
    }
}

·字符串字符排序 

        把字符串转换成为字符数组,排序后在转换为字符串返回即可 

import java.util.Arrays;

public class Solution {

    public String handle(String str) {
        char[] chars=str.toCharArray();
        Arrays.sort(chars);
        return String.valueOf(chars);
    }
}

·判断三角形

        三角形任意两边之和大于第三边,用&判断即可 

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner =new Scanner(System.in);
        int a=scanner.nextInt();
        int b=scanner.nextInt();
        int c=scanner.nextInt();
        if (a+b>c&&a+c>b&&b+c>a){
            System.out.println("Is a triangle");
        }else
            System.out.println("Not a triangle");
    }
}

·判断闰年 

 

        能被4整除同时能被400整除但不能被100整除即可

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        int year=scanner.nextInt();
        if (year%4==0&&year%100!=0||year%400==0){
            System.out.println("is a leap year");
        }else
            System.out.println("not a leap year");
    }
}

 ·主对角线元素之和

         创建二维数组遍历放入,在主对角线时元素加一下即可

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        int i =scanner.nextInt();
        int[][] arr=new int[i][i];
        int num=0;
        for (int j=0;j<i;j++){
            for (int k=0;k<i;k++){
                arr[j][k]=scanner.nextInt();
                if (j==k){
                    num+=arr[j][k];
                }
            }
        }
        System.out.println(num);
    }
}

学习时间:

2021-8-13 9:00-11:45、13:30-17:30、19:45-21:07


学习产出:

学习博客*1

刷题*7

代整理:Git、Math方法

以上是关于程序员成长之路(Day 5)的主要内容,如果未能解决你的问题,请参考以下文章

架构师成长之路:谈应用系统架构设计

云计算成长之路第一章 01

映射篇:request-String-Object-Map之间相互转化(程序员的成长之路---第5篇)

Python成长之路第四篇模块儿

python成长之路第三篇_正则表达式

python成长之路第三篇_正则表达式