基础说明

Java是面向对象的语言,它与c++不同的是,其程序的基本单位就是类(class),并且Java可通过Java虚拟机(JVM)实现跨平台,即在多个操作系统上运行

在安装java环境时,需要安装两部分内容,即JDK和JRE:

JRE——java程序的运行环境,包括JVM和运行时所需要的的核心类库,只要安装JRE就能够运行Java程序

JDK——java程序的开发工具包,包含JRE和开发人员使用的工具,其中开发工具指编译工具(javac.exe)和运行工具(java.exe)

常用DOS命令

切换盘符——盘符:

查看当前目录下所有文件——dir

进入指定文件夹——cd 文件夹名

多级进入——cd 文件夹与当前位置的相对路径

返回上级目录——cd ..

多级回退(直接回到根目录)——cd \

清空命令记录——cls

退出cmd——exit

使用过的命令间切换——上下箭头

环境配置

在未进行环境配置时,需要进入javac或java的路径下,才能够使用javac.exe和java.exe,为了方便使用,需要配置环境变量

1.下载并安装JDK,建议开发工具和JRE安装放置同一文件夹下

2.计算机-右键菜单-左侧高级系统设置-环境变量中,在下方系统变量内创建

JAVA_HOME——填写JDK文件夹内部绝对路径(如:D:/Java/Jdk)

CLASSPATH——填写下列内容(注:不能忘记开头的点和每个目录和目录下文件名后的分号)

.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;

找到系统变量的Path——新建以下内容(这里末尾没有分号)

%JAVA_HOME%\bin

以上Java环境变量配置完成,重新打开cmd(在配置完成之前打开的cmd窗口可能仍旧报错),并在cmd中输入java和javac出现对应命令使用方法说明则配置成功

HelloWorld程序

public class HelloWorld {
/* 第一个Java程序
* 它将输出字符串 Hello World
*/
public static void main(String[] args) {
System.out.println("Hello World"); // 输出 Hello World
}
}

以上程序的文件名必须为HelloWorld,与类名相同

在cmd中进入目标文件所在位置,并输入javac HelloWorld.java,即可编译得到同目录下后缀名为.class的同名文件,再输入java HelloWorld(这里没有后缀名),即可运行该程序

对以上Hello World的入口说明(即方法/函数创建):

1

标识符定义

【包含类名、变量名以及方法名】

  • 应以字母,$,或下划线开头,字符组合也只能在前三种的基础上添加数字
  • 关键字不能用作标识符,且标识符区分大小写

关键字

类别 关键字
private 私有的
protected 受保护的
public 公共的
default 默认
abstract 声明抽象
class
extends 扩充,继承
final 最终值,不可改变的
implements 实现(接口)
interface 接口
native 本地,原生方法(非 Java 实现)
new 新,创建
static 静态
strictfp 严格,精准
synchronized 线程,同步
transient 短暂
volatile 易失
break 跳出循环
case 定义一个值以供 switch 选择
continue 继续
default 默认
do 运行
else 否则
for 循环
if 如果
instanceof 实例
return 返回
switch 根据值选择执行
while 循环
assert 断言表达式是否为真
catch 捕捉异常
finally 有没有异常都执行
throw 抛出一个异常对象
throws 声明一个异常可能被抛出
try 捕获异常
import 引入
package
boolean 布尔型
byte 字节型
char 字符型
double 双精度浮点
float 单精度浮点
int 整型
long 长整型
short 短整型
super 父类,超类
this 本类
void 无返回值
goto 是关键字,但不能使用
const 是关键字,但不能使用
null

基本数据类型

2

java的基本数据类型中新增了byte,short,long三种整数形式,分别占用1个字节,2个字节,8个字节,c++中的bool类型写作boolean,仍然只有true和false两个值,默认的整数为int类型,浮点数为double类型

在使用long类型时,为了防止整数过大,后面要加L,如:100000000L

在使用false类型时,为了防止类型不兼容,后面要加F,如3.14F

