文章目录
笔记教程来源于BiliBili UP主:遇见狂神说。
Java基础语法
1. Java程序的简单认识
public class Hello { //Hello是类名
static final String NAME = "张三"; //static final 是修饰符,String是数据类型,这里的NAME是常量名
public static void main(String[] args) { //这一行是程序的入口,相当于程序从这里开始执行
int age = 10; //int是数据类型,age是变量名
//输出一个Hello World!
System.out.println("Hello World!");
System.out.println(NAME);
Hello hello = new Hello(); //实例化对象(后面有讲实例化是什么)
hello.helloWorld(); //实例化后的对象hello,调用helloWorld方法
}
public void helloWorld(){ //helloWorld()是方法名
System.out.println("hello");
}
}
2. 注释
注释分为三类:单行注释,多行注释,文档注释
单行注释
// 单行注释
多行注释:
/*
*/
文档注释:
/**
*/
3. 标识符
标识符对程序代码中的包、类、方法、参数、变量,起的一个名字,用来称呼这些内容。
标识符的规则:
- 标识符可以由大小写字母、数字、下划线、美元符号组成
- 不能以数字开头
- 不能包含空格特殊字符
- 不能是关键字
合法的标识符:
username
username123
_username
$username
非法的标识符:
123username //不能以数字开头
class //不能是关键字
Hello World //不能包含空格特殊字符
4. 关键字
java中的关键字是事先定义好并赋予一定的特殊含义的单词,也称作保留字。
abstract | assert | boolean | break | byte |
---|---|---|---|---|
case | catch | char | class | const |
continue | default | do | double | else |
enum | extends | final | finally | float |
for | goto | if | implements | import |
instanceof | int | interface | long | native |
new | package | private | protected | public |
return | strictfp | short | static | super |
switch | synchronized | this | throw | throws |
transient | try | void | volatile | while |
注意:以上表格内的单词不可以作为标识符(即包、类、方法、变量、参数名)!!!
5. 变量
变量:变量就是可以变化的量
Java是一种强类型语言,每个变量都必须提前声明类型
java变量是程序中最基本的存储单元,包括变量名,变量类型和作用域
注意事项:
- 每个变量都有类型,类型可以是基本数据类型,也可以是引用类型
- 变量名必须是合法的标识符
- 变量声明是一条完整的语句,因此每一个生命必须以分号结束!
变量声明格式
数据类型 变量名 = 值 ;
type varName = value ;
作用域
- 类变量:写在类里面,静态变量,定义变量时,数据类型前加static关键字,可以再任何方法使用
- 实例变量:写在类里面的变量,调用时需要先实例化对象,然利用对象调用变量
- 局部变量:写在方法里面的变量,可以直接在方法里面调用,需要先赋值
static int lei;//定义类变量
int shiLi;//定义实例变量
public static void main(String[] args) {
int juBu = 0;//定义局部变量
System.out.println(lei);//使用类变量
Demo08 demo08 = new Demo08();
System.out.println(demo08.shiLi);//使用实例变量
System.out.println(juBu);
}
6. 常量
常量:常量是一种特殊的变量,它的值被设定后,在程序运行期间不可以改变!
常量名一般用大写字符表示。
常量声明格式
final 数据类型 变量名 = 值 ;
final type varName = value ;
注意:final与static同时使用时,不区分前后顺序!
7. 常量与变量的声明规则
- 所有变量、方法、类名:言简意赅,见名知意!
- 类成员变量:首字母小写和驼峰原则:monthSalary
- 局部变量:首字母小写和驼峰原则
- 常量:大写字母和下划线:MAX_VALUE
- 类名:首字母大写和驼峰原则:Man,GoodMan
- 方法名:首字母小写和驼峰原则:run(),runRun()
8. 数据类型
基本数据类型
- byte:在内存中占1个字节,取值范围:-128~127,默认值:0
- short:在内存中占2个字节,取值范围:-32768~32767,默认值:0
- int:在内存中占4个字节,取值范围:-231~231-1即-2147483648~2147483647,默认值:0
- long:在内存中占8个字节,取值范围:-263~263-1,默认值:0即-9223372036854775808~9223372036854775807。long类型在数字最后要加L
- float:在内存中占4个字节。float类型在数字最后要加F,默认值:0.0
- double:在内存中占8个字节,默认值:0.0
- char:在内存中占2个字节。在计算机中,一个汉字占两个字节,默认值:’\u0000’
- boolean:在内存中占1位,仅有true与false两个值,默认值:false
//整数类型
byte num1 = 10; //在内存中占1个字节,取值范围:-128~127
short num2 = 200; //在内存中占2个字节,取值范围:-32768~32767
int num3 = 3000; //在内存中占4个字节,取值范围:-2^31~2^31-1
long num4 = 40000L; //在内存中占8个字节,取值范围:-2^63~2^63-1。long类型在数字最后要加L
//小数类型(浮点型)
float num5 = 3.1F; //在内存中占4个字节,在数字最后面要加F
double num6 = 4.6; //在内存中占8个字节
//字符类型
char z = '中'; //在内存中占2个字节,因为中国汉字两个字节才可以表示一个汉字
//布尔值类型
boolean flag = true;//在内存中占1位,只有true和false两个值
boolean flag2 = false;
引用数据类型
类 Class
接口 Interface
数组 Array
9. 类型转换
八大基本数据类型存在类型转换优先级,由低到高顺序分别是:
低 ---------------------------------------------------------------------> 高
byte , short , char --> int --> long --> float --> double
强制转换
强制转换:由 高 --> 低
int i = 127;//高
byte b = (byte) i;//低
//由高到低的强制转换,需要加 (数据类型)变量名
自动转换
自动转换:由 低 --> 高
byte b = 127;
int i = b;
//由低到高的自动转换,不需要加转换形式
类型转换注意事项
注意点:
-
不可以对布尔值类型(boolean)进行数据转换。
原因:boolean的单位是位( bit ),不是字节。
-
不能把对象类型转换为不相干的类型。
举例:可以将 苹果 转换成 香蕉 (水果类),但是不可以将 苹果 转换成 肉类
-
在高容量转换为低容量时,要进行强制转换。
-
转换的时候可能会有精度丢失,或内存溢出!
//内存溢出
int i = 128;
byte b = (byte) i;
System.out.println(i);//输出结果:128
System.out.println(b);//输出结果:-128,原因:byte范围是 -128~127
//精度丢失
int n1 = (int) 43.5;
int n2 = (int) -27.6f;
System.out.println(n1);//输出结果:43
System.out.println(n2);//输出结果:-27
10. 运算符
- 算术运算符:+,-,*,/,%,++,–
- 赋值运算符:=
- 关系运算符:>,<,>=,<=,==,!=,instanceof
- 逻辑运算符:&&,||,!
- 位运算符:&,|,^,~,>>,<<,>>>
- 条件运算符 ? :
- 扩展赋值运算符:+=,-=,、*=,/=
11. 包机制
为了方便快捷的组织类,Java提供给用户包机制,用于区别类名的命名空间。
包语句的语法格式为:
package pkg1.pkg2.pkg3....;
一般将公司域名倒置作为包名,比如百度:www.baidu.com,则百度的包名规范为:
package com.baidu.pkg1.pkg2.pkg3....;
为了可以使用某一个包的成员,我们需要在Java程序中明确导入该包。使用“import”语句可完成此功能。
import package1.package2.classname;//classname为具体的某一个类
import package1.package2.*;//*为通配符,代表导入package2下的所有类