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
- 数组 []
这里只是提一嘴后续回讲到