02)高淇java300集学习笔记

java基础一

  • java标识符
  • java注释
  • java关键字/保留字
  • 变量
  • 常量
  • 数据类型
  • 运算符

目标

  1. 熟知java标识符命名规范
  2. 熟知java三种注释
  3. 了解java关键字
  4. 熟知什么是变量,变量分类有哪几种,变量赋值,使用
  5. 熟知知道常量的定义,用法
  6. 熟知并掌握数据类型的分类及使用
  7. 熟练掌握运算符的使用及优先级

java标识符命名规范

  1. 标识符定义:用于给包,类,变量,方法进行命名
  2. 标识符规范:首字符(字母 、$、 _)    +     其它字符(字母、 $、 _ 、数字)
  3. 注意:
     
    1. )标识符也可以是汉字,因为java不采用通常语言使用的ASCII字符集,而是采用Unicode这样标准的固有字符集,但是不建议使用汉字
    2. )标识符严格区分大小写,a和A是两个不同的标识符,且标识符长度无限制
    3. )标识符不能是java关键字
    4. )class修饰的标识符第一个单词首字符大写,其它字符小写,第二个单词同样首字符大写,其它字符小写,如 CommonUtils.class (通用工具类)
    5. )变量和方法的标识符采用驼峰命名格式:第一个单词小写,第二个单词首字符大写,如stuName,setAge,findPerson()

科普:

Unicode(统一码,万国码,单一码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。1990年开始研发,1994年正式公布。

ASCII字符集:最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是2^8=255(二进制11111111=十进制255),0 - 255被用来表示大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码

示例代码

/**
 * 标识符:用于给包,类,变量,方法进行命名
 * 标识符规范:
 * 			首字符(字母 $ _)	+ 	其它字符(字母 $ _ 数字)
 * 注意:
 * 		1.标识符也可以是汉字,因为java不采用通常语言使用的ASCII字符集,而是采用Unicode这样标准的固有字符集,但是不建议使用汉字
 * 		2.标识符严格区分大小写,a和A是两个不同的标识符,且标识符长度无限制
 * 		3.标识符不能是java关键字
 * 		4. class修饰的标识符首字符大写,其它字符小写
 * 		5. 变量和方法的标识符采用驼峰命名格式:第一个单词小写,第二个单词首字符大写,如stuName,setAge,findPerson()
 * 
 * 科普:
 * 		
 * 		Unicode(统一码,万国码,单一码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。
 * 		Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。
 * 		1990年开始研发,1994年正式公布。
 * 
 * 			
 * 		ASCII字符集:最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255),
 * 		0 - 255被用来表示大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码
 * 
 * @author zwq
 *
 */
public class Identifier {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int i = 1; // 规范
		int @i ; // 标识符不规范,首字符只能是 字母, $ ,_
		int $i; // 规范
		int 1a;  // 标识符不规范,首字符字母开头
		int _b; // 规范
		int 汉字; //不报错,但标识符不规范,不建议这样写
		int xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx; //标识符长度无限制
		int class; //标识符不能是java关键字
		String stuName; // 字符串变量采用驼峰命名格式
	}
	
	// 方法名findPerson 第一个单词find小写,第二个单词Persion的首字符大写
	public void findPerson() {}

}

java三种注释

 *      分类:
 *          1.单行注释
 *          2.多行注释
 *          3.文档注释: 一般用于类,方法

/**
 * java 注释
 *  	分类:
 *  		1.单行注释
 *  		2.多行注释
 *  		3.文档注释: 一般用于类,方法
 * 
 * @author zwq
 *
 */
public class DocTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println("我是单行注释"); //1.单行注释
		
		/*
		System.out.println("我是多行注释"); 
		System.out.println("我是多行注释");

		*/
		
		Test();
		
	}
	
	/**
	 * 文档注释 一般用于类,方法
	 * 
	 * static 修饰的方法为静态方法
	 * 
	 * @param args
	 */
	public static void Test() {
		System.out.println("Test()方法");
	}

}

java关键字

常常听到,java关键字,java保留字,其实都是指一个意思,比如修饰类的关键字 class ,修饰变量类型的 int,都属于关键字,比如后续会学到的 if-else while for 语句都是属于java关键字

