JavaSE学习 Day3 - Java基础语法

Java基础语法

创建空项目

  1. 新建工程(工程内部可以是Java,也可以是Android,甚至是其他的文件类型)。点击empty project,创建空项目,填写项目名称,例如JavaSE,选择项目的位置。相当于新建了一个名为JavaSE的文件夹存放Java工程。
    image
  2. 增加Java模块。选择files-new-module-java,填写名称,例如基础语法。相当于在javaSE文件夹内部新建了一个名为基础语法的文件夹,存放工程文件。
  3. 修改项目结构。一定要执行,不然没法使用。files-project structure-project,选择对应的jdk和自己的Java版本
  4. 新建包 package。src-右键-新建-package。相当于在基础语法的文件夹内部新建了文件夹
  5. 在对应的包内新建类 class。右击-新建class。相当于在包文件夹内部新建class类,可以开始编写代码。

注释

书写注释是一个非常好的习惯。注释主要分为三种,单行注释、多行注释、文档注释。

  • 单行注释
    //
  • 多行注释(大段的文字说明)
    /*
    注释
    */
  • 文档注释(里边可以加入参数描述、作者信息、方法说明等)
    /**
    *@deprecated
    *@author
    */

标识符zhi

Java所有的组成部分都需要命名,那么这些类名、变量名以及方法名都被称为标识符。但是命名是有规则的,Java内部已经存在的关键词不能被重新定义。
标识符注意点:

  1. 所有的标识符都应该以字母(大小写)、美元符号、下划线开头
  2. 首字符之后可以是字母(大小写)、美元字符、下划线或者数字的任意字符组合
  3. 不能使用关键词作为变量名或者方法名
  4. 标识符是大小写敏感
  5. 可以用中文命名,但是一般不建议这样使用,也不建议用拼音

数据类型

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);
posted @ 2021-06-14 15:38  RedHairBlackBoy  阅读(50)  评论(0)    收藏  举报