目录
1.数据类型
Java是一种强类型语言。这就意味着必须为每一个变量声明一种类型。在Java中,一共有8种基本类型,其中有4种整型(int、long、long long、byte)、2种浮点类型(float、double)、1种用于表示Unicode编码的字符单元的字符类型(char)和一种用于表示真值的boolean类型。
数据类型 | 包装类 | 存储需求(byte) | 位数(bit) | 最小值 | 最大值 |
---|---|---|---|---|---|
byte | Byte | 1 byte | 8 bit | -128 | 127 |
char | Charactor | 2 byte | 16 bit | 0 | 65535 |
short int | Short int | 2 byte | 16 bit | -32768 | 32767 |
int | Integer | 4 byte | 32 bit | -2147483648 | 2147483647(>20亿) |
long | Long | 4 byte | 32 bit | -2147483648 | 2147483647 |
float | Float | 4 byte | 32 bit | -3.4028347e+38 | 3.4028347e+38 |
double | Double | 8 byte | 64 bit | -1.79769e+308 | 1.76969e+308 |
注意:3.4028347e+38代表3.4028347*10的38次方,2的63次方=9 223 372 036 854 775 808
包装类与基本数据类型的区别:
区别/类型 | 包装类 | 基本数据类型 |
---|---|---|
对象调用 | 是对象,拥有方法和字段,对象的调用都是通过引用对象的地址 | 基本数据类型不一样 |
传递方式 | 引用的传递 | 值的传递 |
声明方式 | 需要new在堆内存中进行new来分配内存空间 | 不需要new关键字 |
存储位置 | 把对象放在堆中,然后通过对象的引用来调用他们 | 直接将值保存在值栈中 |
初始值 | null | i0或false |
使用方式 | 在集合中使用 | 直接赋值使用 |
2.常见的数学函数
一般来说,如果我们在程序中调用的格式如:
import java.lang.Math;
int x;
x = -1;
System.out.println(Math.abs(x));///对x绝对值
如果们不想添加Math前缀的话,我们可以这样:
import static java.lang.Math;
int x;
x = -1;
System.out.println(abs(x));///对x绝对值
3.常见的字符串函数
注意:图中的指定字符哪里int ch为char ch!!!!
有些时候,需要由较短的字符串构建字符串,例如,按键或来自文件中的单词。采用字符串连接的方式达到此目的效率比较低。每次连接字符串,都会构建一个新的String的对象,既耗时,又浪费空间。使用StringBuilder类就可以避免这个问题的发生。
public class Main{
public static void main(String [] args) {
StringBuilder builder = new StringBuilder();///构建一个空的字符串构建器
int len = builder.length();///返回构建起或缓冲器的代码单元数量
char ch = 'a';
builder.append(ch);////追加一个代码单元并返回this
String str = "bc";
builder.append(str);///追加一个字符串并返回this
//builder.setCharAt(int index,char ch);///将某个字符设置为字符ch
///builder.insert(int offset,String str);///在offset位置插入一个字符串
///builder.insert(int offset,char ch);///在offset位置插入一个字符
///builder.delete(int startIndex,int endIndex);///删除偏移量从startIndex到endIndex-1的代码单元并返回this
///String toString();///返回一个与构建器或缓冲器内容相同的字符串
}
}
4.控制台输入与输出
4.1 读取输入
要在控制台进行输入,首先需要构造一个Scanner对象:
import java.util.Scanner;
Scanner sc = new Scanner(System.in);
Scanner类中常见的函数:
import java.util.Scanner;
public class Main{
public static void main(String [] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){///检查输入中是否还有其他元素,多行输入时会用到
int x = sc.nextInt();///读取输入整数
///long x = sc.nextLong();///输入长整型
///float x = sc.nextFloat();///
///double x = sc.nextDouble();///输入浮点型
///String str = sc.nextLine();///输入一行,包括空格
///String str = sc.next();///输入单词,不包含空格(以空格作为分隔符)
///sc.hasNextInt()、sc.hasNextDouble()...(检查是否还有此类型的元素)
}
sc.close();///关闭此扫描仪
}
}
4.2 格式化输出
如果我们没有什么特殊的强制性要求的话,我们这样输出:
System.out.println();///没有内容输出,就是换行
int x = 1;
System.out.prinln(x);///输出整型
char ch = 'a';
System.out.prinln(ch);///输出字符
String str = "Hello";
System.out.prinln(str+" world");///输出字符
System.out.prinln(x+str);///输出字符加整型
如果我们在编程中需要有特殊性要求的话,比如我们希望显示美元、美分等符号。上面的方法就无法满足我们的需求了。JavaSE5.0沿用了C语言函数中的printf方法:
double x = 10000.0/3.0;
System.out.printf("%8.2f",x);///3333.33
☞ 格式说明符的语法如下:
注意:上面的格式符视自己需求增减
☞ 用于printf的转换符:(以整数159为例)
转换符 | 类型 | 举例 |
---|---|---|
d | 十进制整数 | 159 |
c | 字符 | H |
s | 字符串 | Hello |
b | 布尔 | true |
h | 散列码 | 42628b2 |
% | 百分号 | % |
x | 十六进制整数 | 9f |
o | 八进制整数 | 237 |
f | 定点浮点数 | 15.9 |
e | 指数浮点数 | 1.59e+01 |
g | 通用浮点数 | |
a | 十六进制浮点数 | 0x1.fccdp3 |
n | 与平台有关的行分割符 | - |
tx或Tx | 日期时间 | 已过时 |
☞ 用于printf的标志:
标志 | 目的 | 举例 |
---|---|---|
+ | 打印正数符号(负数系统自动给) | +3333.33 |
空格 | 在数之前添加空格 | 3333.33 |
0 | 数字前面补0(系统默认右对齐,如要求12格式化宽度为4的数,0012) | 03333.33 |
- | 左对齐 | 3333.33 |
( | 将负数括在括号内 | (3333.33) |
, | 添加分组分隔符 | 3,333.33 |
#(对于f格式) | 包含小数点 | 3,333. |
#(对于x或0格式) | 添加前缀0x或0 | 0xcafe |
$ | 给定被格式化的参数索引,如:%1$d将以十进制打印第一个参数 | 159 |
< | 格式化前面说明的数值。 | 如:5和6,%d%<d输出55 |
☞ String.Format格式化用法:
(System.out.printf()==System.out.printf(String.format()))
///这两种方式是等同的
5.(算术、逻辑、位、比较、三元)运算符
我的另外一篇博客,直达链接:彻底掌握几种运算符的运用
6、数组的定义
一维数组声明:nt arr[ ] 或int [ ] arr
public class Main{
public static void main(String [] args) {
///int []arr = new int[100];///方式一,固定数组长度
///int []arr = new int[]{1,5,2,4,3};///方式二,不固定数组长度
int []arr={1,5,2,4,3};///方式三,不固定数组长度
for(int a:arr){///枚举数组
System.out.println(a);
}
}
}
二维数组声明:int [ ][ ]arr或int arr[ ][ ]
public class Main{
public static void main(String [] args) {
int [][]arr1 = new int[100][100];///方式一,固定数组长度
int [][]arr2 = new int[][]{
{1,5},
{2,4}
};///方式二,不固定数组长度
int [][]arr3={
{1,5},
{2,4}
};///方式三,不固定数组长度
}
}
7.集合的基础知识点
链接直达:集合知识点
8.(数字、字符串、字符)之间的转换和进制转换
8.1 常见数据类型的转换
8.2 进制转换
字符0 ~ 9的十进制为48 ~ 57;
大写字符(A~Z)的十进制为65 ~ 90;
小写字符(a~z)的十进制为97 ~ 122;
☞ r进制转十进制
Integer.parseInt(str, r);///str为要转换的字符串,r为被转换的进制
☞ 十进制转换为r进制
10进制转2进制:Integer.toBinaryString(n);///n为要转换的10进制
10进制转8进制:Integer.toOctalString(n);
10进制转16进制:Integer.toHexString(n);
10进制转 r 进制 Integer.toString(n, r);