变量

  • 变量定义:变量实质是一个“可操作的存储空间”,位置是固定的,但是里面放什么值不确定,可以通过变量名来访问“对应的存储空间”,从而操作这个“存储空间”存储的值。
  • 变量要素:1.变量名  2.变量类型  3.作用域
  • 变量类型:8个基本数据类型(byte,short,char,int,float,double,long,boolean) + 引用数据类型(类,String,数组,接口)
  • 变量分类:1.局部变量  2.成员变量(也称为实例变量)  3.静态变量(也称为类变量)

 变量-局部变量

1. 作用域

方法或语句块 内部定义的变量,生命周期是从束声明位置开始,到方法,语句块执行完毕结束。

2. 局部变量访问方式

方法或语句块 中直接访问 变量名

/**
 * 变量分类-局部变量
 * 
 * 定义:
 * 		方法或语句块 内部定义的变量,生命周期是从声明位置开始,到方法,语句块执行完毕结束。
 * 
 * 访问局部变量:
 * 		只能在 方法或语句块 中调用
 * 		
 * 
 * 注意:局部变量必须声明并赋值后再使用
 * 
 */
public class LocalVar {

	public static void main(String[] args) {
		// 定义语句块
		{
			System.out.println("我是语句块");
			int a=1;
			System.out.println("我是语句块a="+a);
		}
		System.out.println("我是语句块a="+a); // 变量a作用域范围在 语句块 中,此时 语句块 代码已执行结束,此处报错,a未被声明
	
		prints(6); // 方法内部的变量b,其作用域范围在prints()方法执行完时,被销毁,释放了内存

	}
	/**
	 * 定义一个方法 用于 打印数据
	 * @param b
	 */
	public static void prints(int b) {
		System.out.println(b);
	}

}

注意:局部变量没有声明,不能使用(包括不能初始化或赋值),局部变量没有初始化或赋值不能使用。

变量-成员变量

1.作用域

方法外部、类的内部定义的变量为成员变量,也称为实例变量,从属于对象,生命周期为对象的始终。成员变量不赋值,可以使用,会取默认值,即会自动初始化,如 int i ,i的默认值为0;

2. 成员变量访问方式

  • 先创建对象 通过 new 对象
  • 通过 对象.成员变量 访问
/**
 * 变量分类-成员变量
 * 
 * 定义:
 * 		方法外部、类的内部定义的变量为成员变量,也称为实例变量,从属于对象,生命周期为对象的始终
 * 
 * 输出 成员变量:
 * 		1.先创建对象 通过 new 对象
 * 		2.通过 对象名.成员变量 访问
 * 
 * 注意:
 * 		成员变量不赋值,可以使用,会取默认值,即会自动初始化,如 
 * 			int 默认值为0
 * 
 * 
 */
public class MemberVar {

	byte b; // 声明 byte 类型变量
	short s; // 声明 short 类型变量
	char c; // 声明 char 类型变量
	int i; // 声明 int 类型变量
	float f; // 声明 float 类型变量
	double d; // 声明 double 类型变量
	long l; // 声明 long 类型变量
	boolean bo; // 声明 boolean 类型变量
	String str; // 声明 String 类型变量
	
	public static void main(String[] args) {
		/**
		 * 输出 成员变量
		 * 1.先创建对象 通过 new 对象
		 * 2.通过 对象名.成员变量 访问
		 * 
		 */
		MemberVar vt = new MemberVar();
		System.out.println(vt.b); // 默认值为 0
		System.out.println(vt.s); // 默认值为 0
		System.out.println(vt.c); // 默认值为   
		System.out.println(vt.i); // 默认值为 0
		System.out.println(vt.f); // 默认值为 0.0
		System.out.println(vt.d); // 默认值为 0.0
		System.out.println(vt.l); // 默认值为 0
		System.out.println(vt.bo); // 默认值为 false
		System.out.println(vt.str); // 默认值为 null
	}

}

变量-静态变量

1.作用域

static 修饰的变量为静态变量,从属于 类 ,生命周期为 类的始终,从类加载到卸载

2.静态变量访问方式

静态变量属于类,访问方式是 类名.静态变量,若在同一个类中,则可以直接输出静态变量不用类名调用

