程序员成长之路(day5)(代码片段)

poppingQQ星 poppingQQ星     2022-12-21     708

关键词:

目录

学习目标:

学习内容:

方法的定义 

    方法调用:

    方法的重载:

    构造方法:

                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方法

小白艰苦学习之路(记录学习历程——java篇)day5(代码片段)

Day5方法详解什么是方法publicclassTest1//main方法publicstaticvoidmain(String[]args)//实参:实际调用传递给他的参数intsum=add(1,4);System.out.println(sum);//加法//形式参数:用来定义作用的publicstaticintadd(inta,intb)retu 查看详情

优秀软件架构师成长之路(代码片段)

成为一名优秀架构师,是很多程序员努力的方向。相关的讨论也从没停过,除了大家说烂了的那些架构师的特质和需要具备的技能外,还有很多是我们可以在工作和学习过程中重点培养和关注的能力。1.在软件工程师... 查看详情

python成长之路第九篇:网络编程(代码片段)

一、套接字1.1、套接字套接字最初是为同一主机上的应用程序所创建,使得主机上运行的一个程序(又名一个进程)与另一个运行的程序进行通信。这就是所谓的进程间通信(InterProcessCommunication,IPC)。有两种类型的套接字:... 查看详情

scala成长之路compaionobject——伴生对象的使用(代码片段)

...,尤其是在静态方法被滥用的当下(一个顽固的面向过程程序员完全可以将他的过程思维用一大推静态方法实现,而class仅仅只是个空有其表的外壳而已)所以在scala中,设计者摒弃了static关键字,宣称自己是 查看详情

python爬虫成长之路:抓取证券之星的股票数据(代码片段)

     获取数据是数据分析中必不可少的一部分,而网络爬虫是是获取数据的一个重要渠道之一。鉴于此,我拾起了Python这把利器,开启了网络爬虫之路。     本篇使用的版本为python3.5,意在抓... 查看详情

scala成长之路对象和类(代码片段)

scala提供了一种特殊的定义单例的方法:object关键字scala>objectShabi|valage=0|valname="shabi"|defsay=|println("hello,Iamashabi")||definedobjectShabiscala>Shabi.sayhello,Iamashabiobject定义的单例可以类比于java中的静态元素,也类似于en 查看详情

开发成长之路(21)--不可不知的操作系统知识(代码片段)

文章目录知识框图操作系统的硬件环境计算机系统的层次结构操作系统主要作用多道程序设计的基本概念分时系统实时系统实时任务的类型实时系统与分时系统的比较中央处理机指令的基本执行过程处理机的状态存储器的层次结... 查看详情

spark成长之路-消息队列(代码片段)

参考文章:Spark分布式消息发送流程监听器模式volatile因为之前被这个消息队列坑过(stage夯住原因分析),所以现在研究源码,先从它下手,解答一下我这么久的疑惑。继承关系ListenerBus->SparkListenerBus->LiveListenerBus。... 查看详情

scala成长之路问题记录(代码片段)

还是在看scalasdk源码的时候,有很多问题要考自己慢慢摸索,这里做个记录。一.隐式转换的作用域?隐式转换需要三个因素1.己方(当前对象)2.转换函数3.对方(转换的目标类)这三个需要在同一个作用域内才能生效吗?举个简... 查看详情

小白艰苦学习之路(记录学习历程——java篇)day5(代码片段)

Day5方法详解什么是方法publicclassTest1//main方法publicstaticvoidmain(String[]args)//实参:实际调用传递给他的参数intsum=add(1,4);System.out.println(sum);//加法//形式参数:用来定义作用的publicstaticintadd(inta,intb)returna+b;方法的定义和... 查看详情

开发成长之路(22)--不可不知的操作系统知识(代码片段)

文章目录知识框图存储器管理内存的分配和回收程序的链接和装入各种存储管理方式分区分配算法内存分区回收操作内存回收算法可变分区分配的优缺点分页存储管理方式页表存取控制地址变换动态地址变换地址变换过程分页系... 查看详情

scala成长之路函数入门(代码片段)

众所周知,scala作为一门极客型的函数式编程语言,支持的特性包括:函数拥有“一等公民”身份;支持匿名函数(函数字面量) 支持高阶函数 支持闭包 部分应用函数 柯里化首先需要指出,在scala中有方法和函数对... 查看详情

sringcloud学习成长之路八消息总线(代码片段)

SpringCloudBus将分布式的节点用轻量的消息代理连接起来。它可以用于广播配置文件的更改或者服务之间的通讯,也可以用于监控。本文要讲述的是用SpringCloudBus实现通知微服务架构的配置文件的更改。一、准备工作本文还是基于... 查看详情

架构师成长之路2.4-kickstart文件剖析(代码片段)

点击返回架构师成长之路架构师成长之路2.4-Kickstart文件剖析 kickstart文件是一个简单的文本文件,它包含了一个项目列表,每个项目由一个关键字来识别。创建kickstart文件注意:每节必须按顺序指定.除非特别申明,每节内的项目则... 查看详情

spark成长之路(13)-dataset与dataframe(代码片段)

DatasetsandDataFrames前言源码DataFrameDataset创建dataset读取json串RDD转换为Dataset总结DataFrame总结前言spark1.6中引入了DataSet和DataFrame的概念,然后SparkSQL的API也是基于这两个概念的,到2.2推出的稳定版本的StructuredStreaming也是依靠Spar... 查看详情

单片机成长之路(51基础篇)-016常见总线类型(代码片段)

1、首先看看它名字真正的含义: SPI(SerialPeripheralInterface:串行外设接口); I2C(INTERICBUS:意为IC之间总线) UART(UniversalAsynchronousReceiverTransmitter:通用异步收发器) USART:通用同步异步收发器 USB:UniversalSerialBUS(通 查看详情

架构师成长之路--什么是架构师(代码片段)

前言:哲学家常思考的问题:"我是谁?""我从哪里来?""要到哪里去?不只是哲学家,我想每个人都有自己对这三个问题的认知。如果我们要成为架构师,我们自己要面临的三大问题:找准自己定位:我是谁?... 查看详情

开发成长之路(11)--stl常用函数大集合(代码片段)

再好的编程技巧,也无法让一个笨拙的算法起死回生。特定的算法往往搭配特定的数据结构。换言之,特定的数据结构是为了实现某种特定的算法。文章目录vector部分list部分map/multimapset/multisetunordered_set/unordered_multisetunord... 查看详情