Mengzelev's Blog

面向OJ的Java学习

Word count: 2,596 / Reading time: 9 min
2018/09/16 Share

各路ddl原因本文目前还处于混乱状态,十分丢人,谨慎阅读
源代码为了防止查重,在OJ截止后会附上,也十分丢人

准备工作

下载安装IDE

本UI警察使用的是JetBrains的IntelliJ IDEA,可以直接从官网下载,用学生邮箱注册可以免费获得Utilmate版,下载后安装即可。安装时会安利一些插件,根据个人需要选择安装。

下载后打开IJ,选择新建一个工程,这时候会提醒你选择JDK,只需要点击Download JDK直接在官网上下载即可。(这一步忘记截图了)

下载并安装完JDK之后,可以先对编辑器进行设置(File -> Settings 或 Ctrl + Alt +S),选择自己喜欢的字体和配色风格。我使用的是默认的Darcula配色和Monaco字体。


<img src = “startjava/font.png”, height=300>

大致效果如下(我jio得非常好看(请无视xjb乱写的第一个java程序


<img src = “startjava/a+b.png”, height=300>

创建新项目

由于暂时用于应付oj,以下步骤非常不严谨,不适合开发相关,只确保能正常完成oj作业,欢迎随时指出不严谨之处

点击File -> New -> Project,新建一个项目,其他东西可以暂时不用管,在新的项目中找到src文件夹,右键选择New -> Java class,注意命名规范

之后会得到一个有模板的.java代码文件(球球无视一切xjb命名)


<img src = “startjava/newclass.png”, height=300>

移动光标就可以开始敲代码啦!装了IdeaVim插件的童鞋别忘了用vim的相关快捷键啊~某捷列傻直接Ctrl-C+Ctrl-V半天没有反应

编译运行

拷贝了一下poj上a + b问题的源代码,之后就要来尝试编译运行了。IJ并没有像dev一样的一键运行,但是如果做oj题的话还是比较方便的,直接右击左边项目列表的该.java文件选择Run 'Main.main()'(快捷键Ctrl + Shift +F10)就可以在屏幕下方的运行窗口里得到运行结果并输入数据进行验证。


<img src = “startjava/runa+b.png”, height=130>

某捷列傻可是等了半天的黑框框的

开始编程

基本工作都做好了以后可以开始学习一点基础的语法应付oj了,大佬们推荐了Thinking in Java这本书(可以下载到pdf),比较适合系统学习Java,但是萌捷列夫的ddl迫在眉睫,所以只能采用简易一点的菜鸟教程

Java的语法总体与C语言是比较相似的,而且默认本教程读者已有一定的C/C++编程基础,萌捷列夫在学的时候大致按照和C一样放心使用和C不一样了两大类进行了整理,以供参考

时间原因暂时不能贴出比较简洁易懂的示例代码,可以参考上文的菜鸟教程中的代码,本文最后也会贴出本次OJ所有题的题解代码以供参考。

头文件

写C程序的时候,第一件事肯定是#inlcude<xxxx>,在Java里也需要头文件,但稍有区别。

Java中的头文件分为packageimport两类。package语句用于表示一个类定义在某个包中,包主要用来对类和接口进行分类。当开发Java程序时,可能编写成百上千的类,因此很有必要对类和接口进行分类。这个我们写oj暂时用不到我就先晾这儿了。

import语句的作用类似于C的inlcude,用来提供一个合理的路径,使编译器可以找到某个类。poj的a+b程序源码中有

import java.io.*;

就是用于让命令编译器载入java_installation/java/io路径下的所有类,从名称可以看出这些类与输入输出有关。
特别地,IJ提供自动补全import语句的功能,萌捷列夫在手动赋值a+b源码的时候IJ自动将POJ上的import替换为了

import java.util.Scanner;

一样可以正常运行。

头文件命名要遵循的规范:

  • 如果一个类定义在某个包中,那么package语句应该在源文件的首行
  • 如果源文件包含import语句,那么应该放在package语句和类定义之间。如果没有package语句,那么import语句应该在源文件中最前面
  • import语句和package语句对源文件中定义的所有类都有效。在同一源文件中,不能给不同的类不同的包声明

各种声明

写C的时候敲完所有头文件,差不多就该int main()了,(当然还有全局变量和函数声明),Java也有类似的主方法入口

public static void main(String []args)

所有Java程序都是从这个入口开始执行的。

Java里也有变量的概念,但声明不是从变量开始的,而是从类开始的,充分贯彻了OOP的思想。类声明类似于用C++进行OOP编程,有publicprivate之别,还有其他一些特殊的类,写oj暂时用不到。类中可以定义变量和方法。

类与对象

类的声明遵循以下规范:

  • 一个源文件中只能有一个public类
  • 一个源文件可以有多个非public类
  • 源文件的名称应该和public类的类名保持一致。例如:源文件中public类的类名是Employee,那么源文件应该命名为Employee.java

同C++一样,类也可以添加不同的访问修饰词

  • public:表示公开的类和变量,既所有的类都可以引入使用的
  • protected:表示受保护的类,只有子孙类和本类可以引入使用
  • private:表示私人的,只有在本类中可以引入使用
  • 啥都不加(默认):表示同包中和本类中可以引入使用。

定义了类之后可以使用new关键字创建属于这个类的对象。对象是类的实例化,大致需要以下三步:

  • 声明:声明一个对象,包括对象名称和对象类型。
  • 实例化:使用关键字new来创建一个对象。
  • 初始化:使用new创建对象时,会调用构造方法初始化对象。

变量

Java中的变量有三种:

  • 局部变量: 定义在方法、构造方法或者语句块之中,变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。例如循环变量i
  • 成员变量: 定义在类中、方法体之外,表示类的某种属性,在创建对象的时候实例化。成员变量可以被类中方法、构造方法和特定类的语句块访问,例如人的身高、体重数据
  • 类变量:声明在类中、方法体之外,但必须声明为static类型,为属于该类的所有对象所共有,不会因为对象的个体差异而改变。例如Student类中可以定义一个类变量n来统计学生的总人数,不会因为是不同的学生而不同。

数据类型

Java的内置数据类型基本同C,char,short,int,long,float,double,boolean都可以放心使用,默认值都是相应类型下的0。相比于C多出来一个byte,表示8位、有符号的,以二进制补码表示的整数。

Java还有一类引用数据类型变量,类似于C的指针,引用类型指向一个对象,指向对象的变量是引用变量。这些变量在声明时被指定为一个特定的类型,比如 Employee、Puppy 等。变量一旦声明后,类型就不能被改变了。对象、数组都是引用数据类型,所有引用类型的默认值都是null。一个引用变量可以用来引用任何与之兼容的类型。e.g.Site site = new Site("Runoob")

方法

构造方法:每个类都需要一个构造方法。如果没有显示定义,编译器会提供一个默认构造方法(这点同C)。在创建一个对象的时候,至少要调用一个构造方法。构造方法的名称必须与类同名,一个类可以有多个构造方法

输入

声明完乱七八糟一堆东西之后,一般会从输入入手。Java输入需要调用Scanner这个类,包含在“头文件”import java.util.Scanner中。

先要创建Scanner对象

Scanner cin = new Scanner(System.in)

读入整数,其中nextInt()是指输入中的下一个整数,类似的也可以有空白的next()

int a = cin.nextInt();

Java命名规范

首先,切记:Java是大小写敏感的

  • 类名:对于所有的类来说,类名的首字母应该大写。如果类名由若干单词组成,那么每个单词的首字母应该大写,例如 MyFirstJavaClass

  • 方法名:所有的方法名都应该以小写字母开头。如果方法名含有若干单词,则后面的每个单词首字母大写,例如myFirstJavaMethod

  • 源文件名:源文件名必须和类名相同。当保存文件的时候,你应该使用类名作为文件名保存(切记Java是大小写敏感的),文件名的后缀为.java(如果文件名和类名不相同则会导致编译错误)

Java所有的组成部分都需要名字,类名、变量名以及方法名都被称为标识符。标识符的命名规范与C/C++基本相同(不同之处已标出):

  • 所有的标识符都应该以字母(A-Z或者a-z),美元符($)、或者下划线(_)开始
  • 首字符之后可以是字母(A-Z或者a-z),美元符($)、下划线(_)或数字的任何字符组合
  • 关键字不能用作标识符
  • 标识符是大小写敏感的
  • 合法标识符举例:age、$salary、_value、__1_value
  • 非法标识符举例:123abc、-salary

相关整理

和C一样放心使用

  • 注释语法
  • 枚举语法enum
  • 变量类型,如int,string,void

和C不一样了

  • 没有指针大快人心哈哈哈哈
CATALOG
  1. 1. 准备工作
    1. 1.1. 下载安装IDE
    2. 1.2. 创建新项目
    3. 1.3. 编译运行
  2. 2. 开始编程
    1. 2.1. 头文件
    2. 2.2. 各种声明
    3. 2.3. 类与对象
    4. 2.4. 变量
    5. 2.5. 数据类型
    6. 2.6. 方法
    7. 2.7. 输入
    8. 2.8. Java命名规范
  3. 3. 相关整理
    1. 3.1. 和C一样放心使用
    2. 3.2. 和C不一样了