算法竞赛中的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.println(*);//换行输出,注意是小写的l不是大写的I System.out.print(*);//不换行输出 System.out.printf("%d",a);//c语言风格的格式化输出
其中前两个都是把括号中的内容转换为字符串然后输出到控制台,区别只是换不换行。后一个与c语言类似。
三,数据类型
1.变量与常量
java中有八种基本类型,如下:

注:包装类型出现的原因:Java是一个面向对象的语言,基本类型并不具有对象的性质,为了与其他对象“接轨”就出现了包装类型(如我们在使用集合类型Collection时就一定要使用包装类型而非基本类型),它相当于将基本类型“包装起来”,使得它具有了对象的性质,并且为其添加了属性和方法,丰富了基本类型的操作。
整数
byte、short、int、long 四种基本数据类型表示整数,需要注意的是 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中的stl
一、队列
Java中用LinkedList类实现了Queue接口,因此我们可以把LinkedList当成Queue来用。
首先是需要加载的类:
import java.util.LinkedList; import java.util.Queue;
然后是声明:
Queue<String> queue = new LinkedList();
其次是使用队列时涉及到的几个方法:
1.压入元素(添加):add()、offer()
相同:未超出容量,从队尾压入元素,返回压入的那个元素。
区别:在超出容量时,add()方法会对抛出异常,offer()返回false
2.弹出元素(删除):remove()、poll()
相同:容量大于0的时候,删除并返回队头被删除的那个元素。
区别:在容量为0的时候,remove()会抛出异常,poll()返回false
3.获取队头元素(不删除):element()、peek()
相同:容量大于0的时候,都返回队头元素。但是不删除。
区别:容量为0的时候,element()会抛出异常,peek()返回null。
4.返回队列内元素个数:size()
二、Math类常用方法
Math.abs(); Math.max(); Math.min(); Math.pow(double a,double b); Math.sqrt(double a);

浙公网安备 33010602011771号