/**
 * 变量分类-静态变量
 * 
 * 定义:
 * 		static 修饰的变量为静态变量,从属于 类 ,生命周期为 类的始终,从类加载到卸载
 * 
 * 输出静态变量:
 * 		 静态变量属于类,访问方式是 类名.静态变量,若在同一个类中,则可以直接输出静态变量不用类名调用
 * 
 * @param args
 */
public class StaticVar {
	// 声明一个 static 变量
	static int size ;
		
	public static void main(String[] args) {
		/**
		 * 输出静态变量
		 * 	 静态变量属于类,访问方式是 类名.静态变量,若在同一个类中,则可以直接输出静态变量不用类名调用
		 * 
		 */
		System.out.println("静态变量输出:"+size);
		System.out.println("静态变量输出:"+VariableTest.size); // 若访问的静态变量不在本类中需要 通过 类.静态变量 访问

	}

}

问:静态变量能否在 main(),或自定义方法中 声明?

答:静态变量不能在mainI(),或自定义的方法中 声明,因为静态变量是属于类的,也称为类变量。或者可以这样解释,如果静态变量能在方法中定义,那么其作用域就是方法体内了,生命周期会随着方法执行完后结束。

 

常量

定义

java中 final 修饰的变量称为常量;其值一旦初始化就不能再次改变其值;

分类

字面常量:如 1,3.14,true,'a' 是固定的值,不变的值,这种称为字面常量

符号常量:fianl修饰的常量如 final int MAX_VALUE = 100; //MAX_VALUE为符号常量

语法

final 类型 常量名 = 值;

final int MAX_VALUE = 100;

规范

  1. 常量的变量名字母需全部大写,且多个单词用 _ 分割 如:MAX_VALUE,MIN_VALUE
  2. 常量值必须初始化
  3. 常量值一旦被赋值,不能再次更改其值
  4. 常量一般定义在类下面或所有方法上面,或者定义一个单独的常量类如Constants.java,java中一般会根据业务不同,定义不同的常量类

如下代码片段:final是定义在方法内部的,正常项目编码中一般不建议这样写


public class FinalTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		final int MAX_VALUE = 100;
		MAX_VALUE = 1000; // 报错,常量一旦被赋值,不能再改变其值

	}

}

如下代码片段编码比较符合规范,即使编码规范就要尽量去遵守,养成好的编码习惯是程序员必备的素质之一

/**
 * 常量:final修饰的变量叫常量,其值是固定的
 * 
 * 注意:
 * 		1.final的值必须初始化,不然报错
 * 		2.常量一旦被赋值,不能再改变其值
 * 
 * @author zwq
 *
 */
public class FinalTest {
	final int MAX_VALUE = 100; // java编码规范-final 修饰的变量一般放在 类下面,方法之上,或者使用一个常量类存放常量 如Constants.java
	final int FACE_CODE; // 错误,final的值必须初始化
	final String CHANNEL_CODE = "Alipay"; // 正确,final的值初始化
	
	public static void main(String[] args) {
		
		 CHANNEL_CODE = "MoBai"; // 报错,常量一旦被赋值,不能再改变其值

	}

}

 

数据类型

定义

不同的类型的变量有不同的存储空间,存储数据的范围不一,所有有了数据类型

分类

基本数据类型(byte,short,char,int,float,double,long,boolean)

数据类型分类所占字节数存储数据的范围示例值
byte数值型1byte2^8=256(包括正负数)-2^7~2^7-1
-128~127
byte b=127;
short数值型2btte2^16=65 536
(包括正负数)
-2^15~2^15-1
-32768~32767
约3万+
short s=23;
char数值型2byte是用来表示在 unicode编码中的字符,unicode是万国码,统一处理各国语言的编码,它占2个字节,可允许有2^16=65536个字符,unicode只有从0到65536之间的编码,它们通常从【'\u0000'】 到'【\uFFFF'】之间的十六进制表示

1. 0 ~ 65535
2.u0000 ~ \uFFFF