命名规范

  • 大小写敏感:Java和c#一样区分大小写,使用时必须确保大小写完全一致
  • 类名:类名首字母应该大写,由多个单词组成时,每个单词首字母大写
  • 方法名:方法名以小写字母开头,由多个单词组成时,后面的每个单词首字母大写
  • 源文件名:源文件名必须和类名相同,文件名后缀为.java
  • 主方法入口:(类似c#中的main函数)程序由public static void main(String[] args) 开始执行

字符和字符串的“+”操作

字符的“+”操作是字符对应的编码进行加减

字符串的“+”操作是前后两者的拼接,如果有连续“+”操作,从左到右依次进行“+”操作

例如:

“字符串”+10——输出得到——字符串10

“字符串”+10+20——输出得到——字符串1020

10+20+“字符串”——输出得到——30字符串

运算符

基本逻辑运算符

符号 作用
& 前后同时满足为true,否则为false
| 前后同时不满足为false,否则为true
^ 前后关系式的值不相等时为true,相等时为false
! 结果和关系式正好相反

短路逻辑运算符

符号 作用
&& 与&相同,但有短路效果,即前者为false时整个表达式为false,且不执行后者
|| 与|相同,但有短路效果,即前者为true时整个表达式为true,且不执行后者

三元运算符

关系表达式?表达式1:表达式2

  1. 计算关系表达式的值
  2. 如果为true,则表达式1的值为该语句的值
  3. 如果为false,则表达式2的值为该语句的值

基础语句

用Scanner输入

  1. 导入scanner包:import java.util.Scanner;
  2. 创建对象:Scanner 变量名1=new Scanner(System.in);
  3. 接受数据:int 变量名2=变量名1.nextInt();

Scanner从键盘接受不同类型数据的方法:

接收数据 方法
int类型 nextInt()
long类型 nextLong()
float类型 nextFloat()
double类型 nextDouble()
String类型 nextLine()/next()
boolean类型 nextBoolean()

上表中没有接收字符数据的方法,要想接受字符数据可以采用以下方法:

import java.util.Scanner;
Scanner sc=new Scanner(System.in);
System.out.println("请输入数据:");
String str=sc.next();
char ch=str.charAt(0);
System.out.println(ch);

用System.in输入

1.导包:import java.io.*;

2.构造 BufferedReader类对象,它附属于标准输入流System.in:BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

3.添加抛出声明或用try/catch包围

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str=null;
while(true){
try{
str=br.readLine();
}catch(IOException e){
e.printStackTrace();
}
if(str.equals("END"))break;
System.out.print(str);
}

  1. read方法:读取单个字符。 返回:作为一个整数(其范围从 0 到 65535 (0x00-0xffff))读入的字符,如果已到达流末尾,则返回 -1
  2. readLine方法:读取一个文本行。通过下列字符之一即可认为某行已终止:换行 (‘\n’)、回车 (‘\r’) 或回车后直接跟着换行。 返回:包含该行内容的字符串,不包含任何行终止符,如果已到达流末尾,则返回 null

输出

Java c++ 含义
System.out.println(“x = “ +x); cout<<”x = “<<x<<endl; 输出变量x的值并换行
System.out.print(“x = “ +x); cout<<”x = “<<x; 输出变量x的值,不换行
System.out.printf(“x = %d”,x); printf(“x = %d”,x); 以格式化文本和参数列表输出,不换行

random的使用

导入包:import java.util.Random;

创建对象:Random 变量名=new Random();

获取随机数:int number=r.nextInt(范围上限);——获得的随机数在0~上限之间,包括0,不包括上限

数组

定义格式

  • 数据类型[ ] 变量名——int[ ] arr 【常用】
  • 数据类型 变量名[ ]——int arr[ ]

初始化

Java中数组必须先初始化才能使用,分动态初始化和静态初始化

动态初始化

初始化时只指定数组长度,由系统为数组分配初始值

数据类型[ ] 变量名 =new 数据类型[数组长度];
如:int[] arr=new int[10];

静态初始化

初始化时指定每个数组元素的初始值,由系统决定数组长度

数据类型[ ] 变量名 =new 数据类型[ ]{数据1,数据2,数据3,……};
如:int[] arr=new int[]{1,2,3};
简化写作:数据类型[ ] 变量名={数据1,数据2,数据3,……};

方法(函数)

定义

访问权限 关键字 返回类型 方法名(参数表){方法体}
如:public static void main(String[] args){}

其中public为访问权限修饰符,如下:

访问权限 子类 其他包 说明
public 对任何人都是可用的
protect × 继承的类可以访问以及和private一样的权限
default × × 包访问权限,即在整个包内均可被访问
private × × × 除类型创建者和类型的内部方法之外的任何人都不能访问的元素

重载

方法重载指同一个类中,定义的多个方法之间的关系,需要满足下列条件:

  • 多个方法在同一个类中
  • 多个方法具有相同的方法名
  • 多个方法的参数不同,即参数类型不同或参数数量不同

方法重载的特点:

  • 重载仅对应方法的定义,和方法调用无关
  • 重载仅针对同一个类中方法的名称和参数进行识别,和返回值无关,即返回值不同是不构成重载的