数据类型
基本数据类型
数据类型 | 描述 | 占用字节 | 取值范围 | 默认值 |
int | 正型,用于存储整数 | 4个字节 | -2147483648~2147483647 | 0 |
byte | Java中最小的数据类型 | 1个字节 | -128~127 | 0 |
short | 短整型 | 2个字节 | -32768~32717 | 0 |
long | 长整型 | -2^63~2^63 -1 | 0L | |
float | 浮点型,用于存储带小数点的数字 | 4个字节 | / | 0.0f |
double | 双精度浮点型,用于存储带小数点的数字 | 8个字节 | / | 0.0d |
char | 字符型,用于存储单个字符 | 2个字节 | 0~65535 | 空 |
boolean | 布尔类型,用于判断真假 | 1个字节 | true或false | false |
类型转换
小->大(小类型自动提升为大类型)
int x=2;
double y=1.0;
System.out.print(x*y);//2.0
大->小(强制类型转换,可能会丢失精度)
double y=1.1;
System.out.print((int)y);//1
String->其他数据类型
//String->int
String str="1";
int x=Integer.parseInt(str);
int y=Integer.valueOf(str);
System.out.println(x);//1
System.out.println(y);//1
//String->char[]
String str="hello world";
char []arr=new char[str.length()];
for(int i=0;i<str.length();i++)
{
arr[i]=str.charAt(i);
}
for(int i=0;i<str.length();i++)
{
System.out.print(arr[i]);//hello world
}
运算符
优先级 | 运算符分类 | 结合顺序 | 运算符 |
由 高 到 低 | 分隔符 | 左结合 | . [] ( ) ; , |
一元运算符 | 右结合 | ! ++ -- - ~ | |
算术运算符 移位运算符 | 左结合 | * / % + - << >> >>> | |
关系运算符 | 左结合 | < > <= >= instanceof(Java 特有) = = != | |
逻辑运算符 | 左结合 | ! && || ~ & | ^ | |
三目运算符 | 右结合 | 布尔表达式?表达式1:表达式2 | |
赋值运算符 | 右结合 | = *= /= %= += -= <<= >>= >>>= &= *= |= |
1、左移(<<)
package com.xcy;
public class Test {
public static void main(String[] args) {
System.out.println(5<<2);//运行结果是20
}
}
0000 0000 0000 0000 0000 0000 0000 0101 然后左移2位后,低位补0:
0000 0000 0000 0000 0000 0000 0001 0100 换算成10进制为20
2、右移(>>)
System.out.println(5>>2);//运行结果是1
0000 0000 0000 0000 0000 0000 0000 0101 然后右移2位,高位补0:
0000 0000 0000 0000 0000 0000 0000 0001
3、无符号右移(>>>)
package com.xcy;
public class Test {
public static void main(String[] args) {
System.out.println(5>>3);//结果是0
System.out.println(-5>>3);//结果是-1
System.out.println(-5>>>3);//结果是536870911
}
}
4、位与(&)
package com.xcy;
public class Test {
public static void main(String[] args) {
System.out.println(5 & 3);//结果为1
}
}
5、位或(|)
package com.xcy;
public class Test {
public static void main(String[] args) {
System.out.println(5 | 3);//结果为7
}
}
6、位异或(^)
package com.xcy;
public class Test {
public static void main(String[] args) {
System.out.println(5 ^ 3);//结果为6
}
}
7、位非(~)
package com.xcy;
public class Test {
public static void main(String[] args) {
System.out.println(~5);//结果为-6
}
}
static变量
static变量也称为静态变量,静态变量和非静态变量的区别:
-
静态变量被所有对象共享,在内存中只有一个副本,在类初次加载的时候才会初始化
-
非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响
-
static成员变量初始化顺序按照定义的顺序来进行初始化
static块
构造方法用于对象的初始化。静态初始化块,用于类的初始化操作。
在静态初始化块中不能直接访问非staic成员。
static块的作用
静态初始化块的作用就是:提升程序性能。
命名规范
类-源文件。大驼峰,第一个单词字母大写,多个单词都是首字母大写
包名-项目名:全小写,多个单词用_分隔;
变量:小驼峰-第一个单词全小写,第二个单词开始首字母大写
final 修饰的变量(常量)必须在声明时赋值
int a=10;
final a;
存放在对空间中
方法
基本语法:
public static 返回类型 方法名称([参数类型 变量, ......]) {
方法体代码;
[return [返回值];]
}
注意:1、如果一个方法用void型,可以用return提前结束调用
2、java方法的参数传递只有值传递,
修饰符:修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。
返回值类型 :方法可能会返回值。returnValueType 是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值。在这种情况下,returnValueType 是关键字void。
方法名:是方法的实际名称。方法名和参数表共同构成方法签名。
参数类型:参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为实参或变量。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。
方法体:方法体包含具体的语句,定义该方法的功能如 int x=0; x=a+b;。
方法的重载
定义::在同一个类中,定义看若干个方法名称相同,参数列表不同(参数类型或个数),与返回值无关,这样的一组方法称为重载方法。
注意事项:重载方法参数必须不同
重载只与方法名与参数类型相关与返回值无关
重载与具体的变量标识符无关
方法的递归
使用场景:
1、个大问题可以拆分为多个子问题的解。
2、拆分后的子问题和原问题除了数据大小不一样,解决思路完全相同。
3、存在递归的终止条件
注意:写递归代码一定要注意方法的语义(方法的功能),不能陷入递归内部。当做调用别人写好的代码。
例:
public class TestDemo {
public static void main(String[] args) {
System.out.println(sum(100));
}
public static int sum(int num) {
if(num == 1)
return 1;
return num + sum(--num);
}
}