1.char c = 'a',cc = '?';
2.char c2 = 65536; // 65536错误  超出数字存储范围  0 ~ 65535
3.char c3 = -11; // -11错误 超出数字存储范围  0 ~ 65535
4.char c4 = 65535; // 正确
5.char c5 = '\uFFFF'; // 正确 也可以用十六进制表示 存储范围 \u0000 ~ \uFFFF
6.char c6 = '\u0000'; // 正确 也可以用十六进制表示 存储范围 \u0000 ~ \uFFFF
int数值型4byte2^32=4 294 967 296
(包括正负数)
约42亿+
-2^31~2^31-1
-2 147 483 648~2 147 483 647
约21亿+
int i =100;
float单精度浮点型4byte2^32=4 294 967 296
(包括正负数)
约42亿+
-2^31~2^31-1
-2 147 483 648~2 147 483 647
约21亿+
float f =1.2f
值后无f时默认为double
double双精度浮点型8byte2^64=18446744073709551616-2^63~2^63-1
约74亿
double b =2.2
long长整型8byte2^64=18446744073709551616-2^63~2^63-1
约74亿
long l = 100000L;
boolean布尔型1bit(1byte=8bit) true或falseboolean b = false;

1.整型数值类型

int型数据的表现方式:

                十进制:默认类型  如 0,300,-99               

                八进制:要求以 0 开头 如 012,016

                十六进制:要求以 0x 后 0X 开头 如 0x15

                二进制:要求以 0b 或 0B 开头 如 0b01110111

		// 测试 int型数据的表现形式
		int i = 2; //十进制,默认进制类型
		int i1 = 015; // 八进制
		int i2 = 0x12; //十六进制
		int i3 = 0b1101; //二进制
		System.out.println(i+"\t"+i1+"\t"+i2+"\t"+i3+"\t");//2	13	18	13
		
		// 测试 基本数据类型的存储范围
		byte b = 128; // 编译报错 byte的数据存储范围是-127~128
		short s = 32768; //编译报错 byte的数据存储范围是-32768~32767

2.字符型数据类型

char是用来表示在unicode编码中的字符,unicode编码被设计用来处理各种语言的文字,它占2个字节,可许允许有2^16=65536个字符,unicode只有从0到65536之间的编码,它们通常从'\u0000' 到'\uFFFF'之间的十六进制表示(前缀为u表示unicode)

字符型数据的表现形式:十六进制 如 \u0061

// 测试 char型数据的表现形式
		char c = '\u0061';
		System.out.println(c); //a
		char a = 'a';
		char b = 2; //十进制
		char d = 'A';
		System.out.println(a>d); // true
		System.out.println(0+a); //97
		System.out.println("a"+a);//aa
		System.out.println(d+0);//65
		System.out.println(d+"a");//Aa
		System.out.println(a+b);// 2 + 'A' = 99
		System.out.println(1+'a'); // 98
		/**
		 * char 是用来表示在 unicode编码中的字符,unicode是万国码,统一处理各国语言的编码,
		 * 		它占2个字节,可允许有2^16=65536个字符,unicode只有从0到65536之间的编码
		 * 		它们通常从【'\u0000'】 到'【\uFFFF'】之间的十六进制表示
		 * 
		 */
		// 测试  0到65536
		char c = 32767;
		char c1 = 32768; // 
//		char c2 = 65536; // 65536错误  超出数字存储范围  0 ~ 65535
//		char c3 = -11; // -11错误 超出数字存储范围  0 ~ 65535
		char c4 = 65535; // 正确
		
		// 测试  \u0000 ~ \uFFFF
		char c5 = '\uFFFF'; // 正确 也可以用十六进制表示 存储范围 \u0000 ~ \uFFFF
		char c6 = '\u0000'; // 正确 也可以用十六进制表示 存储范围 \u0000 ~ \uFFFF
		System.out.println("c="+c); // c=翿
		System.out.println("c1="+c1); // c1=耀
		System.out.println("c4="+c4); // c4=?
		System.out.println("c5="+c5); // c5=?
		System.out.println("c6="+c6); // c6=

3.浮点型数据类型

浮点型数据类型的表现形式

		//测试 浮点型数据的表现形式 - 十进制
		float f = 111; // 不带小数点的值后不加f正确,默认double类型
		float f1 = 11.1;// 带小数点的值后不加f错误,必须加f 或 F
		float f3 = 11.1F;
		double d1 = 11; // double类型加不加d,D都可以,规范不用加
		double d2 = 11.1;
		double d3 = 11d;
		double d4 = 11.1D;
		
		//测试 浮点型数据的表现形式 - 科学记数
		float f4 = 314E2; // 科学记数的值后不加f错误,必须加f 或 F
		float f5 = 314E2F; // 正确
		double d5 = 314e-2; // 正确

