Java基础知识点回顾(一)

数据类型和运算符

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 。

数制表示形式:
二进制整数:要求以0b0B开头,如:

//a的十进制值为17
int a = 0b10001;

八进制整数,要求以0开头,如:

//a的十进制值为17
int a = 021;

十六进制数,要求以0x0X开头,如:

//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. 项目1
  2. 项目2
  3. 项目3
  • 计划任务
  • 完成任务

创建一个表格

一个简单的表格是这么创建的:

项目Value
电脑$1600
手机$12
导管$1

设定内容居中、居左、居右

使用:---------:居中
使用:----------居左
使用----------:居右

第一列第二列第三列
第一列文本居中第二列文本居右第三列文本居左

SmartyPants

SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:

TYPEASCIIHTML
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)=(n1)!nN 是通过欧拉积分

Γ ( z ) = ∫ 0 ∞ t z − 1 e − t d t   . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)=0tz1etdt.

你可以找到更多关于的信息 LaTeX 数学表达式here.

新的甘特图功能,丰富你的文章

Mon 06 Mon 13 Mon 20 已完成 进行中 计划一 计划二 现有任务 Adding GANTT diagram functionality to mermaid
  • 关于 甘特图 语法,参考 这儿,

UML 图表

可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图::

张三 李四 王五 你好!李四, 最近怎么样? 你最近怎么样,王五? 我很好,谢谢! 我很好,谢谢! 李四想了很长时间, 文字太长了 不适合放在一行. 打量着王五... 很好... 王五, 你怎么样? 张三 李四 王五

这将产生一个流程图。:

链接
长方形
圆角长方形
菱形
  • 关于 Mermaid 语法,参考 这儿,

FLowchart流程图

我们依旧会支持flowchart的流程图:

Created with Raphaël 2.2.0 开始 我的操作 确认? 结束 yes no
  • 关于 Flowchart流程图 语法,参考 这儿.

导出与导入

导出

如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。

导入

如果你想加载一篇你写过的.md文件或者.html文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
继续你的创作。


  1. 注脚的解释 ↩︎

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值