Java语法

兜兜转转,又绕回到Java了。

最近在学习Java,其实以前也学过,但是技术发展太快了,Java都出到14了。。是时候该更新一下知识体系了。

然后看的是网上好评如潮的《Java核心技术 卷Ⅰ》和《Java编程思想》。

不过,我感觉这两本书都有点长篇大论,比较适合初学者看,不适合复习。。

这两本书看过几页后,如果不做笔记,基本等于看了个寂寞。

然后也因为现在的Java,知识点还挺多的,所以把一些知识点记录下来。

总共分两篇,这篇记录Java的语法,下一篇记录Java常用的类库

不打算写得过于详细,详细内容还是直接看书吧,这两篇文章当作纲要来用。


注释

点击查看详情
// 行注释
// 这是一行注释 // 块注释
/*
这是一块注释
这是一块注释
这是一块注释
*/ // 文档注释
/**
* 这是一个文档注释
* 这是一个文档注释
* 这是一个文档注释
*/

修饰符

点击查看详情
  • 访问控制

    • public
    • protected (子类或包内)
    • 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 "";
}

异常处理

点击查看详情
  • Throwable

    • Error (非检查型)
    • Exception
      • RuntimeException (非检查型)
      • 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语法的更多相关文章

  1. 《Java笔记——基础语法》

    Java笔记--基础语法       一.字符串的拼接: 例如: System.out.println(""+"");     二.换行语句: 例如: Syst ...

  2. Java语法

    java语法: 一个java程序可以说是一系列对象的集合,而这些对象都要通过调用彼此的方法来协同工作. 对象: 对象是一个实例,例如:一只猫,它是一个对象,有状态和行为.它的状态状态有:颜色,名字,品 ...

  3. Java语法糖1:可变长度参数以及foreach循环原理

    语法糖 接下来几篇文章要开启一个Java语法糖系列,所以首先讲讲什么是语法糖.语法糖是一种几乎每种语言或多或少都提供过的一些方便程序员开发代码的语法,它只是编译器实现的一些小把戏罢了,编译期间以特定的 ...

  4. PHP笔记——java程序员看懂PHP程序

    PHP笔记——java程序员看懂PHP程序   php是一种服务器端脚本语言,类型松散的语言. <?php   ?>       xml风格 <script language=”ph ...

  5. [java学习笔记]java语言核心----面向对象之this关键字

    一.this关键字 体现:当成员变量和函数的局部变量重名时,可以使用this关键字来区别:在构造函数中调用其它构造函数 原理:         代表的是当前对象.         this就是所在函数 ...

  6. [java学习笔记]java语言核心----面向对象之构造函数

    1.构造函数概念 特点: 函数名与类名相同 不用定义返回值类型 没有具体的返回值 作用:                给对象进行初始化 注意: 默认构造函数 多个构造函数是以重载出现的 一个类中如果 ...

  7. 程序员带你学习安卓开发,十天快速入-对比C#学习java语法

    关注今日头条-做全栈攻城狮,学代码也要读书,爱全栈,更爱生活.提供程序员技术及生活指导干货. 如果你真想学习,请评论学过的每篇文章,记录学习的痕迹. 请把所有教程文章中所提及的代码,最少敲写三遍,达到 ...

  8. Java语法基础(1)

    Java语法基础(1) 1.      Java是一门跨平台(也就是跨操作系统)语言,其跨平台的本质是借助java虚拟机 (也就是JVM(java virtual mechinal))进行跨平台使用. ...

  9. C++、Java语法差异对照表

    C++.Java语法差异对照表 C++ and Java Syntax Differences Cheat Sheet First, two big things--the main function ...

随机推荐

  1. 1.Go 开始搞起

    link 1. IDE Go Land 服务器激活 2. 资源 中文网站 翻译组 翻译组wiki 待认领文章 入门指南 中文文档 fork 更新 github 中如何定期使用项目仓库内容更新自己 fo ...

  2. CSS布局之Flex布局

    Flex布局,可以简便.完整.响应式地实现各种页面布局. 浏览器支持:得到所有浏览器的支持.(注:Flex布局将成为未来布局的首选方案)   一. Flex布局的概念 Flex是Flexible Bo ...

  3. laravel里的队列学习

    首先,我们要搞明白几个概念,从小到大依次有:队列任务,队列,连接. 他们属于依次被包含的关系,一个队列里有许多的队列任务,一个连接中可以有许多队列. 队列任务:对每个用户都会进行的操作,理解为队列任务 ...

  4. OpenSSH详解

    OpenSSH详解(思维导图) 1. SSH概述 SSH 软件架构 认证方式 2. OpenSSH 2.1 客户端程序ssh 配置文件 ssh命令 客户端免密登录 scp sftp 2.2 服务端程序 ...

  5. [ARC101B]Median of Medians

    题目   点这里看题目. 分析   看到中位数,当然会想到二分答案.   考虑检查答案.自然,我们需要找出中位数小于二分值\(k\)的区间的个数.考虑构造一个\(b\): \[b_i=(-1)^{[a ...

  6. Keiichi Tsuchiya the Drift King (c++三角函数公式)【几何+三角函数公式】

    Keiichi Tsuchiya the Drift King 感谢:  https://blog.csdn.net/xiao_you_you/article/details/89357815 题目链 ...

  7. 将MySQL库的表转入到MSSQL中的某个库中(Employees下的Employees表 → pubs库下)_2

    将MySQL库的表转入到MSSQL中的某个库中(Employees下的Employees表 → pubs库下, 此pubs下的表名是employee,不冲突),方法大致以下几个(另有其他方法待补充), ...

  8. 淘宝官网css初始化

    body, h1, h2, h3, h4, h5, h6, hr, p, blockquote, dl, dt, dd, ul, ol, li, pre, form, fieldset, legend ...

  9. 【Azure SQL】数据库性能分析

    前置条件 用户有查询数据统计权限 GRANT VIEW DATABASE STATE TO database_user; CPU性能问题 正在发生 查看前X个CPU消耗查询 (汇总) SELECT T ...

  10. C++入门-控制台版的通讯录管理系统

    通讯录管理系统 1.系统需求 通讯录是一个可以记录亲人.好友信息的工具. 本教程主要利用C++来实现一个通讯录管理系统 系统中需要实现的功能如下: 添加联系人:向通讯录中添加新人,信息包括(姓名.性别 ...