浮点数 字面意思就是浮动的,值有误差

		//测试 浮点数的精度误差
		float ff = 0.1f;
		double ff1 = 1.0/10;
		System.out.println(ff==ff1);// false 精度误差
		System.out.println(ff); // 0.1
		System.out.println(ff1); // 0.1
		
		float ff2 = 0.1f;
		float ff3 = 1.0f/10;
		System.out.println(ff2==ff3);// true 精度误差
		System.out.println(ff2); // 0.1
		System.out.println(ff3); // 0.1
		
		// 观察 下面三组测试结果 
		float ff4 = 42343243f;
		double ff5 = ff4+1;
		System.out.println((ff4==ff5)+"\t"+ff4+"\t"+ff5); // true	4.2343244E7	4.2343244E7
		
		float ff8 = 42343243.1f;
		double ff9 = ff8+1;
		System.out.println((ff9==ff8)+"\t"+ff9+"\t"+ff8); // true	4.2343244E7	4.2343244E7
		
		float ff6 = 4234f;
		double ff7 = ff6+1;
		System.out.println((ff6==ff7)+"\t"+ff6+"\t"+ff7); // false	4234.0	4235.0

金融计算领域不容许有舍入误差存在,所以float,double不适合使用,应该使用任意精度的整型,浮点型运算如BigInteger,BigDecimal(java.lang.Math)

import java.math.BigDecimal;
import java.math.BigInteger;

public class BigDecimalTest {

	public static void main(String[] args) {
		BigDecimal bd = new BigDecimal(42343243.1);
		System.out.println(bd);//42343243.100000001490116119384765625
		
		BigInteger bi = new BigInteger("42343243");
		System.out.println(bi);//42343243
	}

}

4.布尔数据类型

		// boolean 一般用于流程控制,只有两个值 true false
		boolean flag = false;
		System.out.println(flag+"\t"+!flag); //false	true

转义符

转义符含义unicode值
\b退格u008
\n换行u00a
\r回车u00d
\t制表位(tab)u009
\"双引号u0022
\'单引号u0027
\\反斜杠u005c

引用数据类型(类,String,接口,数组)

 

运算符

定义

用来操作变量执行数学运算的符号

分类

  1. 算术运算符:+,-,/,*,%,+=,-=,*=,/=,%=
  2. 赋值运算符:= 
  3. 关系运算符:>, <, >=, =<, ==, !=
  4. 逻辑运算符:&& & || | !^
  5. 位运算符:&, |, ^, ~ ,>>, << 
  6. 条件运算符: 也叫三目运算符 如 1>2 ? "错误":"正确" ;
  7. 字符串运算符:+

注意:+ 有两种理解(既可以作为字符串链接符号,还可以用来计算两个变量的值)

记忆小诀窍:七七算错了一个数值,被到小黑屋,小黑屋被动了置,搬到了一张字条上 = 7个分类(算,赋,关,逻,位,条,字)

运算符优先级

 

注意:

1. () 优先级最高

2. 逻辑与,逻辑或,逻辑非 的优先级顺序为:逻辑或 》 逻辑与》逻辑非
如:a || b && c 运算结果是:a || (b && c) 而不是 (a || b) && c

		/**
		 * 运算符优先级
		 * () 优先级最高
		 *  逻辑与,逻辑或,逻辑非 的优先级顺序为:逻辑或 》 逻辑与》逻辑非
		 *  a || b && c 运算结果是:a || (b && c) 而不是 (a || b) && c
		 */
		int a =1;
		int b =2;
		int c =5;
		System.out.println((a>b)||(b>3) && c>b); // false 先计算 b>3 && c>b 得到 false 然后与 a>b=false 进行 || 运算
		System.out.println((a>b)||(b>0) && c>b); // true

  算术运算符


  1.分类    
          1.1 一元:一个操作进行数学运算(++,--)

