【笔记】Java语法
Java语法
兜兜转转,又绕回到Java了。
最近在学习Java,其实以前也学过,但是技术发展太快了,Java都出到14了。。是时候该更新一下知识体系了。
然后看的是网上好评如潮的《Java核心技术 卷Ⅰ》和《Java编程思想》。
不过,我感觉这两本书都有点长篇大论,比较适合初学者看,不适合复习。。
这两本书看过几页后,如果不做笔记,基本等于看了个寂寞。
然后也因为现在的Java,知识点还挺多的,所以把一些知识点记录下来。
总共分两篇,这篇记录Java的语法,下一篇记录Java常用的类库。
不打算写得过于详细,详细内容还是直接看书吧,这两篇文章当作纲要来用。
注释
点击查看详情
// 行注释
// 这是一行注释
// 块注释
/*
这是一块注释
这是一块注释
这是一块注释
*/
// 文档注释
/**
* 这是一个文档注释
* 这是一个文档注释
* 这是一个文档注释
*/
修饰符
点击查看详情
- 访问控制
publicprotected(子类或包内)private- default (包内)
static- 静态初始化代码块
- 静态字段
- 静态方法
- 嵌套类
final- 常量
- 常字段
- 最终方法
- 最终类
abstract- 抽象方法
- 抽象类
default- 默认方法
synchronized- 同步代码块
- 同步方法
volatile- 共享字段
transient- 非序列化字段
strictfp- 严格浮点方法
- 严格浮点类
native- 原生方法
基本数据类型
点击查看详情
// 布尔
boolean x = false;
boolean[] a = {true};
// 整数
byte x = 0;
short x = 0;
int x = 0;
long x = 0L;
int[] a = {1_2345_6789, 0B0_1111_1111, 0X0_FFFF_FFFF};
// 浮点数
float x = 0.0F;
double x = 0.0;
double[] a = {3.14, 1.0E5, 0X1.0P-5};
// 字符
char x = '\0';
char[] a = {'A', '"', '\s', '\n', '\uFFFF'};
// 字符串
String x = null;
String[] a = {"", "Hello!", """
<html>
<header></header>
<body>
<div>"lalala"</div>
</body>
</html>
"""};
// 引用
Object x = null;
数组
点击查看详情
var a = new int[5];
var a = new int[]{1, 3, 5, 7, 9};
int[] a = {1, 3, 5, 7, 9};
枚举
点击查看详情
enum A{
A0,
A1,
A2,
}
类型转换
点击查看详情
char -> int
byte -> short -> int -> long
float -> double
int ~> float
int -> double
long ~> float
long ~> double
any -> Object
运算符
点击查看详情
// 类型转换
(type)x
// 符号
+x
-x
// 自加、自减
++x
--x
x++
x--
// 算术
x+y
x-y
x*y
x/y
x%y
// 移位
x<<y
x>>y
x>>>y
// 按位
~x
x|y
x&y
x^y
// 比较
x==y
x!=y
x<y
x>y
x<=y
x>=y
// 逻辑
!x
x||y
x&&y
// 条件
c?vt:vf
// 赋值
x = y
// 算术赋值
x += y
x -= y
x *= y
x /= y
x %= y
// 移位赋值
x <<= y
x >>= y
x >>>= y
// 按位赋值
x |= y
x &= y
x ^= y
// 实例
obj instanceof type x
// switch
var r = switch(x){
case k00, k01 -> v0;
case k1 -> v1;
case k2 -> {
s2;
yield v2;
}
default -> v;
};
控制流程
点击查看详情
// if-else
if(c0){
s0;
}else if(c1){
s1;
}else{
s2;
}
// switch
switch(x){
case k00, k01 -> s0;
case k1 -> s1;
case k2 -> {
s2;
};
default -> s;
}
// while
while(c){
s;
}
// do-while
do{
s;
}while(c);
// for
for(sb; c; sa){
s;
}
// foreach
for(x: it){
s;
}
// other
continue;
break;
break label;
return;
return obj;
面向对象
点击查看详情
- 继承 (is-a)
- 聚合 (has-a)
- 依赖 (uses-a)
// 类
class A extends B implements C, D{
}
// 抽象类
abstract class A{
public abstract void m();
}
// 接口
interface A{
void m0();
default void m1(){
s;
}
}
// 嵌套类
class A{
public static class B{
}
}
// 内部类
class A{
public class B{
}
}
// 局部类
class A{
public void m(){
class B{
}
}
}
// 匿名类
interface A{
}
class B{
public void m(){
var x = new A(){
};
}
}
泛型
点击查看详情
// 泛型方法
class A{
public <T> void m(){
s;
}
}
// 泛型类
class A<T>{
}
// 泛型上界
<T extends A>
// 泛型下界
<T super A>
// 泛型通配符
<?>
<? extends A>
<? super A>
函数式
点击查看详情
// 函数式接口
interface A{
void m();
}
// lambda表达式
() -> {
s;
};
// 方法引用
A::m
// 构造器引用
A::new
注解
点击查看详情
- 内置元注解
@Retention@Target@Inherited@Repeatable@Documented@Native
- 内置注解
@Override@Deprecated@SuppressWarnings@SafeVarargs@FunctionalInterface
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD, ElementType.METHOD})
@interface A{
public int id() default 0;
public String desc() default "";
}
异常处理
点击查看详情
ThrowableError(非检查型)ExceptionRuntimeException(非检查型)IOException(检查型)- ... (检查型)
// 抛出异常
class A{
public void m() throws Exception{
throw new Exception();
}
}
// 捕获异常
// try-catch-finally
try{
s0;
}catch(x){
s1;
}finally{
s2;
}
// try-with-resources
try(rsc){
s0;
}catch(x){
s1;
}finally{
s2;
}
断言
点击查看详情
assert c;
assert c: x;
【笔记】Java语法的更多相关文章
- 《Java笔记——基础语法》
Java笔记--基础语法 一.字符串的拼接: 例如: System.out.println(""+""); 二.换行语句: 例如: Syst ...
- Java语法
java语法: 一个java程序可以说是一系列对象的集合,而这些对象都要通过调用彼此的方法来协同工作. 对象: 对象是一个实例,例如:一只猫,它是一个对象,有状态和行为.它的状态状态有:颜色,名字,品 ...
- Java语法糖1:可变长度参数以及foreach循环原理
语法糖 接下来几篇文章要开启一个Java语法糖系列,所以首先讲讲什么是语法糖.语法糖是一种几乎每种语言或多或少都提供过的一些方便程序员开发代码的语法,它只是编译器实现的一些小把戏罢了,编译期间以特定的 ...
- PHP笔记——java程序员看懂PHP程序
PHP笔记——java程序员看懂PHP程序 php是一种服务器端脚本语言,类型松散的语言. <?php ?> xml风格 <script language=”ph ...
- [java学习笔记]java语言核心----面向对象之this关键字
一.this关键字 体现:当成员变量和函数的局部变量重名时,可以使用this关键字来区别:在构造函数中调用其它构造函数 原理: 代表的是当前对象. this就是所在函数 ...
- [java学习笔记]java语言核心----面向对象之构造函数
1.构造函数概念 特点: 函数名与类名相同 不用定义返回值类型 没有具体的返回值 作用: 给对象进行初始化 注意: 默认构造函数 多个构造函数是以重载出现的 一个类中如果 ...
- 程序员带你学习安卓开发,十天快速入-对比C#学习java语法
关注今日头条-做全栈攻城狮,学代码也要读书,爱全栈,更爱生活.提供程序员技术及生活指导干货. 如果你真想学习,请评论学过的每篇文章,记录学习的痕迹. 请把所有教程文章中所提及的代码,最少敲写三遍,达到 ...
- Java语法基础(1)
Java语法基础(1) 1. Java是一门跨平台(也就是跨操作系统)语言,其跨平台的本质是借助java虚拟机 (也就是JVM(java virtual mechinal))进行跨平台使用. ...
- C++、Java语法差异对照表
C++.Java语法差异对照表 C++ and Java Syntax Differences Cheat Sheet First, two big things--the main function ...
随机推荐
- SpringMVC+Mybatis初尝试
一个月前简单学完了SpringMVC框架和Mybatis框架,一直没有使用过,今天主要用它做了个简单的学生管理系统,不过第一次用框架,实现的功能简单,比较low. 注:这里使用的数据库是SQLServ ...
- 线性代数的28法则:作为程序员掌握这些API就够用了……
目录 1. 向量 & 矩阵 1.1. 问: np.ndarray 与 np.matrix 的区别 1.2. 向量空间 2. 算术运算 2.1. 为什么线性代数定义的乘积运算不按照加法的规则(按 ...
- easypoi 读取 Excel 简单应用
背景 在做接口测试的时候,经常会使用 Excel 来存储对应的接口信息和用例信息,为了方便程序的读取,引入easypoi 工具来读取 Excel 内容.easypoi 比起 poi 使用更加的方便,代 ...
- PyCharm罢工并向你丢出了pip升级需求
一.事件缘由 最近在搞接口自动化框架,基于python自然少不了使用PyCharm.本来都是 在解决脚本上遇到的坑,突然出现了第三方库安装失败,这感觉就像大热天吃到 冰激凌,昏沉的脑袋瞬间清醒许多. ...
- Linux环境下操作Oracle数据库命令
A增量备份 在Oracle用户下进行: 1.su – oracle, pwd to make sure. 2.脚本位置more /home/oracle/arch.sh 3.运行脚本 ./arch.s ...
- Beta冲刺测试随笔
测试工作安排 人员安排: 余文锦,孙劼成,陈富杰,明锐,王彦杰,陈康杰:测试 杨铭海,张鑫宇测试用例的编写 测试工具选择和运用 本来计划Beta冲刺挑选人员进行测试相关的接触和学习并胜任测试工作,但是 ...
- drf之序列化组件(一):Serializer
序列化组件:Serializer.ModelSerializer.ListModelSerializer Serializer 偏底层 ModelSerializer 重点 List ...
- 7-3 树的同构(25 分) JAVA
给定两棵树T1和T2.如果T1可以通过若干次左右孩子互换就变成T2,则我们称两棵树是“同构”的. 例如图1给出的两棵树就是同构的,因为我们把其中一棵树的结点A.B.G的左右孩子互换后,就得到另外一棵树 ...
- I/O格式化与运算符
I/O格式化与运算符 输出函数 Python3 - print() 在Python3中.print()的使用方法如下: >>> # ==== Python3 print() ==== ...
- python基础扩展(二)
python基础扩展(二) 常用操作 1.startswith(以什么开始) endswith(y)什么结束 s='taiWanw39dd' print(s.startswith('t')) #意思是 ...