Java基础-1
基础说明
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 { |
以上程序的文件名必须为HelloWorld,与类名相同
在cmd中进入目标文件所在位置,并输入javac HelloWorld.java,即可编译得到同目录下后缀名为.class的同名文件,再输入java HelloWorld(这里没有后缀名),即可运行该程序
对以上Hello World的入口说明(即方法/函数创建):
标识符定义
【包含类名、变量名以及方法名】
- 应以字母,$,或下划线开头,字符组合也只能在前三种的基础上添加数字
- 关键字不能用作标识符,且标识符区分大小写
关键字
类别 | 关键字 |
---|---|
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 | 空 |
基本数据类型
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
- 计算关系表达式的值
- 如果为true,则表达式1的值为该语句的值
- 如果为false,则表达式2的值为该语句的值
基础语句
用Scanner输入
- 导入scanner包:import java.util.Scanner;
- 创建对象:Scanner 变量名1=new Scanner(System.in);
- 接受数据:int 变量名2=变量名1.nextInt();
Scanner从键盘接受不同类型数据的方法:
接收数据 | 方法 |
---|---|
int类型 | nextInt() |
long类型 | nextLong() |
float类型 | nextFloat() |
double类型 | nextDouble() |
String类型 | nextLine()/next() |
boolean类型 | nextBoolean() |
上表中没有接收字符数据的方法,要想接受字符数据可以采用以下方法:
import java.util.Scanner; |
用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)); |
- read方法:读取单个字符。 返回:作为一个整数(其范围从 0 到 65535 (0x00-0xffff))读入的字符,如果已到达流末尾,则返回 -1
- 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 数据类型[数组长度]; |
静态初始化
初始化时指定每个数组元素的初始值,由系统决定数组长度
数据类型[ ] 变量名 =new 数据类型[ ]{数据1,数据2,数据3,……}; |
方法(函数)
定义
访问权限 关键字 返回类型 方法名(参数表){方法体} |
其中public为访问权限修饰符,如下:
访问权限 | 类 | 包 | 子类 | 其他包 | 说明 |
---|---|---|---|---|---|
public | ∨ | ∨ | ∨ | ∨ | 对任何人都是可用的 |
protect | ∨ | ∨ | ∨ | × | 继承的类可以访问以及和private一样的权限 |
default | ∨ | ∨ | × | × | 包访问权限,即在整个包内均可被访问 |
private | ∨ | × | × | × | 除类型创建者和类型的内部方法之外的任何人都不能访问的元素 |
重载
方法重载指同一个类中,定义的多个方法之间的关系,需要满足下列条件:
- 多个方法在同一个类中
- 多个方法具有相同的方法名
- 多个方法的参数不同,即参数类型不同或参数数量不同
方法重载的特点:
- 重载仅对应方法的定义,和方法调用无关
- 重载仅针对同一个类中方法的名称和参数进行识别,和返回值无关,即返回值不同是不构成重载的