/*
 * 一元运算符(++,--)自增或自减
 * 规则:
 * 		++,--在变量前,则变量先自增/自减,然后再赋值
 * 		++,--在变量后,则变量先赋值,然后再自增/自减
 * 		
 */
int a = 2;
int a1 = a++; // a在++前,则a先赋值给a1,所以a1=2,然后a再自增,则a=3
a = 3;
int a2 = ++a; // ++z在a前,则a先自增,所以a=4,然后将a的值赋值给变量a2,则a2=4

int a3 =0;
a3++; //该代码执行完毕后,a3=1
int a4 = a3; // a3=1,直接赋值a4
System.out.println(a3);
System.out.println(a4);
a3 = 8;
System.out.println(a3++); // 打印8 a3++ 是一个表达式,而print输出的是变量的值,此时变量被先赋值,而后执行的++操作
System.out.println(a3); // 打印9
a3 = 6;
System.out.println(++a3); // 打印7
System.out.println(a3); // 打印7
System.out.println(a3++); // 打印7


                 
          1.2 二元:两个操作符进行数学运算(+,-,*,/,%)
              1.2.1.整型运算符

byte b = 1;
short s = 1;
char c = '1';

/**
 * 整型运算
 * int 型作为分割线,此注释以上的类型byte short char 进行整数运算时结果会自动转换为int
 * 
 * 					此注释以下的类型long 进行整数运算时,结果都为long
 * 
 * 注意:
 * 		1.byte,short,char 与 int 进行运算时,结果会自动转换为 int 类型, +=运算时,是什么类型,结果类型就是什么类型
 * 		2.byte,short,char,int 与 long 进行运算时,结果会自动转换为long类型
 *
 */
int i = 1;

long l = 1;

byte b1 = b+i; // 报错,结果类型为int
s = s+b; // 报错,结果类型为int
i = b+s; // 正确,结果类型为int

short s1 = s+i; // 报错,结果类型为int
short s2 = s+2; // 报错,2默认是int型,结果类型为int
s = s+1; // 报错,运算时,结果类型会自动类型提升为int
s += 1; // 正确 += 是java语言中规定的运算符,java编译器会对它进行特殊处理,所以编译时不会报错
b += 1; // 正确 += 是java语言中规定的运算符,java编译器会对它进行特殊处理,所以编译时不会报错

c = c+1; // 报错,2默认是int型,结果类型为int
s= (c+s); // 报错,2默认是int型,结果类型为int,此处结果类型s为short型,可强制转换为short即正确
c = (char)(c+s); // 正确,强制类型转换为char

long l1 = l+i; // 正确
l = l + b; // 正确
l += b; // 正确
l = s + b; // 正确
l += 1;


              1.2.2.浮点运算符

		/**
		 * 浮点型算术运算
		 * 1.若只有一个操作符是double,则结果类型为double
		 * 2.只有当两个操作符都是float时,结果类型才为float
		 */
		float f = 2; // 不带f,F时默认为 double类型
		double d =3;
		double d1 =f+d; //正确
		float f1 = 2f; //float类型
		float f2 = f1 + d;// 错误
		double d2 = f1 + d; // 正确


              1.2.3.取余运算符

		// 取余运算符
		/**
		 * 取余运算符 :
		 * 注意:
		 * 		1.操作符可以是整形,浮点型,正负均可
		 * 		2.取余结果的正负取决于左边操作的正负,与右边操作符的正负无关
		 */
		System.out.println(7%2); // 1
		System.out.println(-7%2); // -1
		System.out.println(7%-2); // 1
		System.out.println(7%2); // 1

赋值运算符

为变量赋值的运算符,如 =

		/**
		 * 赋值运算符 =
		 * 
		 */
		int z = 1; // 1 赋值给变量 z
		z = 1+3; // z = 4

关系运算符

 

用来比较操作变量的关系情况 如>,<,>=, =<, ==, !=

		/**
		 * 关系运算符
		 * 用来比较操作变量的关系情况 如>,<,>=, =<, ==, !=
		 * 
		 */
		System.out.println(1>2); // false
		System.out.println(1<2); //  true
		System.out.println(1==2); // false
		System.out.println(3>=3); // true
		System.out.println(3<=3); // true
		System.out.println(5==5); // true
		System.out.println(5!=5); // false

 

逻辑运算符


