一、注释
单行注释
//注释内容
多行注释
/*
注释内容
*/
文本注释
/**
注释内容
*/
二、标识符
关键词
| abstract | assert | boolean | break | byte |
|---|---|---|---|---|
| case | catch | char | class | const |
| continue | default | do | double | else |
| enum | extents | 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 |
-
所有标识符都应该以字母(A-Z或a-z),美元符($)或下划线(_)开始;
-
首字符之后可以是字母,美元符,下划线或数字的任何组合;
-
不能用关键字作为变量名或方法名;
-
标识符是大小写敏感的;
三、数据类型
基本类型
- 数值类型
a. 整数类型:byte(占1个字节范围:-128 ~ 127); short(占2个字节范围:-32768 ~ 32767); int(占4个字节范围:-2147483648 ~ 2147483647); long(占8个字节范围:-9223372036854775808 ~ 9223372036854775807)
b. 浮点类型:float(占4个字节范围);double(占8个字节范围)
c. 字符类型:char(占2个字节范围)
- boolean类型:占1位,其值只有true和false
引用类型
类、接口、数组
数据类型扩展
整数拓展
二进制0b;
八进制0;
十进制;
十六进制0x
int i=10;
int i2=010; //八进制
int i3=0x10; //十六进制
System.out.println(i);
System.out.println(i2);
浮点数扩展
float a=0.1f;
double b=1.0/10;
float c=5451346865546485f;
float d=c+1;
System.out.println(a);
System.out.println(b);
System.out.println(a==b); //"=="用来判断d和f是否相等
System.out.println(c);
System.out.println(d);
System.out.println(c==d);
第一个输出结果为不相等,第二个输出结果相等。原因:浮点数只能表示有限的字符长度,存在舍入误差,只能是大约,接近但不等于的,且是离散的
最好完全避免使用浮点数进行比较!
字符拓展
char e1='a';
char e2='中';
System.out.println(e1);
System.out.println((int)e1); //强制转换
System.out.println(e2);
System.out.println((int)e2);
所有的字符本质上还是数字
转义字符:\n 换行 \t 制表符 …
布尔值拓展
boolean flag = true;
if (flag==true);
if (flag==true) 可以简写为 if (flag)
Less id more! 代码要精简易读
四、类型转换
public class Demo2 {
public static void main(String[] args) {
int a =128;
byte b = (byte)a;
double c = a;
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println("=======================");
System.out.println((int)23.7);
System.out.println((int)-43.654f);
System.out.println("=======================");
char d = 'a';
int e = d+1;
System.out.println(d);
System.out.println(e);
}
}
强制转换:内存高 到 内存低;自动转换:内存低 到 内存高。
内存低到高:byte, short, char, int, long, float, double. 浮点数优先于整数。
public class Demo3 {
public static void main(String[] args) {
int m = 10_0000_0000;
int n = 20;
int total1 = m*n; //-1474836480,计算的时候溢出了
long total2 = m*n; //-1474836480,转换之前已经出现问题了
long total3 = m*(long)n; //20000000000,先把一个数转换为long
long total4 = (long) m*n; //20000000000,先把一个数转换为long
System.out.println(total1);
System.out.println(total2);
System.out.println(total3);
System.out.println(total4);
}
}
/*
输出结果分别为:
-1474836480
-1474836480
20000000000
20000000000
*/
注意点:
- 不能对布尔值进行转换;
- 不能把对象类型转换为不相关的类型;
- 把高容量转换为低容量时,采用强制转换;格式:(转换类型)变量名;
- 转换时可能存在内存溢出,或精度问题;
五、变量
Java是一种强类型语言,每个变量都必须声明其类型
Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域
//数据类型 变量名 = 值;
public class Demo04 {
public static void main(String[] args) {
int a=1,b=2,c=3;
String name = "abc";
char d='a';
double pi= 3.1415926;
}
}
注意事项:
- 每个变量都有类型,类型可以是基本类型,也可以是引用类型
- 变量名必须是合法的标识符
- 变量声明是一条完整的语句,每个声明都必须以分号结尾
变量作用域
public class Demo05 {
static double salary = 2000; //类变量,static
String name; //实例变量
int age; //实例变量
public static void main(String[] args) {
int i = 10; //局部变量
System.out.println(i);
Demo05 demo05 = new Demo05();
System.out.println(demo05.age);
System.out.println(demo05.name);
System.out.println(salary);
}
}
类变量
从属于类,与类同时出现,同时消失
实例变量
实例变量从属于对象,如果不进行初始化,则输出的是这个类型的默认值
数值类型的默认值是0或0.0;字符类型的没忍住是u0000(即也是0 );布尔值的默认值是false;其他的默认值均为null。
局部变量
局部变量从属于方法里面(如例子中的main方法),只作用于方法的{}之间,且必须声明和初始化值
六、常量
final 类型 常量名=值
常量名一般使用大写字符
public class Demo06 {
static final double PI =3.14;
public static void main(String[] args) {
System.out.println(PI);
}
}
七、变量的命名规范
- 所有变量、方法、类名:见名知意;
- 类成员变量:首字母小写和驼峰原则(除了第一个单词外,后面的单词首字母大写) mouthSalary;
- 局部变量:首字母小写和驼峰原则;
- 常量:大写字母和下划线 MAX_VALUE;
- 类名:首字母大写和驼峰原则 Man, GoodMan;
- 方法名:首字母小写和驼峰原则 run(), runRun()。
八、运算符
Java语言支持的运算符:
- 算术运算符:+,-,*,/,%(模运算,即取余),++(自增),–(自减)
- 赋值运算符:=
- 关系运算符:>,<,>=,<=,==(等于用两个=来判断),!=(不等于),instanceof
- 逻辑运算符:&&,||,!(与或非)
- 位运算符:&,|,^,~,>>,<<,>>>(了解)
- 条件运算符::,?
- 扩展赋值运算符:+=,-=,*=,/=
算术运算符
public class Demo01 {
public static void main(String[] args) {
int a=10;
int b=20;
int c=25;
int d=25;
System.out.println(a+b);
System.out.println(a-b);
System.out.println(a*b);
System.out.println(a/(double)b);
}
}
注意在输出a/b时(a,b均为整数类型),计算结果为小数0.5,因此在输出之前要将其中一个数转换为double。
public class Demo02 {
public static void main(String[] args) {
long a=123564843546L;
int b =123;
short c= 10;
byte d= 8;
double e= 1;
System.out.println(a+b+c+d+e); //输出为double
System.out.println(a+b+c+d); //输出为long
System.out.println(b+c+d); //输出为int
System.out.println(c+d); //输出为int
}
}
运算过程中,如果有double类型,结果就是double类型;如果有long,结果就是long;如果没有double和long,结果都是返回int类型。
public class Demo04 {
public static void main(String[] args) {
int a=3;
int b=a++; //执行完这个代码后,先给b赋值,a再自增
//相对于在这里隐藏了一句代码 a=a+1
System.out.println(a);
//相当于在这里隐藏了一句代码 a=a+1
int c =++a; //执行完这个代码后,a先自增,再给b赋值
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println("====================");
int d=a--;
int e=--a;
System.out.println(d);
System.out.println(e);
System.out.println("====================");
double i = Math.pow(2,4);
System.out.println(i);
}
}
输出结果为4,5,3,5。
a++是执行完这个代码后,先给b赋值,a再自增;++a是执行完这个代码后,a先自增,再给b赋值;a–和--a同理。
很多数学运算,我们会使用一些工具类来操作。
关系运算符
public class Demo03 {
public static void main(String[] args) {
int a = 10;
int b = 20;
int c = 21;
System.out.println(a>b);
System.out.println(a<b);
System.out.println(a==b);
System.out.println(a!=b);
System.out.println(c%a);
}
}
逻辑运算符
public class Demo05 {
public static void main(String[] args) {
boolean a = true;
boolean b = false;
System.out.println("a&&b:"+(a&&b));
System.out.println("a||b:"+(a||b));
System.out.println("!(a||b):"+!(a||b));
System.out.println("==================================");
int c = 5;
boolean d = (c<4)&&(c++<10);
System.out.println(d);
System.out.println(c);
}
}
&&:与,两个变量都为真,结果才为真;
||:或,两个变量其中一个为真,结果就为真;
!:非,如果是真则为假,如果是假则为真。
短路运算:在进行判断时,前面一个为假,就不执行后面的命令了。
位运算符
用于二进制
A = 0011 1100
B = 0000 1101
A&B = 0000 1100
A|B = 0011 1101
A^B= 0011 0001 两个一样就为0
~B = 1111 0010
扩展运算符
public class Demo06 {
public static void main(String[] args) {
int a = 10;
int b = 20;
a+=b; //a=a+b
System.out.println(a);
a-=b; //a=a-b
System.out.println(a);
}
}
字符串连接符
public class Demo07 {
public static void main(String[] args) {
int a = 10;
int b = 20;
System.out.println("0"+a+b);
System.out.println("0"+(a+b));
System.out.println(a+b+"0");
}
}
即+,在+两侧,只要有一侧存在String类型,就会把另外一个操作数转换为String类型。
如果String在前面,后面的直接拼接;如果String在后面,前面的依旧先进行运算后才与后面的进行拼接。
条件运算符(三元运算符)
x ? y : z 如果x==true,则结果为y,否则为z。
public class Demo08 {
public static void main(String[] args) {
int score = 80;
String type = score>60 ? "及格" : "不及格";
System.out.println(type);
}
}
八、包机制
为了更好地组织类,Java 提供了包机制,用于区别类名的命名空间。
包语句的语法格式为:package pkg1[.pkg2[.pkg.3]];
一般利用公司域名倒置作为包名,如com.baidu.www;
为了能够使用某-个包的成员,我们需要在Java程序中明确导入该包。使用"import"语句可完成此功能:
import package1[package2…].(classname|*);
*为通配符,可以导入这个包下所有的类
来源:CSDN
作者:糖果粉碎者
链接:https://blog.csdn.net/qq_41635890/article/details/104398982