JavaSE学习 Day3 - Java基础语法
Java基础语法
创建空项目
- 新建工程(工程内部可以是Java,也可以是Android,甚至是其他的文件类型)。点击empty project,创建空项目,填写项目名称,例如JavaSE,选择项目的位置。相当于新建了一个名为JavaSE的文件夹存放Java工程。
![image]()
- 增加Java模块。选择files-new-module-java,填写名称,例如基础语法。相当于在javaSE文件夹内部新建了一个名为基础语法的文件夹,存放工程文件。
- 修改项目结构。一定要执行,不然没法使用。files-project structure-project,选择对应的jdk和自己的Java版本
- 新建包 package。src-右键-新建-package。相当于在基础语法的文件夹内部新建了文件夹
- 在对应的包内新建类 class。右击-新建class。相当于在包文件夹内部新建class类,可以开始编写代码。
注释
书写注释是一个非常好的习惯。注释主要分为三种,单行注释、多行注释、文档注释。
- 单行注释
// - 多行注释(大段的文字说明)
/*
注释
*/ - 文档注释(里边可以加入参数描述、作者信息、方法说明等)
/**
*@deprecated
*@author
*/
标识符zhi
Java所有的组成部分都需要命名,那么这些类名、变量名以及方法名都被称为标识符。但是命名是有规则的,Java内部已经存在的关键词不能被重新定义。
标识符注意点:
- 所有的标识符都应该以字母(大小写)、美元符号、下划线开头
- 首字符之后可以是字母(大小写)、美元字符、下划线或者数字的任意字符组合
- 不能使用关键词作为变量名或者方法名
- 标识符是大小写敏感
- 可以用中文命名,但是一般不建议这样使用,也不建议用拼音
数据类型
Java属于强类型语言,要求变量的使用严格符合规定,所有变量必须先定义然后才能使用。Java安全性好,但是运行速度会受到影响。八大基本数据类型。