与,或,非 等 如 && & || | !^

		/**
		 * 逻辑运算符
		 * 与,或,非 等 如 && & || | !^
		 * 
		 */
		System.out.println((1<2) && (3>4)); //		false
		System.out.println((1<2) || (3>4)); //		true
		System.out.println(!true); //		false
		System.out.println(!false); //		true
		System.out.println((1<2) & (3>4));//		false
		System.out.println((1<2) | (3>4)); //		true
		System.out.println(2^2); //		0
		System.out.println(2^3); //		1
		
		int a = 1;
		int b = 2;
		int c = 3;
		System.out.println((1>2) && (++c)>1); // 1>2为false,则整个表达式都为false,&&具有短路的作用,此时(++c)+1表达式并不会被执行,所以c还是3
		System.out.println(c); //c=3 
		
		short c1 = 1;
		short c2 = 2;
		short c3 = 3;
		System.out.println((c1<c2)||(++c3)>3); //1<2为true,则整个表达式都为true,||具有短路作用,此时(++c3)>3表达式将不会被执行,c3仍为3
		System.out.println(c3);//c3=3 

位运算符
&, |, ^, ~ ,>>, << 

<< :左移运算符,左移一位相当于 乘以2 ,左移两位相当于 乘以两个2

<< :右移运算符,左移一位相当于 除以2 ,左移两位相当于 除以两个2

		/**
		 * 位运算符
		 *	&, |, ^, ~ ,>>, << 
		 * 
		 * 注意 :
		 * 		&,| 即是逻辑运算符,也是位运算符
		 * 		如果两侧操作数都是 boolean 则作为 逻辑运算符
		 * 		如果两侧操作数都是 整数类型 则作为 位运算符
		 *
		 */
		System.out.println((1<2) & (3>4)); //		false
		System.out.println((1<2) | (3>4)); //		true
		System.out.println((1<2) & (3>4));//		false
		System.out.println((1<2) | (3>4)); //		true
		System.out.println(2^2); //		0
		System.out.println(2^3); //		1
		System.out.println(5<<2); //	20 表示 5*2*2 = 20
		System.out.println(5>>2); //	1 表示 5/2/2 = 1
		System.out.println(-5>>2); //	-2
		System.out.println("3*2:左移1 表示 3<<1="+(3<<1)); // 3*2 = 6
		System.out.println("3*4:左移2 表示3<<2="+(3<<2)); // 3*2*2 = 12
		System.out.println("7:左移1 表示 7<<1="+(7>>1)); // 7/2 = 3
		System.out.println("7:左移2 表示7<<2="+(7>>2)); // 7/2/2 = 1
		System.out.println("^ 表示异或并不是乘方:"+(3^4)); // ^ 表示异或并不是乘方:7
		System.out.println("~ 去码:~4 ="+(~4)); // -5
		System.out.println("~ 去码:~3 ="+(~3)); // -4

条件运算符


也叫三目运算符 如 1>2 ? "错误":"正确" ;

语法: x ? a : b ; // 说明 x为true时 执行 a  ; x为false时 执行 b ;

		int age = 18;
		System.out.println(age>=18 ? "成年人" : "非未成年人"); //成年人

 

字符串运算符


用于连接符使用 如+

		/**
		 * 字符串运算符 
		 * 用于连接符使用 如+
		 * 
		 * 注意:+ 既可以作算术运算符 也可以 作 字符串运算符
		 * 		作字符串拼接时 为 字符串运算符
		 * 		作整数类型计算时 为 算术运算符
		 * 
		 */
		System.out.println('a'+0); // a = 97 b= 98
		System.out.println('a'+ 1); // 97+1 说明: 表达式中的 +1 操作 结果类型为int
		System.out.println('a'+'b'); // 97+98 = 195 此处用于计算值
		System.out.println('a'+",hello "
				+ ",java"); // 打印 a,hello ,java 拼接字符串
		System.out.println(3+4); //7 // 作算术运算符
		System.out.println(3+"4"); //34 //作 字符串运算符 

注意:
           1. 作字符串拼接时 为 字符串运算符
           2. 作整数类型计算时 为 算术运算符

 

本节不清晰知识点:进制之前的转换,unicode编码字符及ACSII编码字符

 

  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值