Java程序的基本规则
- Java类(文件)是Java程序的最小单位,代码写在Java类文件里,一个Java项目包含若干个文件
- Java类的文件名要跟类名一致,类名首字母要大写,使用驼峰命名法(如:HelloFisher),扩展名是.Java
- main方法是Java程序运行的入口,main方法的名称,参数,前面的修饰符都是固定的
- 每条(行)语句以分号结束
- 方法名,变量名,属性名都是以小写字母开头,也是使用驼峰命名方式
Java程序的组成成分
分隔符
-
; 分号 语句结束的标志
-
{} 大括号 成对出现,用在类、方法、判断和循环语句。把多条语句作为一个整体(代码块)
-
() 小括号 用于方法的定义和调用,以及运算表达式的优先级
-
[] 方括号 用于数组,通常在数组名字之后出现
-
. 圆点 用于对象的属性或方法的调用
-
“” 双引号 用于字符串
-
‘’ 单引号 用于字符
-
空格 用于分割标识符以及关键字
标识符
标识符就是类、方法、属性、变量的名称。
命名规则:
- 必须以字母、下划线(_)、美元符号($)开头
- 除首字母之外可以用字母和数字以及下划线和美元符号
- 不能跟关键字重名
- 区分大小写
- 不建议使用中文
关键字
Java中一些表示特定意义的单词叫关键字,Java的有如下关键字:
访问控制 | 类、接口、方法、变量、代码块修饰符 | 程序控制 | 错误处理 | 基本类型 | 变量引用 | 包相关 | 保留字 |
---|---|---|---|---|---|---|---|
private | class | for | try | boolean | new | import | goto |
protected | abstract(抽象) | break | catch | byte | super | package | const |
default(缺省) | extends(继承父类) | continue | finally | char | this | ||
public | implements(实现接口) | do | throw | short | void | ||
interface(接口) | while | throws | int | null | |||
fine | if | long | true | ||||
strictfp | else | float | false | ||||
static(静态) | switch | double | |||||
synchronized(锁) | case | ||||||
transient(序列化) | default | ||||||
volatile | instanceof | ||||||
native | return | ||||||
enum | assert |
注释
注释是代码中用于帮助程序员理解或者记忆代码的内容;暂时不用的代码也可以注释掉。
注意 :注释的内容会被编译器忽略
单行注释
以//开头, 一般用于单个语句的注释
快捷键: Ctrl + /
多行注释
以/* 开头,*/ 结束。 用于注释多行内容
快捷键: Ctrl + Shift + /
文档注释
以/** 开头, */结束。 用于类,方法,它能导出为API文档
快捷输入方式: 输入/**, 然后回车
**注意:**文档注释可以生成API文档
JDK API文档地址:
官方英文: https://docs.oracle.com/javase/8/docs/api/
中文: https://tool.oschina.net/apidocs/apidoc?api=jdk-zh
IDEA生成API文档
- IDEA导出文档注释为API文档
-
创建一个目录存放API文档。
-
点击tools -> generate JavaDoc…
-
设置
-
点击ok, 导出文档
变量
方便访问内存中的数据而起的一个程序员容易记忆和理解的一个名字。
定义变量
语法: 类型 变量名;
类型 变量名 = 初始化的值;
类型 变量名, 变量名;
String stuName = "张三"; //=是赋值的意思, 把张三字符串赋给stuName这个变量
int stuAge = 22;
int i; //定义变量,不赋值(没有初始化)
int m, n;//一次定义多个变量,用逗号分割,多个变量必须是相同类型
int a = 3, b = 2; //一次定义多个变量,也可以在定义的同时赋值
变量初始化
可以在定义变量的时候初始化,也可以先定义再初始化
变量的赋值和使用
System.out.println("学生的姓名:" + stuName); //+字符串的拼接
System.out.println("学生的年龄:" + stuAge); //字符串和数字相加,也是拼接
System.out.println(i + j); //两个数字相加, 是加法运算
int k;
k = i; //给变量赋值可以用另外一个变量
k = 3 + 2; //变量赋值还可以用表达式
k = i - j; //变量赋值可以变量参与的表达式
System.out.println(k); //-2, int类型叫整形, 包括正整数,0, 负整数
注意
-
同一个作用域不能重复定义变量
int i; //定义变量,不赋值(没有初始化) i = 8; //在同一个作用域(同一个大括号内)不能重复定义同名的变量 // int i = 5;
-
变量在使用前必须初始化(赋值)
int c; //变量在使用前必须要先初始化(赋值) // System.out.println(c);
练习:判断以下变量命名是否合法
int 123; //错误,变量不能用数字开头
int _123; //正确, 以下划线开头
int $abc; //正确,$开头
int _$; //正确, 不推荐,没有意义
int _; //正确, 不推荐,没有意义
int $; //正确, 不推荐,没有意义
int abc_123; //正确
int a$1; //正确
int _#$%; //错误, 变量不能包含除_ , $之外的其他特殊符号
int 朝天门; //正确,语法没有问题,但是不推荐
int StuName; //正确, 但是不符合命名规范,应改为stuName
int stuname; //正确, 不符合命名规范,应该改为stuName;
Java基本数据类型
整型
-
byte 字节型
1个字节==8位,由于符号位占一位,取值范围-272<sup>7</sup>-1(-128127)
-
short 短整型
2个字节==16位,符号占一位,-2152<sup>15</sup>-1(-3276832767)
-
int 整型
4个字节==32位,符号占一位,-2312<sup>31</sup>-1(-21474836482147483647)
-
long 长整型
8个字节==64位,符号占一位,-264~264-1,19位的十进制
对于long类型的变量赋值时超过了int范围时需要在末尾加一个L(l),未超过是可以不加
System.currentTimeMillis();//返回当前的13位时间戳,是long类型,以毫秒为单位(从1970.1.1 0时开始)
浮点型
-
float
4个字节==32位
-
double
8个字节==64位
对float赋值时,浮点型的值默认为double类型,需要加一个F(f),Java里的浮点运算可能会损失精度,(结果不准确),在实际开发中如果需要小数运算(比如财务系统),建议使用BigDecimal
字符型
-
char
2个字节==16位
字符用十六位的Unicode编码,所以可以表示各国语言汉字
字符的表示方式:
-
字符用单引号括起来
-
用Unicode编码,格式’\uxxx’,中文汉字在’\u4E00’~‘\u9FA5’
-
用转义符(“\”)表示特殊字符
\ 斜杠 \n 换行 \t 制表符 \r 回车 \’ 单引号 \" 双引号 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("\\"); // 反斜杠
**注意:**一个TAB键(制表符)相对于4个人空格
-
用数字来表示字符
常见的英文字符都对应一个数字编码(ASCII码),所以可以用数字给char类型赋值
-
布尔型(boolean)
-
boolean
1位,只有两种值:true和false,不能用数字给boolean类型赋值,boolean类型一般用于判断或循环语句判断
**注意:**给整数赋值可以用八进制,十进制,十六进制
八进制以数字0开头
十进制没有变化
十六进制以数字0和字符x组合成0x开头
基本类型相互转换
自动转换
- char不能自动转换为short
- byte不能自动转换为
- 任何的基本类型都可以跟字符串进行拼接
byte by1 = 10;
short s1 = by1; //by1自动转换为short, 赋给s1变量
int i1 = s1; //自动转换short为int
System.out.println(i1);
char c1 = 'a';
i1 = c1; //自动转char为int
System.out.println(i1);
long l1 = i1; //自动转换int为long
System.out.println(l1);
float f1 = l1; //自动转换long为float
System.out.println(f1);//结果为:97.0
double d1 = f1; //自动转换float为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) i2;
byte b2 = (byte) s2;
int i3 = 168;
//超过目标类型范围的强制类型转换要谨慎,可能出现不可预知的结果
byte b3 = (byte) i3;
System.out.println(b3);//结果是 -88
控制台输入内容
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);
out.println(b3);//结果是 -88
# 控制台输入内容
```java
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);