1.Java中基础前言
1.1关键字
被java语言赋予了特殊意义的单词,组成关键词都小写。
1.2标识符
给类,接口,方法,变量等起的名字时候使用字符序列,组成规则:
英文大小写字母,数字字符,$和_
不能以数字开头,不能是java关键字,区分大小写。
约定俗称命令方法
1.给类和接口命名:大驼峰命名法,首字母大写,多个单词,每个单词首字母都大写。
2.给方法和变量起名,小驼峰命名法。
3.包:命名反转用.隔开
e.g.:
www.alibaba.com fastjson
com.alibaba.项目名称.模块名称com.alibaba.fastjson
1.3 常量
值不变的量为常量,所有字母都大写,多个单词中间使用_隔开
public static final double PI = 3.14;
SECRET_KEY = "#$#$#$SDWERS%#ssdfs"
分类
字面值常量:
字符串常量
整数常量
小数常量
布尔值常量
字符常量
空常量
自定义常量:e.g.: final修饰的变量
demo
class ConstDemo{
public static void main([]string args){
System.out.print("hello");// print打印完不换行
System.out.println("hello");// println打印完内容后换行
}
}
1.4进制
在java中有二进制(0,1),八进制(0-7),十进制(0-9),十六进制(0-9 a-f)。
进制之间相互转换
1.5 变量
在java程序运行的过程中,它的值可以在一定范围内发生改变的量。
变量定义
数据类型 变量名 = 初始值
demo
class VarDemo{
public static void main(String[] args){
int socre = 0;
int golds = 300;
String name = "hello world";
}
}
变量注意事项
1.变量所在大括号叫做变量作用域,同一个作用域中不能有多个名字相同变量
2.定义在方法中变量是局部变量,局部变量只声明,不赋初始值,不能使用,定义在类中方法外的变量才有默认值。
3.同一行可以定义多个变量,但是不建议这么使用,可读性差。
2.数据类型
Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存总分配了不同大小的内存空间。
基本数据类型
数值型 byte short int long
小数类型 float boolean
字符串型 char
布尔型boolean
引用数据类型
类 class
接口 interface
数组 []
2.1基本数据类型
数值型
类型
字节
位数
默认值
范围
byte
1
8
0
-128~~127
short
2
16
0
-32768~32767
int
4
32
0
-2147483648~2147483647
long
8
64
0
-9223372036854775808~9223372036854775807
float
4
32
0.0
-3.4E38~3.4028235E38
double
8
64
0.0
-1.79E-308~1.7976931348623157E308
char
2
16
空
0~65535
boolean
1
8
false
true或false
整数默认类型是int,小数默认类型是double
Demo
class DataType1{
public static void main(String[] args){
byte a = 100;
short b = 10;
char c = '的';
int d = 10000;
long f = 2147483649L;
// 定义float小数一定要在小数后面添加f
float g = 12.5f;
double h = 132.43455;
boolean bo = true;
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(d);
System.out.println(f);
System.out.println(g);
System.out.println(h);
System.out.println(bo);
}
}
注意定义long类型变量时候,如果等号右侧在int范围内,则可直接赋值,如果超出int范围,需要在整数后面加上一个L。
数据类型默认值
class DataType2{
int b
boolean bo;
static char c;
public static void main(String[] args){
System.out.println(b);
System.out.println(bo);
System.out.println(c);// 空格
}
}
报错:
.\DataType2.java:5: 错误: 无法从静态上下文中引用非静态 变量 b
System.out.println(b);
^
.\DataType2.java:6: 错误: 无法从静态上下文中引用非静态 变量 bo
System.out.println(bo);
^
2 个错误
// 原因:
静态方法中只能调用外部用static修饰的变量
// 修改:
// 将b和bo用static修饰
static int b;
static boolean bo;
关于byte的练习
class ByteDemo{
public static void main(String[] args){
byte b1=3,b2=4,b;
b = b1+b2;// 报错
b = 3 + 4;// 不报错
}
}
.\ByteDemo.java:4: 错误: 不兼容的类型: 从int转换到byte可能会有损失
b = b1+b2;
// b1和b2是byte类型,两个byte类型相加之后数据为int类型,int类型赋值给byte会报错,这里需要知道byte,short,char不能直接运算的,需要先转int类型。
// 结论:
给byte.short类型变量赋值的时候要看等号(=)右边是否有变量:
如果都是常量,看最终运算出来的结果是否在等号(=)左边的范围内,如果在则可以直接赋值
如果有变量,则按照运算规则(byte,short,char),不能直接运算,需要先转成int类型,如果得到的结果范围大于等号(=)左边类型范围,则不能赋值
// 修改
int b;
b = b1+b2;
float 和long比较
float f = 123L;
System.out.println(f);
// 我们可以把一个long类型的值赋值给一个float类型变量。原因小数和整数存储类型在底层存储是不一样的。float的最大值远大于long最大值。所以可以把一个long类型赋值给float类型。
char类型
字符:用单引号括起来的,只有一个字符,2个字节:0-65535
class DataType3{
public static void main(String[] args){
char ch = 'a';
System.out.println(ch);// a
System.out.println(ch + 1);// 98
System.out.println('a' + 'b'); // 195
char ch2 = 97;
System.out.println(ch2);// a
char ch3 = '\u0061';
System.out.println(ch3);// a
}
}
// 当定义char类型参数运算,打印的是数字,没有参与运算打印的的是字符。
// char类型默认值为0,表现形式为一个空格。
强制类型转换
目标类型 变量名 = (目标类型) 要转换的值;
demo
class DataType3{
public static void main(String[] args){
// long -> int
long a = 10;
int b = (int) a;
System.out.println(b);
// int -> byte
byte by = (byte) b;
System.out.println(by);
}
}
除了布尔值,其他7种诶性之间都可以进行强转,一般把大类型转成小类型。
2.2引用数据类型
类 class
接口 interface
数组 []
这里只是提一嘴后续回讲到