Java基础
1.注释
*单行注释://
多行注释:/ **/
文本注释:
2.关键字和标识符
标识符:Java所有的组成部分都需要名字,类名、变量名以及方法名都被称为标识符。
注意点
- 所有的标识符都应该以字母(A-Z或者a-z)、美元符($)、或者下划线(_)开始
- 首字符之后可以是字母(A-Z或者a-z)、美元符($)、或者下划线(_)或数字的任何字符组合
- 不能使用关键字作为变量名或方法名
- 标识符大小写敏感
- 合法标识符举例:age、$salary、_value
- 非法标识符举例:123abc、-salary、#abc
- 可以用中文命名,但一般不建议这样去使用,也不建议使用拼音
3.数据类型
-
强类型语言
- 要求变量的使用要严格符合规定,所有变量都必须限定以后才能使用
-
弱类型语言
-
Java的数据类型分为两大类
-
基本类型(primitive type)
-
基本数据类型:
-
数值类型:
-
整数类型{
-
byte占1个字节范围:-128-127
-
short占2个字节范围:-32768-32767
-
int占4个字节范围:-2147483648-2147483647
-
long占8个字节范围:-9223372036854775808-9223372036854775807 long num1=30L;//long类型要在数字后面加L
}
-
-
浮点型{
-
float占4个字节 float num1=50.1F;//float类型要在数字后面加个F
-
double占8个字节 double num2=3.141592678696;
}
-
-
字符型char占2个字节
-
-
boolean类型:占1位其值只有true和false两个
-
-
引用类型(reference type):{
-
类
-
接口
-
数组
}
-
-
什么是字节
- 位(bit):是计算机内部数据储存的最小单位,11001100是一个八位二进制数。
- 字节(byte):是计算机中数据处理的基本单位,习惯上用大写B来表示,
- 1B(byte,字节)=8bit(位)
- 字符:是指计算机中使用的字母、数字、字和符号
- ibit表示一位,
- 1Byte表示一个字节1B=8b.
- 1024B=1KB
- 1024KB=1M
- 1024M=1G
整数拓展: 进制 二进制0b 十进制 八进制0 十六进制0x
int i=10;
int i2=010;//八进制0
int i3=0x10;//十六进制0x 0~9 A~F
```java
public static void main(String[] args) {
System.out.println("=========================================");
//========================================================
//浮点数拓展 银行业务怎么表示?钱
//========================================================
//float 是有限的离散化并不是连续的所以有舍入误差,所得的值是接近但不等于
//double
//最好使用完全浮点数进行比较
float f=0.1f;//0.1
double d=1.0/10;//0.1
System.out.println(f==d);//false
float d1=2371764864f;
float d2=d1+1;
System.out.println(d1==d2);//true
//========================================================
//字符拓展?
//========================================================
System.out.println("=========================================");
char c1='a';
char c2='中';
System.out.println(c1);
System.out.println((int)c1);//强制转换
System.out.println(c2);
System.out.println((int)c2);
//所有字符本质还是数字
//编码 Unicode 表:97=a 65=A 2字节 0~65536 2X16=65536
//U0000 UFFFF
char c3='\u0061';
System.out.println(c3);
//转义字符
// \t
// \n
//查看转义字符表
//========================================================
//布尔值拓展?
//========================================================
System.out.println("=========================================");
boolean flag = true;
if (flag == true) { }//less is more
if (flag) {
}
}
```
4.类型转换
- 由于Java是强类型语言,所以要进行有些运算时,需要用到类型转换。
低----------------------------------------------------------->高
byte,short,char --> int --> long --> float --> double
- 运算中,不同类型的数据先转化为同一类型,然后进行计算。
public class Demo1 {
public static void main(String[] args) {
int i=128;
byte b=(byte)i;//内存溢出
System.out.println(i);
System.out.println(b);
//强制转换 (类型)变量名 高---低
//自动转换 低---高
/*
* 注意点:
* 1.不能对布尔值进行转换
* 2.不能把对象类型转换为不相干的类型
* 3.在把高容量转换到低容量的时候,强制转换
* 4.转换的时候可能存在内存溢出,或者精度问题*/
System.out.println("=======================================");
//操作比较大的数的时候,注意溢出问题
//JDK7新特性,数字之间可以用下划线分割
int mone=10_0000_0000;
int years=20;
int total=mone*years;//-1474836480,计算的时候内存溢出
long total2=mone*years;//-1474836480 默认是int,转换之前已经存在问题了
long total3=mone*((long)years);//先把一个数转换为long
System.out.println(total);
System.out.println(total2);
System.out.println(total3);
}
}
## 4.变量
- Java是一种强类型语言,每个变量必须声明其类型
- Java变量是程序中最基本的储存单元,其要素包括变量名,变量类型和作用域
type varName [=value] [{,varName[=value]}];
//数据类型 变量名 =值;可以使用逗号隔开来声明多个变量
-
注意事项:
- 每个变量都有类型,类型可以是基本类型,也可以是引用类型
- 变量名必须是合法的标识符
- 变量声明是一条完整的语句,因此每一个声明都必须以分号结束
-
类变量
-
static
static double salary=2500;
-
-
实例变量
- 从属于对象;如果不自行初始化,这个类型的默认值为0 0.0
- 布尔值默认值是false
- 除了基本类型,其余的默认值都是null
-
局部变量
- 必须声明和初始化值
5.常量
- 常量(constant):初始化后不能再改变值!不会变动的值
- 所谓常量可以理解为一种特殊的变量,它的值被设定后,在程序运行过程中不允许被改变
final 常量名=值;
final double PI=3.14;
static final double PI=3.14;//static是修饰符,不存在先后顺序
final static double PI=3.14;
- 常量名一般是用大写字母
变量的命名规范
- 所有变量、方法、类名:见明知意
- 类成员变量:首字母小写和驼峰原则:monthSalary 除第一个单词外,后面的单词首字母大写 lastName
- 局部变量:首字母小写和驼峰原则
- 常量:大写字母和下划线:MAX_VALUE
- 类名:首字母大写和驼峰原则:Man,GoodMan
- 方法名:首字母小写和驼峰原则:run(),runRun()
6.运算符
-
Java语言支持如下运算符:
- java运算符
- ctrl+D:复制当前行到下一行
public class Demo2 { public static void main(String[] args) { //++ -- int a=3; int b=a++;//执行完这段代码后,先给b赋值,再自增 //a=a+1; System.out.println(a); //a=a+1; int c=++a;//执行完这段代码前,先自增,再给b赋值 System.out.println(a); System.out.println(b);//特别注意b值 System.out.println(c); //幂运算2^3 2*2*2=8 很多运算,可以使用一些工具类来操作! double pow=Math.pow(3,2); System.out.println(pow); } }
public class Demo2 { public static void main(String[] args) { //与(and) 或(or) 非(取反) boolean a=true; boolean b=false; System.out.println("a&&b:"+(b&&a));//逻辑与运算:两个变量都为真,结果才为true System.out.println("a||b:"+(b||a));//逻辑或运算:两个变量有一个为真,结果就为真 System.out.println("!(a&&b):"+!(b&&a));//如果是真,则变为假,如果为假,则变为真 //短路运算 int c=5; boolean d=(c<4)&&(c++<4); System.out.println(d); System.out.println(c); } }
-
位运算
public class Demo2 { public static void main(String[] args) { /*位运算 * A=0011 1100 * B=0000 1101 * -------------- * A&B=0000 1100 * A|B=0011 1101 * A^B=0011 0001 * ~B=1111 0010 * * 怎么使2*8=16 这个计算最快 2*2*2*2 * << 左移运算 * >> 右移运算 * *2 * /2 * 0000 0000 0 * 0000 0001 1 * 0000 0010 2 * 0000 0100 8 * 0000 1000 16 * */ System.out.println(2<<3); } }