位、字节(8位)、KB(1024字节)、M(1024KB)
数据类型扩展
- 整数扩展
二进制、八进制、十进制、十六进制
Java不支持二进制的表示,只能通过String类进行表示
八进制 int x1 = 010; //八进制以0开头,010表示8
十进制 int x2 = 10;
十六进制 int x3 = 0x10; //十六进制以0x开头,0x10表示16
进制之间的转换可以使用对应的类方法 - 浮点数扩展
浮点数是有限的、离散的、存在舍入误差、接近但是不相等。因此要避免使用浮点数进行数值比较,可以使用BigDecimal类进行比较。 - 字符扩展
所有字符的本质还是数字,可以通过强制类型转换为数字
每一个字符在Unicode编码表中都对应一个数字,不过需要注意是Unicode编码采用十六进制,而数值转换输出的结果为十进制 - 转义字符
// \t表示制表符,\n表示换行
System.out.println("Hello\tWorld");
- boolean扩展
boolean flag = true;
//以下两行代码是一致的,下一行更加精简而已。if语句判断的时候,第一个结构分支默认为true
if(flag==true){}else{}
if(flag){}else{}
数据类型转换
由于Java是强数据类型语言,所以进行某些运算时,需要用到数据类型转换。
数据类型由低到高为byte、short、char→int→long→float→double(小数的优先级一定大于整数)
//数据类型由高到低需要进行强制类型转换 (类型名)变量名
int i1 = 128;
byte b1 = (byte)i1; //但b1不为128,因内存溢出,128超出了byte的范围
//数据类型由低到高会进行自动的数据类型转换
int i2 = 128;
double b1 = i2; //自动进行数据类型转换,b2为128.0
/**
1. 不能对布尔值进行类型转换
2. 不能把对象类型转换为不相干的类型(例如,String转int)
3. 高容量转换为低容量时,强制类型转换
4. 转换的时候可能存在内存溢出(129转换为byte类型时,内存溢出)或者精度问题(23.7转换为整数时,输出值为23)
*/
数据进行计算时,要注意内存溢出的问题
//操作比较大的数时,要注意内存溢出的问题
int money = 10_0000_0000; //JDK7的新特性,较大的数字可以用下划线进行分割,便于读数
int years = 20;
//错误的计算方式
int total1 = money*years; //计算的结果超出了int的范围,内存溢出
long total2 = money*years; //先计算,然后进行数据类型转换,计算结果本身存在内存溢出,造成结果依然不正确
//正确的操作,对乘数先进行数据类型转换,然后再进行相乘,结果以较大的数据类型为准
long total3 = money*((long)years);
变量
Java属于强类型语言,每个变量都必须声明其类型。
Java变量是程序中最基本的储存单元,其要素包括变量类型、变量名和作用域。
- 变量声明的格式:
数据类型 变量名 = 值; - 变量声明注意事项:
①每个变量都有类型,类型可以是基本数据类型,也可以是引用数据类型
②变量名必须是合法的标识符(详见标识符命名)
③变量声明要以分号结束 - 变量作用域★
①局部变量
局部变量是指定义在方法或者代码块中的变量,局部变量必须初始化,在方法或者代码块中有效,之外无效,方法执行开始入栈时创建,执行完毕出栈时销毁
②实例变量
其作用域受限定符限定,Private的只能在本类中使用,protected子类可用,public任何地方都能用。生命周期从对象创建开始到对象销毁结束。
③类变量
类变量是指类的static变量,用类名可以直接访问。生命周期从加载类开始,到销毁类结束。
package ***;
public class Demo08 {
//③类变量:从属于类,可以直接调用
//类变量命名需要增加修饰符static
static double salary = 2500;
//②实例变量:从属于对象
//可以不进行初始化。如果不进行初始化,则输出默认值
//数值类型默认值为0 0.0 u0000,boolean类型默认值为false
//除了基本数据类型,其余类型的默认值均为null
String name;
int age;
//main方法
public static void main(String[] args) {
//调用类变量:可以直接调用
System.out.println(salary);
//调用实例变量
Demo08 demo08 = new Demo08(); //本质上还是变量的定义格式:变量类型 变量名 = 值;
System.out.println(demo08.age); //结果为0
System.out.println(demo08.name); //结果为null
//②局部变量:必须声明和初始化值
int i = 10;
System.out.println(i);
}
//其他方法
public void adds(){
}
}
- 变量命名规范★
①所有的变量、方法和类名都应该做到见名知意
②类成员变量:首字母小写和驼峰原则:monthSalary
③局部变量:首字母小写和驼峰原则
④常量:全部字母大写和下划线:MAX_VALUE
⑤类名:首字母大写和驼峰原则:Man、GoodMan
⑥方法名:首字母小写和驼峰原则
常量
常量是指初始化后不再变动的值。常量名一般使用大写字符。常量的本质还是变量,只是数值不允许更改。
final 变量类型 变量名 = 值;
final double PI = 3.14 //final为修饰符
//static、final均为修饰符,不同的是static为类变量定义的修饰符,而final为常量定义的修饰符。
//常见修饰符有static、final、privacy、public,变量定义前的修饰符不存在前后顺序问题。
static final double e = 2.71;
运算符
- 算数运算符:+、-、*、/、%、++、--
- 赋值运算符:=
- 关系运算符:<、>、>=、<=、==、!=、instanceof
- 逻辑运算符:&&、||、!
- 位运算符:&、|、^、~、>>、<<、>>>
- 条件运算符: ?:
- 扩展运算符: +=、-=、*=、/=
运算符扩展
①在进行计算是,要注意数据类型是否发生了变化,要提前进行数据类型转换整数
int类型相除可能得到小数double类型
②整数类型相加减
整数类型进行加操作时,如果相加项有long类型,则返回值为long类型,否则不论为何种类型则返回int类型,除非进行数据类型转换;(有高数据类型,结果为高数据类型,否则整数加减必定返回int类型)
如果有double类型则返回double类型
③++、--
int a = 3;
int b = a++;
//这条语句可以分为两条
//int b = a; //b=3
//int a = a + 1; //a=4;
int c = ++a;
//这条语句可以分为两条
//int a = a + 1; //a=5;
//int c = a; //c=5
//很多运算会使用一些工具类进行操作
double pow = Math.pow(2, 3) //Math工具类里边的幂运算
④关系运算符与if相使用
⑤逻辑运算符
短路运算原则。与或非算法的执行按照短路运算进行,即如果前半部分为真,则与运算便不执行后半部分
int c = 5;
boolean d = (c<4)&&(c++<6); //前半部分为假,不关心后半部分,结果必为假
System.out.println(d);
System.out.println(c); //c输出值为5,因为没有与运算没有执行后半部分代码
⑥位运算符
A&B表示按位与
A|B表示按位或
A^B表示异或,相同为0,不同为1
~B表示按位取反
/*
位运算符简单应用
<< 每左移一位代表乘以2
>> 每右移一位代表除以2
*/
⑦扩展运算符
int a = 10;
int b = 5;
a+=b; //a = a + b;
a-=b; //a = a - b;
//字符串连接符 + ,如果+的左右两边有String类型,则结果是将字符连接起来
//注意,String类型最好放置在前边,放置在后边的话,前边的数值类型数据仍然按照加法进行计算
System.out.println(""+a+b); //输出结果为105,表示连接字符
System.out.println(a+b+""); //输出结果为15,表示计算
⑧条件运算符(三元运算符),可替代较为简单的条件判断语句
//x ?y:z;
/如果x==true,则结果返回y的值,否则返回z的值
int score = 50;
String grade = score < 60 ?"Good":"Best";
System.out.println(type);


浙公网安备 33010602011771号