Java程序的基本规则
- Java的类(文件)是Java程序的最小单位,代码写在Java类文件里,一个Java项目往往包含若干个类文件
- Java类的文件名要跟类名一致,类名首字母要大写,使用驼峰命名法(例如:HelloFisher),拓展名是.java
- main方法是Java程序运行的入口,main方法的名称,参数,前面的修饰符都是固定的
- 每条(行)语句以分号结束
- 方法名,变量名,属性名都是以小写字母开头,也是使用驼峰命名法
Java程序的组成成分
分隔符号
- “;”,分号,语句结束的标志
- “{}”,大括号,成对出现,用在类,方法,判断和循环语句,把多条语句作为一个整体(代码块)
- “()”,小括号,用于方法的定义和调用,以及运算表达式的优先级
- “[]“,方括号,用于数组,通常在数组名字之后出现
- “.”,点,对属性或方法进行调用,方法后有“()”
- ““””,双引号,字符串的标志
- “‘’”,单引号,用于字符
- “ ”,空格,用于分隔标识符和关键字
标识符
标识符:类,方法,属性,变量的统称。
命名的规则:
- 必须以字母,下划线,美元符号开头;
- 除首字母外可以用字母,数字,下划线以及美元符号;
- 标识符不能是标识符;
- 区分大小写;
- 不建议使用中文
关键字
Java中的一些表示特定意义的单词称为关键字,如下:
关键字 | 含义 |
---|---|
abstract | 表明类或者成员方法具有抽象属性 |
assert | 断言,用来进行程序调试 |
boolean | 基本数据类型之一,声明布尔类型的关键字 |
break | 提前跳出一个块 |
byte | 基本数据类型之一,字节类型 |
case | 用在switch语句之中,表示其中的一个分支 |
catch | 用在异常处理中,用来捕捉异常 |
char | 基本数据类型之一,字符类型 |
class | 声明一个类 |
const | 保留关键字,没有具体含义 |
continue | 回到一个块的开始处 |
default | 默认,例如,用在switch语句中,表明一个默认的分支 |
do | 用在do-while循环结构中 |
double | 基本数据类型之一,双精度浮点数类型 |
else | 用在条件语句中,表明当条件不成立时的分支 |
enum | 枚举 |
extends | 表明一个类型是另一个类型的子类型,这里常见的类型有类和接口 |
final | 用来说明最终属性,表明一个类不能派生出子类,或者成员方法不能被覆盖,或者成员域的值不能被改变,用来定义常量 |
finally | 用于处理异常情况,用来声明一个基本肯定会被执行到的语句块 |
float | 基本数据类型之一,单精度浮点数类型 |
for | 一种循环结构的引导词 |
goto | 保留关键字,没有具体含义 |
if | 条件语句的引导词 |
implements | 表明一个类实现了给定的接口 |
import | 表明要访问指定的类或包 |
instanceof | 用来测试一个对象是否是指定类型的实例对象 |
int | 基本数据类型之一,整数类型 |
interface | 接口 |
long | 基本数据类型之一,长整数类型 |
native | 用来声明一个方法是由与计算机相关的语言(如C/C++/FORTRAN语言)实现的 |
new | 用来创建新实例对象 |
package | 包 |
private | 一种访问控制方式:私用模式 |
protected | 一种访问控制方式:保护模式 |
public | 一种访问控制方式:共用模式 |
return | 从成员方法中返回数据 |
short | 基本数据类型之一,短整数类型 |
static | 表明具有静态属性 |
strictfp | 用来声明FP_strict(单精度或双精度浮点数)表达式遵循IEEE 754算术规范 |
super | 表明当前对象的父类型的引用或者父类型的构造方法 |
switch | 分支语句结构的引导词 |
synchronized | 表明一段代码需要同步执行 |
this | 指向当前实例对象的引用 |
throw | 抛出一个异常 |
throws | 声明在当前定义的成员方法中所有需要抛出的异常 |
transient | 声明不用序列化的成员域 |
try | 尝试一个可能抛出异常的程序块 |
void | 声明当前成员方法没有返回值 |
volatile | 表明两个或者多个变量必须同步地发生变化 |
while | 用在循环结构中 |
注释
作用:代码中用于帮助程序员理解代码的内容,也可用来储存暂时不需要用到的代码。
注意:注释的内容会被编译器忽视。
单行注释
//…
以“//”开头,一般用于对单行代码进行解释
快捷键:Ctrl + /
System.out.println("Hello CQ");//每个语句以分号结束
多行注释
/* … */
以/* 开头,以*/结束,用于多行语句的注释
快捷键:Ctrl + Shift + /
/*System.out.println("Hello aa");
System.out.println("Hello bb");
System.out.println("Hello cc");
System.out.println("Hello dd");*/
文档注释
以/**开头,以 */结尾。用于类,方法,它能导出API文档
快捷方式:输入/**,回车
JDK API文档地址:
英文地址:https://docs.oracle.com/javase/8/docs/api/
中文地址:https://tool.oschina.net/apidocs/apidoc?api=jdk-zh
/**
* 学习Java的第一个类
*/
public class Hello {
/**
* 启动方法
* @param args
*/
public static void main(String[] args) {
System.out.println("Hello CQ");
}
}
IDEA导出文档注释为API文档
变量
方便访问内存中的数据而起的一个程序员容易理解和记忆的一个名字。
String stuName="张三";//变量的定义,“=”是赋值的意思,把字符串张三赋值给变量stuName
定义变量
语法:类型 变量名;
类型 变量名=初始化的值;
int i;//定义变量,没有初始化
i=8;//给变量i赋值
int j=10;//定义变量同时初始化
变量初始化
可以在定义变量的时候初始化,也可以先定义变量,再初始化
变量的赋值和使用
System.out.println("学生的姓名:" + stuName);//“+”的作用是连接两个字符串
System.out.println("学生的年龄:" + stuAge);//"+"连接字符串和数字
System.out.println(i+j);//"+"对两个数字进行的是加法运算
int k;
k=i;//将变量i的值赋值给k
k=2+3;//变量赋值可以是表达式的形式
k=i-j;//变量赋值也可以是变量组成的表达式
int m,n;//可以同时定义多个变量,用“,”隔开,变量的类型必须一致
int a=3,b=2;//可以在定义的同时赋值
注意事项
- 在同一个作用域不能定义两个相同的变量
//在同一个作用域不能定义两个相同的变量,例如:
int c=1;
int c=2;
- 变量在使用前必须要初始化
//变量在使用前必须要初始化
int d;
System.out.println(d);
练习:判断以下变量命名是否正确
int 123;//定义错误
int _123;//定义正确
int $;//正确,但是没有意义,不推荐
int _;//正确,但是没有意义,不推荐
int _#$%;//定义错误,字符串不能包含除“_”,“$”之外的特殊符号
int 朝天门;//正确,但是不推荐使用
int StuName;//正确,但是不符合规范,应改为stuName
int stuname;//正确,但是不符合规范,应改为stuName
Java的八种基本数据类型
整形
- byte:一个字节长度,取值范围为:-27–27-1 (-128~127)
byte b1=10;
System.out.println(b1);
byte b2=-129;//超过byte范围,编译异常
byte b2=128;//超过byte范围,编译异常
- short:两个字节长度,取值范围为:-215–215-1 (-32769~32768)
short s1=-100;
System.out.println(s1);
short s2=-32769;//超过范围,编译异常
short s3=32768;//超过范围,编译异常
-
int:四个字节长度,取值范围为:-231–231-1 (-2147483648~2147483647)
-
long:占八个字节长度,取值范围为:-263–263-1 ,19位的十进制数
注意:给long类型变量赋值,数字后面要加L
//long类型的使用
long l1=100;
System.out.println(l1);
long l2=2147483648L;//给long赋值时,如果数字超过int范围,必须要在数字后加上L,不然程序默认是int类型,会报错
System.out.println(l2);
//当前时间的时间戳(相当于现在距1970.1.1 0时过去了多少秒)
System.out.println(System.currentTimeMillis());
注意:给整数赋值可以用十进制,八进制,十六进制进行赋值
//java里面可以用十进制,八进制,十六进制的数字给整形赋值
int n=100;//输出100,十进制赋值
System.out.printSystem.out.println(n);
ln(n);
n=0144;//输出100,八进制赋值,以0开头
System.out.println(n);
n=0x64;//输出100,八进制赋值,以0x开头
System.out.println(n);
浮点型(小数)
- float:占4个字节
//float类型的使用
float f1=3.1415F;//java里面直接写一个小数,默认是double类型
System.out.println(f1);
float f2=2.5F;
System.out.println(f1*f2);
- double:占8个字节
//double类型的使用
double d1=3.1415;
System.out.println(d1);
注意:java里面浮点数运算可能会损失精度(结果不精确),在实际运算中如果用到小数运算(例如财务系统)建议使用BigDecimal。
字符类型(char)
字符用16位的unicode编码,所以可以表示各国语言文字,字符用单引号括起来。
字符的表示方式:
- 字符用单引号括起来;
- 用unicode编码,格式’\uxxxx’。中文汉字在unicode中的范围4E00~9FA5
- 用转义符表示特殊字符
\" | 双引号 |
---|---|
\’ | 单引号 |
\n | 换行 |
\r | 回车 |
\t | 制表符 |
\\ | 反斜杠 |
//字符的使用
char c1='a';
System.out.println(c1);
char c2='中';//因为是使用unicode,所以能表示任何语言的字符
System.out.println(c2);
char c3='\u4E01';//用unicode的方式描述一个字符
System.out.println(c3);
System.out.println("某某说:\"你好\"。");
System.out.println("\n");//换行
System.out.println("\r");//回车
System.out.println("\t");//制表符(一个Tab键空出来的位置,即4个空格)
System.out.println("\'");//单引号
System.out.println("\\");//反斜杠
- 用数字来表示字符
char a=97;//常见的英文字符都对应一个数字编码,所以可以用数字给char类型赋值
System.out.println(a);
ASCII码规定每个字符对应的数字:
可显示字符:可显示字符编号范围是32-126(0x20-0x7E),共95个字符。
控制字符:ASCII控制字符的编号范围是0-31和127(0x00-0x1F和0x7F),共33个字符。
布尔类型(boolean)
占1位长度,只有两种值:true和false,不能用数字给boolean类型赋值。
布尔类型一般用于判断或循环语句判断条件
//boolean类型的使用
boolean b2=true;
boolean b3=false;
System.out.println(b2);
System.out.println(b3);
基本类型相互转换
自动转换
- char不能自动转换为short
- byte不能自动转换为char
- 任何的基本类型都可以跟字符串进行拼接
package com.hqyj;
public class TypeConvert {
public static void main(String[] args) {
byte by1=10;
short s1=by1;//by1自动转换为short,赋值给s1
int i1=s1;//s1自动转换为int类型
System.out.println(i1);
char c1='a';
i1=c1;//c1自动转换为int类型
System.out.println(i1);
long l1=i1;//c1自动转换为long类型
System.out.println(l1);
float f1=l1;//i1自动转换为float类型
System.out.println(f1);
double d1=f1;//f1自动转换为double类型
System.out.println(d1);
}
}
强制转换
- 长度大的数据类型转小的类型不能自动转换,要用强制转换
- 小数转整数,会去掉小数
- 如果强制转换超过类型所能表示的范围,可能会出现不可预知的结果
//强制类型转换
double d2=3.14;
float f2= (float) d2;//变量前面加上一对小括号,小括号里面是一个类型,这就是强制类型转换
System.out.println(f2);
long l2= (long) f2;//浮点型强制转换成整数,直接去掉小数部分
System.out.println(l2);
int i2= (int) l2;
char c2= (char) i2;
System.out.println(c2);
short s2= (short) c2;
byte b2= (byte) s2;
int i3=168;
byte b3= (byte) i3;//超过目标类型范围的强制类型转换要谨慎,可能会出现不可预知的结果
System.out.println(b3);//结果为-88
控制台输入
package com.hqyj;
import java.util.Scanner;
public class Input {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("请输入一个字符串:");
String s=scanner.next();//等待用户从控制台输入字符串
System.out.println(s);
System.out.println("请输入一个整数:");
int i=scanner.nextInt();//等待用户从控制台输入整数
System.out.println(i);
}
}
废物的一天到这里就结束了…