关键字,保留字,标识符
// 关键字:编程语言把一些单词赋予了特殊含义
// 保留字:以前是关键字,因功能或某些特殊原因现在不提倡使用的关键字
// 标识符 : 一切需要程序员自己起名的东西
// 必须以字母、下划线(_)或美元符号($)开头;
// 余下的字符可以是下划线、美元符号或任何的字母或数字,长度不限
// 标识符中不能有空格;
// 不能使用Java中的关键字或者保留字做为标识符
// 类 : 每个单词首字母大写,其余字母小写,如 HelloWorld,Demo,GetMaxAge,DBUtils
// 包: 所有单词小写
// 变量和方法:首个单词小写,其余单词首字母大写,其余小写 (main,getAge,getMaxAge)
// 常量:全大写(PI,MAX_VALUE)
Java中数据类型分两大类型
public class Demo2 {
public static void main(String[] args) {
// 数据类型
// 一、基本数据类型 (4类8种):
// ①整型(byte,short,int[默认类型],long),他们之间取值范围不同
// ②浮点型(float,double[默认类型]),他们之间取值范围不同
// ③字符型(char)
// ④布尔型(boolean)
// 二、引用数据类型,从数组开始接触
// System.out.println(100); // int[默认类型]
// System.out.println(100.99);// double[默认类型]
// 变量 :程序运行过程中可变的量
// Java是一种强类型语言 : 1.变量必须要声明(创建);2.必须指定类型;3.必须指定名称
// 语法 :类型 名称 [= 值]
byte num1 = 127;
short num2 = 200;
int num3 = 100;
// long数据,末尾加大小写l均可,表示数字的取值范围是long的范围,不是默认的int范围
long num4 = 9999999999L;
double num5 = 9.001;
float num6 = 100.99f;
// 使用一个变量时,必须经过初始化(被赋过值),否则无法编译
System.out.println(num1);
System.out.println(num2);
System.out.println(num3);
System.out.println(num4);
System.out.println(num5);
System.out.println(num6);
// 字符型 : 单引号,只能表示一个字符,包括中文,说明char占2字节
char c1 = '中';
// 字符在磁盘中是以数字形式保存的
System.out.println(c1+1);
// 布尔型 : 只可以赋 true or false
boolean b1 = true;
}
}
常见进制,字符,转义符
public class Demo2 {
public static void main(String[] args) {
// 1.进制(二进制,八进制,十六进制)
// int num1 = 010;
// int num2 = 0x1F;
// System.out.println(num1);
// System.out.println(num2);
// 2.字符的另一种表示方式unicode,次要
// char c1 = '\u4e2d';
// System.out.println(c1);
// 3.转义符,次要
char c1 = '\t';
System.out.print(c1);
System.out.println(1);
// System.out.print(1);
// System.out.println(2);
}
}
同一个块内,不能声明同名变量
变量的作用域:变量的有效范围,从声明它的位置开始,到它所在的块结束
算术运算符
// 算术运算符: +、﹣、*、/、%、++、 --
// + : 如果+两侧是数值表达式,做的就是加法;如果+有一侧有字符串,加号就是连接符号
// System.out.println(5+6+7);// 18
// System.out.println(5+"6"+7);// 567
// System.out.println(5+6+"7");// 117
// System.out.println(5+6+'7');// 66
// System.out.println(5+","+6);// 5,6
// int num1 = 1011;
// int num2 = 1;
// num1+num2=1012
// System.out.println("num1+num2="+(num1+num2));
// 1011+1=1012
// System.out.println(num1+"+"+num2+"="+(num1+num2));
// / : 整型与整型相除,结果还是整型(取整,不是四舍五入)
// System.out.println(11/3); // 3
// System.out.println(11.0/3);// 3.6666666666666665
// System.out.println(11/3.0);// 3.6666666666666665
// % 取余数(模运算):结果的正负,只与被除数有关
// System.out.println(5%2);// 1
// System.out.println(-5%2);// -1
// System.out.println(5%-2);// 1
// System.out.println(-5%-2);// -1
// System.out.println(4%5);//4
自增,自减
public class Demo4 {
public static void main(String[] args) {
// ++自增 , --自减
// i++;// i = i + 1; i+=1;
// ++i;// i = i + 1; i+=1;
// int i = 1;
// int j = 0;
// j = i++;// ++在后,先运算,再自增
// System.out.println(i);//2
// System.out.println(j);//1
// System.out.println(++i);
// System.out.println(i);
int i = 1;
// i++;
// System.out.println(i++);// 2
// System.out.println(i++);// 3
// System.out.println(i);//4
int j = 11110;
j = ++i;
System.out.println(i);// 2
System.out.println(j);// 2
}
}
public class Demo5 {
public static void main(String[] args) {
int num1 = 20;
int num2 = 30;
System.out.println((num1++)+num2);// 50
System.out.println(num1+","+num2);// 21,30
System.out.println((num1++)+num2++);// 51
System.out.println(num1+","+num2);// 22,31
System.out.println((num1++)+(++num2));// 54
System.out.println(num1+","+num2);// 23,32
}
}
public class Demo6 {
public static void main(String[] args) {
int num1 = 20;
int num2 = 30;
System.out.println((num1++)+num2+","+((++num1)+(++num2)));// 50,53
System.out.println(num1+","+num2);// 22,31
}
}
赋值运算符:=、+=、﹣=、*=、/=、%=
int num = 10;
// System.out.println(num);//10
// num = 100;
// System.out.println(num);//100
// num += 10;// 与num = num + 10;等效
// System.out.println(num);//110
// num -= 10;// 与num = num - 10;等效
// System.out.println(num);//100
// num *= 10;// 与num = num * 10;等效
// System.out.println(num);//1000
// num /= 3;
// System.out.println(num);
// num %= 3;
// System.out.println(num);
比较运算符
public class Demo8 {
public static void main(String[] args) {
// 比较运算符:>、<、>=、 <=、==、!=
int age = 22;
if(age > 18) {
System.out.println("成年人");
}
if(age == 18) {
System.out.println("正好18");
}
if(age != 18) {
System.out.println("不是18");
}
if(age < 18) {
System.out.println("未成年人");
}
}
}
逻辑运算符
public class Demo9 {
public static void main(String[] args) {
// 逻辑运算符:!非、&&与、||或
int age = 12;
double height = 1.99;
// &&与
// if(age > 18 && height > 1.8) {
// System.out.println("你真棒,又高又高");
// }
// ||或
// if(age > 18 || height > 1.8) {
// System.out.println("你真棒,又高又高");
// }
// !只能对boolean值取反,true取反false,false取反true
boolean b = height > 1.8;
if(!b) {
System.out.println(111);
}
}
}
位运算符(次要)
public class Demo10 {
public static void main(String[] args) {
// 位运算符: &、|、^ 、 ~、>>、<<、>>>(pass)
// 自己定义一个整数,代表年份
// int year = 2020;
// 闰年判断依据:能被4整除且不能被100整除,或者能被400整除
// if(year%400 == 0 | (year%4 == 0 & year%100 != 0)) {
// System.out.println("闰年");
// }
// 按位与&,按位或| 和 逻辑与&&,逻辑或|| 都能进行逻辑判断
// 按位与&,按位或|能够参与位运算(位运算:针对的是二进制整数)
// & :只有参加运算的两位都为1,&运算的结果才为1,否则为0
/*
* 101 5
110 6
----------
100 4
*/
// System.out.println(5&6);
// System.out.println(3&5);
// | :只有参加运算的两位都为0,|运算的结果才为0,否则为1
/*
* 101 5
110 6
----------
111 7
*/
// System.out.println(5|6);
// ^:只有参加运算的两位不同,^运算的结果才为1,否则为0
/*
* 101 5
110 6
---------
011 3
*/
// System.out.println(5^6);
// << :a<<b,将a的二进制数据左移b位,右边移空的部分补0 1100 12
// 3*2^2 = 12
// 5*2^3 = 40
// 4*2^4=64
// a<<b等效于a*2^b
// System.out.println(4<<4);
// >> : a>>b 64/(2^2) 128/(2^3)
// a>>b等效于a/(2^b)
// System.out.println(128>>3);
// int num = 2;以效率最高的形式变成8
// int num = 2;
// num = num<<2;
// System.out.println(num);
}
}
&,|和&&,||有什么异同
1.都能参与逻辑运算
2.&,|还能参与位运算,&&,||不能
3.&&,||有短路性,&,|没有
三元运算符
public class Demo12 {
public static void main(String[] args) {
// 条件运算符(三元运算符): ?:
// 表达式1? 表达式2: 表达式3
// 当表达式1是true时,返回表达式2,否则返回表达式3
// int num = 1451 > 999 ? 0 : 1;
// System.out.println(num);
// year%400 == 0 || (year%4 == 0 && year%100 != 0
int year = 1600;
System.out.println(year%400 == 0 || (year%4 == 0 && year%100 != 0) ? "闰年" : "平年");
}
}
类型转换
public class Demo2 {
public static void main(String[] args) {
// 类型转换
// 1.自动类型转换 :两种类型彼此兼容的,目标类型取值范围大于原类型
// byte num1 = 12;
// short num2 = num1;
// int num3 = num2;
// long num4 = num3;
// 2.强制类型转换:两种类型彼此不兼容的,目标类型取值范围小于原类型
long num1 = 128;
int num2 = (int)num1;
// short num3 = (short)num2;
// byte num4 = (byte)num3;
// System.out.println(num2);
// System.out.println(num3);
// System.out.println(num4);
char c1 = 'A';
char c2 = (char)(c1 + 32);
// System.out.println(c2);
}
}
运算时有兼容方向
public class Demo3 {
public static void main(String[] args) {
// 运算时的兼容
// 向范围大的方向兼容
// long num1 = 10;
// int num2 = 20;
// int num3 = (int)(num1 + num2);
// System.out.println(num3);
// byte short char int ->int
// byte num1 = 9;
// short num2 = 10;
// short num3 = (short)(num1 + num2);
// int num3 = num1 + num2;
short num1 = 99;
// num1+2计算结果为int类型,需要强转才能赋值给short
num1 = (short)(num1 + 2);
// +=有自动转换,无需强转
num1 += 2;
// short num1 = 99; num1 = num1 + 2;与num1 += 2;有什么区别
}
}