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. MySQL触发器的详细教学与综合分析

    所有知识体系文章,GitHub已收录,欢迎老板们前来Star! GitHub地址: https://github.com/Ziphtracks/JavaLearningmanual MySQL触发器 ...

  2. C++中类成员的访问控制

    结论 首先给出结论,请看下图,看图说话最容易理解了. 类眼中的自己 类中定义的所有成员,不论是以public, protected还是private修饰,对类自身而言,它们都是可见的. 对象眼中的类 ...

  3. CISCN 2019-ikun

    0x01 进去网址,页面如下: 刚开始有个登陆和注册的按钮,上图是我已经注册后登陆成功后的页面,我们发现在图的左下角给了一个关键的提示,购买LV6,通过寻找我们发现页面数很多,大概500页,一个一个找 ...

  4. 一文带你了解Redis持久化完整版本

    本文讲解知识点 持久化的简介 RDB AOF RDB与AOF的区别 持久化应用场景 对于持久化这个功能点,其实很简单没有那么复杂 演示环境 centos7.0 redis4.0 redis存放目录:/ ...

  5. Redis源码阅读一:简单动态字符串SDS

    源码阅读基于Redis4.0.9 SDS介绍 redis 127.0.0.1:6379> SET dbname redis OK redis 127.0.0.1:6379> GET dbn ...

  6. 【vue】axios二次封装,更好的管理api接口和使用

    在现在的前端开发中,前后端分离开发比较主流,所以在封装方法和模块化上也是非常需要掌握的一门技巧.而axios的封装也是非常的多,下面的封装其实跟百度上搜出来的axios封装或者axios二次封装区别不 ...

  7. 微信小程序-页面栈

    在小程序中以栈的形式维护了当前的所有页面 当发生路由切换的时候,页面栈的表现如下: 初始化:新页面入栈 打开新页面:新页面入栈(调用 API wx.navigateTo 或使用组件 <navig ...

  8. JAVA 字节流 与 字符流 的区别

    字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同呢? 字节流 在操作时本身不会用到缓冲区(内存),是文件本身直接操作的 字符流 在操作时使用了缓冲区,通过缓冲区再操作文 ...

  9. RabbitMQ:一、入门

    消息中间件 使用消息中间件的作用 解耦 削峰 异步 顺序保证 冗余(存储) RabbitMQ的特点 可靠性 灵活的路由 扩展性 高可用 多语言客户端 插件机制 多协议(主要还是AMQP) 相关概念 P ...

  10. Idea配置JRebel插件的详细配置及图解

    Idea最新JRebel插件的详细配置及图解 地址:https://blog.csdn.net/nyotengu/article/details/80629631#commentBox Ⅰ安装jreb ...