数据类型和运算符
Java是一种强类型语言,每个变量都必须声明其类型。
基本数据类型(8种)
整型(4种)
-
byte
数据类型是8位、有符号的,以二进制补码表示的整数;
最小值是 -128(-2^7);
最大值 是 127( 2^7 - 1);
默认值是 0; -
short
数据类型是16位、有符号的以二进制补码表示的整数
最小值是 -32768(-2^15);
最大值 是 32767( 2^15 - 1);
默认值是 0; -
int
数据类型是32位、有符号的以二进制补码表示的整数;
最小值是 -2,147,483,648(-2^31);
最大值 是 2,147,483,647( 2^31 - 1);
默认值是 0 ; -
long
数据类型是64位、有符号的以二进制补码表示的整数;
最小值是 -9,223,372,036,854,775,808(-2^63);
最大值 是 9,223,372,036,854,775,807( 2^63 - 1);
默认值是 0L;
整型变量默认为 int 。
数制表示形式:
二进制整数:要求以0b或0B开头,如:
//a的十进制值为17
int a = 0b10001;
八进制整数,要求以0开头,如:
//a的十进制值为17
int a = 021;
十六进制数,要求以0x或0X开头,如:
//a的十进制值为17
int a = 0x11;
浮点型(2种)
-
float
数据类型是单精度、32位、符合IEEE 754标准的浮点数;
表数范围是 -3.403E38 ~ 3.403E38;
尾数可以精确到7位有效数字;
默认值是 0.0f; -
double
数据类型是双精度、64位、符合IEEE 754标准的浮点数;
表数范围是 -1.798E308 ~ 1.798E308;
精度是float类型的两倍;
默认值是 0.0d;
浮点数默认类型为double。
浮点型两种表示形式:
十进制形式:如:0.314、3.14、314.0等等
科学计数形式:如:314e2、314E2、314E-2等等
浮点型是不精确的,一定不要用于比较!
double a = 0.1;
double b = 1/10;
System.out.println(a==b); //输出结果为false
若要比较,使用java.math包中的Biginteger和BigDecimal类
import java.math.BigDecimal;
BigDecimal a = BigDecimal.valueOf(0.1);
BigDecimal b = BigDecimal.valueOf(1.0/10);
System.out.println(a.equals(b)); //输出结果为true
字符型(1种)
- char
类型是一个单一的16位 Unicode 字符;
最小值是 \u0000(即为0);
最大值是 \uffff(即为65,535);
布尔型(1种)
- boolean
数据类型表示一位的信息;
默认值是 false;
//极其不推荐的写法
if(flag==true)
if(flag==true)
//应使用的写法
if(flag)
if(!flag)
Java中不可使用 0、1 代替 false、true
引用数据类型
空间为4字节
- 类
- 接口
- 数组
运算符
整数运算
- 如果两操作数有一个为long,则结果为long。
- 没有long时,结果为int。即使操作数全为byte,short,结果也为int。
浮点运算
- 如果两操作数有一个为double,则结果为double。
- 只有两个操作数都为float,结果才为float。
取模运算
- 余数符号和左边操作数相同
逻辑运算符
- & 、 | :逻辑与、逻辑非
- &&、||:短路与、短路非(当 op1 && op2 的op1为false时,表达式值直接为false,跳过op2的判断;|| 同理)
连接符
当二目连接符“+”的左右至少有一个为String类型时,此时“+”为字符串连接符。
String str = "3";
int a = 4;
int b = 5;
System.out.println(str+a); //输出34
System.out.println(a+b); //输出9
System.out.println(a+b+str);//输出93
流程控制语句
swith case
case会从匹配到匹配值后一直匹配,直到遇到break或结束
- switch可作用于char byte short int及对应的包装类
- switch不可作用于long double float boolean,包括他们的包装类
- switch中可以是字符串类型,String(JDK1.7之后才可以作用在string上)
- switch中可以是枚举类型(JDK1.5之后)
面向对象
内存分析
- 栈:存放局部变量,先进后出,自下而上存储,方法执行完毕,自动释放空间。
- 堆:存放new出来的对象,需要垃圾回收器来回收。
- 方法区:存放:类的信息(代码),static变量,字符串常量等.。
传值机制
Java中,方法中的所有参数都是 “值传递”
访问权限(属性和方法)
* | 同一个类 | 同一个包 | 子孙类 | 所有类 |
---|---|---|---|---|
Private | √ | |||
友好 | √ | √ | ||
Protected | √ | √ | √ | |
Public | √ | √ | √ | √ |
重写
重写方法不能使用比被重写方法更严格的访问权限。
构造方法调用顺序
构造方法第一句总是super(…)来调用父类的构造方法,无论是否被显示写出。
继承
- 上转型
子类转换为父类:自动转换
上转型对象不能操作子类新增的成员变量和方法。
上转型对象可以操作子类继承或重写的成员变量和方法
如果子类重写了父类的某个方法,上转型对象调用该方法时,是调用的重写方法。 - 下转型
父类转换为子类:强制转换
(绝不是做手术,而是父类的真面目就是一个子类,否则会出现类型转换错误)
抽象类
- 可以包含属性(常量、变量)、方法(抽象方法、非抽象方法)、构造方法。
- 抽象方法没有方法体,且必须被子类实现。
接口
- 接口可以多继承(一个接口可以继承多个接口),并且一个类可以实现多个接口。
类只能单继承。 - 接口中只能有常量(总是用public static final修饰,省略也是)和 方法(总是public abstract,省略的话也是)
实用类
- System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length):从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。
- Arrays.toString(Object[] a):返回指定数组内容的字符串表示形式 。
- Arrays.sort(Object[] a):对指定的数组按升序进行排序。
- Arrays.binarySearch(Object[] a, Object key):使用二分搜索法来搜索指定的数组的范围,以获得指定的值。
String类
- String类为不可变字符序列
- 字符串比较值相等时用equals()方法
//编译器做了优化,在编译时将字符串进行拼接
String s1 = "hello"+"java";
String s2 = "hellojava";
System.out.println(s1==s2); //输出true
//编译时未知变量总存储的内容,无法在编译时进行优化
String str1 ="hello";
String str2 ="java";
String s3 = str1+str2;
System.out.println(s2==s3); //输出false
System.out.println(s2.equals(s3)); //输出false
- 常用方法
char charAt(int index):返回字符串中第index个字符。
boolean equals(String other):如果字符串与other相等,返回true
boolean equalsIgnoreCase(String other):如果字符串与other相等(忽略大小写),则返回true
int indexOf(String str)
lastIndexOf()
int length():返回字符串的长度。
String replace(char oldChar,char newChar):返回一个新串,它是通过用 newChar 替换此字符串中出现的所有oldChar而生成的
S X T • boolean startsWith(String prefix) • 如果字符串以prefix开始,则返回true • boolean endsWith(String prefix) • 如果字符串以prefix结尾,则返回true • String substring(int beginIndex) • String substring(int beginIndex,int endIndex) • 返回一个新字符串,该串包含从原始字符串beginIndex到串尾或endIndex-1的所有字符 • String toLowerCase() • 返回一个新字符串,该串将原始字符串中的所有大写字母改成小写字母 • String toUpperCase() • 返回一个新字符串,该串将原始字符串中的所有小写字母改成大写字母 • String trim() • 返回一个新字符串,该串删除了原始字符串头部和尾部的空格
StringBuilder&&StringBuffer
- StringBuilder和StringBuffer为可变字符序列。
- StringBuilder线程不安全,效率高;StringBuffer线程安全,效率低。
- StringBuilder链式调用
StringBuilder sb = new StringBuilder("abcde");
sb.delete(1,3).insert(1,"OK").append("OK"); //链式调用
System.out.println(sb); //输出aOKdeOK
包装类
- 自动装箱&自动拆箱
- Integer类缓存[-128,127]的数字,即创建值为[-128,127]的Interger对象时,直接从缓存拿出,而不是创建新对象。
Integer a1 = 123;
Integer a2 = Integer.valueOf(123);
System.out.println(a1==a2); //输出true
Integer b1 = 223;
Integer b2 = Integer.valueOf(223);
System.out.println(b1==b2); //输出false
IO流
标准操作步骤
- 创建源
- 选择流
- 操作
- 释放资源
多线程
实现多线程的三种方式
- 重写Thread类(常用)
- 实现Runable接口(常用)
- JUC并发包下实现callable接口
To Be Continued…
To Be Continued…
功能快捷键
撤销:Ctrl/Command + Z
重做:Ctrl/Command + Y
加粗:Ctrl/Command + B
斜体:Ctrl/Command + I
标题:Ctrl/Command + Shift + H
无序列表:Ctrl/Command + Shift + U
有序列表:Ctrl/Command + Shift + O
检查列表:Ctrl/Command + Shift + C
插入代码:Ctrl/Command + Shift + K
插入链接:Ctrl/Command + Shift + L
插入图片:Ctrl/Command + Shift + G
如何改变文本的样式
强调文本 强调文本
加粗文本 加粗文本
标记文本
删除文本
引用文本
H2O is是液体。
210 运算结果是 1024.
生成一个适合你的列表
- 项目
- 项目
- 项目
- 项目
- 项目1
- 项目2
- 项目3
- 计划任务
- 完成任务
创建一个表格
一个简单的表格是这么创建的:
项目 | Value |
---|---|
电脑 | $1600 |
手机 | $12 |
导管 | $1 |
设定内容居中、居左、居右
使用:---------:
居中
使用:----------
居左
使用----------:
居右
第一列 | 第二列 | 第三列 |
---|---|---|
第一列文本居中 | 第二列文本居右 | 第三列文本居左 |
SmartyPants
SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:
TYPE | ASCII | HTML |
---|---|---|
Single backticks | 'Isn't this fun?' | ‘Isn’t this fun?’ |
Quotes | "Isn't this fun?" | “Isn’t this fun?” |
Dashes | -- is en-dash, --- is em-dash | – is en-dash, — is em-dash |
创建一个自定义列表
-
Markdown
- Text-to- HTML conversion tool Authors
- John
- Luke
如何创建一个注脚
一个具有注脚的文本。1
注释也是必不可少的
Markdown将文本转换为 HTML。
KaTeX数学公式
您可以使用渲染LaTeX数学表达式 KaTeX:
Gamma公式展示 Γ ( n ) = ( n − 1 ) ! ∀ n ∈ N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb N Γ(n)=(n−1)!∀n∈N 是通过欧拉积分
Γ ( z ) = ∫ 0 ∞ t z − 1 e − t d t   . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)=∫0∞tz−1e−tdt.
你可以找到更多关于的信息 LaTeX 数学表达式here.
新的甘特图功能,丰富你的文章
- 关于 甘特图 语法,参考 这儿,
UML 图表
可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图::
这将产生一个流程图。:
- 关于 Mermaid 语法,参考 这儿,
FLowchart流程图
我们依旧会支持flowchart的流程图:
- 关于 Flowchart流程图 语法,参考 这儿.
导出与导入
导出
如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。
导入
如果你想加载一篇你写过的.md文件或者.html文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
继续你的创作。
注脚的解释 ↩︎