算法竞赛中的Java语言学习笔记

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法竞赛中的Java语言学习笔记相关的知识,希望对你有一定的参考价值。

今年的蓝桥杯为了逃离地狱难度的c++组,不得不报了Java组。虽然说特意学一门语言看起来没啥性价比,不过我感觉如果只是针对算法竞赛,应该难度会大大减少。

写这篇博客的目的也不仅是为了方便复习,也是希望借此机会能重启一下博客的更新。

废话也不多说,直接 来 吧(振声)!

本文应该会分为两个板块,一是基础语法,二是Java里的一些比赛能用的库函数(对标stl)

基础语法部分

一,基本框架

public class Main

    public static void main(String[] args)
    
        
    

其中最外层的Main是类名,一般来说竞赛中默认规定必须为Main。而内部的main则和c++语言一样,是java语言的main函数。

同时,Java语言也有一些库函数需要声明,一般来说加在程序的开头,形式如下:

import java.util.* ;

未来会在第二部分补充常用的库函数所需要的库。

二,输入输出

java和c++一样,有很多种输入方法,其中最常用也是最推荐的方法是用Scanner来完成。首先,我们如果要使用Scanner函数,需要在程序开头添加:

import java.util.Scanner;

然后有一个固定的使用格式(声明一个Scanner类对象):

Scanner *** = new Scanner(System.in);
//***为自己定义的名称

接下来,如果我们输入一个整数,就要使用 ***.nextInt(); 函数,具体形式为:

int a = ***.nextInt();

如果我们要输入一个字符串,有两种形式。一是以空格结尾的字符串,使用 ***.next();函数。第二种是会读入空格的 ***.nextLine();函数。

String a = ***.next();
String a = ***.nextLine();

输出方面,java有三种常用的输出,分别是:

System.out.printIn(*);//换行输出
System.out.print(*);//不换行输出
System.out.printf("%d",a);//c语言风格的格式化输出

其中前两个都是把括号中的内容转换为字符串然后输出到控制台,区别只是换不换行。后一个与c语言类似。

三,数据类型

1.变量与常量

java中有八种基本类型,如下:

 

 注:包装类型出现的原因:Java是一个面向对象的语言,基本类型并不具有对象的性质,为了与其他对象“接轨”就出现了包装类型(如我们在使用集合类型Collection时就一定要使用包装类型而非基本类型),它相当于将基本类型“包装起来”,使得它具有了对象的性质,并且为其添加了属性和方法,丰富了基本类型的操作。

整数

byteshortintlong 四种基本数据类型表示整数,需要注意的是 long 类型,使用 long 修饰的变量需要在数值后面加上 L 或者 l,比如 long num = 1L;,一般使用大写 L,为了避免小写 l 与数值 1 混淆。

浮点数

float 和 double 类型表示浮点数,即可以表示小数部分。需要注意的是 float 类型的数值后面需要加上 F 或者 f,否则会被当成 double 类型处理。double 类型的数值可以加上 D 或 d,也可以不加。

char 类型

char 类型用于表示单个字符。需要将字符用单引号括起来char a = \'a\',char 可以和整数互相转换,如果字符 a 也可以写成char a = 97。也可以用十六进制表示char a = \'\\u0061\'

boolean 类型

boolean 类型(布尔类型)用于表示真值 true或者假值 false,Java 中布尔值不能和整数类型或者其它类型互相转换。

常量

在声明时加上关键字final:

final double PI = 3.14;

2.String类型

java 中使用 String 类来定义一个字符串,字符串是常量。字符串缓冲区支持可变的字符串。

String 对象的初始化格式有如下两种:

String s0 = "abc";
String s1 = new String("abd");

对于字符串,有一些基本操作:

int len = s.length();//返回字符串的长度
s.equals(m);//比较字符串s与m是否相同,返回true/false
s.equalsIgnoreCase(m);//比较字符串但是忽略大小写
String s1 = "World" + "!";   //+号连接两个字符串
String s2 = s0.concat(s1); //concat()方法连接两个字符串
char c = s.charAt(1);//按索引值返回字符串里的字符(索引从0开始)

附字符串常用提取方法:

 三,数组

 声明数组:

数据类型[ ] 数组名; 

定义数组:

数组名 = new  数据类型 [ 数组长度 ];  

也可以写在一起(用二维数组举例):

数据类型 [][] 数组名 = new 数据类型[行的个数][列的个数];  

Java 中可以将一个数组赋值给另一个数组,如:

int [] a1 = 1,2,3;  
int [] a2;  
a2 = a1;  

此时a2只是a1的一个引用,改变其中一个会改变另一个。

四、方法(函数)

 

以上是关于算法竞赛中的Java语言学习笔记的主要内容,如果未能解决你的问题,请参考以下文章

《算法竞赛入门经典》学习笔记 2.3 文件操作

机器学习算法竞赛实战:如何看到机器学习竞赛问题?

Java在算法竞赛中的技巧(蓝桥杯备赛总结)

算法竞赛入门经典——读书笔记day1

笔记总结计算机系期末复习专业课学习算法与其他笔记

《挑战程序设计竞赛》学习笔记