Java基础语法-关键字的使用介绍

| short | 短整型 | 占2个字节 | 0 | -32768 ~ 32767 | 123 |

| int | 整型 | 占4个字节 | 0 | -2^31 ~ 2^31 - 1 | 433 |

| long | 长整型 | 占8个字节 | 0L | -2^63 ~ 2^63 - 1 | 34L |

| float | 浮点型 | 占4个字节 | 0.0F | -2^128 ~ 2^128 | 32.2f |

| double | 双精度浮点型 | 占8个字节 | 0.0D | -2^1024 ~ 2^1024 | 55D |

| boolean | 布尔型 | 占1或4个字节 | false | true or false | true |

| char | 字符型 | 占2个字节 | 空 | ‘\u0000’ ~ ‘\uffff’ | ‘a’ |

  • boolean类型被编译为int类型,等于是说JVM里占用字节和int完全一样,int是4个字节,于是boolean也是4字节
  • boolean数组在Oracle的JVM中,编码为byte数组,每个boolean元素占用8位=1字节

程序逻辑控制

Java逻辑控制包含条件控制和循环控制,条件控制可以使用if、else,循环控制可以使用for、while。具体包含下面这些关键字。

| 关键字 | 含义 | 作用 |

| — | — | — |

| if | 如果… | if(…){},如果小括号中的条件成立返回true,则执行大括号中的内容 |

| else | 否则… | else 必须与if连用,不能单独使用,else后面可以接if语句 |

| switch | 开关 | switch(表达式) {

case 常量表达式1: 语句1;

break;

case 常量表达式2: 语句2;

default: 默认语句

}

case后面的常量表达式的数据类型要和switch后面的表达式的数据类型一致,且只能是基本数据类型或String类型(Java 1.7及以上支持) |

| case | 案例 | 用于switch语法中,表示switch的一个条件分支,如上面的常量表达式1等于switch表达式的值时,则执行语句1,否则继续判断下面的case |

| break | 打破、中断 | 用于提前退出 for、while 或 do 循环,或者在 switch 语句中用来结束 case 块。 break 总是退出最深层的 while、for、do 或 switch 语句。 |

| default | 默认 | 用来标记 switch 语句中的默认分支,如果switch中没有break语句或者任何一个break语句没有执行到,则都会执行default语句;default语句一般写在switch的最后,如果写在最上面或中间,则default下面的所有case永远不会被执行。 |

| for | 为… | for 语句的形式为 for(initialize; condition; increment) 。每次执行循环体之前将计算 condition 的结果。如果 condition 为 true,则执行循环体。 每次执行循环体之后,在计算下一个迭代的 condition 之前,将执行 increment 语句。 |

| do | 执行 | do {

} while(condition);

do 循环体至少执行一次。循环体执行结束后判断condition是否成立,成立则再次执行循环体,直到condition返回false |

| while | 当… | while(condition) {

}

当condition为true时则会执行循环体内容 |

| continue | 继续 | for(int i = 0; i < 5; i++) {

if (i == 3) continue;

Log.i(“index”, i);

}

出现在循环体中,当执行到continue语句时,其后面的循环体内容将不再执行,直接进行下一次循环操作,如上面的例子中将不会打印3 |

###异常处理

异常是程序运行中出现的错误。会打断程序正常执行。是java中提供的一种错误提示和处理的机制。

异常分为2类:

  • 错误(ERROR):通常指不是由程序造成并且在程序中不能处理或避免的错误。比如:内存溢出,Java虚拟机出错等

  • 异常(Exception):通常指由于程序代码不严谨造成的可以避免的错误或在程序中可以预先处理的错误。

抛出一个异常使用throw关键字,通过throws关键字在方法上标注有可能会发生的异常。

void printAge(int age) throws NumberFormatException {

if (age < 0) {

throw new NumberFormatException(“年龄不能小于0”);

}

}

程序抛出的异常可以使用try-catch进行捕获处理,

try {

// 尝试执行可能会发生异常的代码块

} catch(…) {

// 捕捉try块中发生的异常并处理

} catch(…) {

// 多重catch时父类异常必须写到子类之后,同级的异常没有先后顺序。

} finally {

// 必须执行块,无论try中是否发生异常,该块都会被执行,即使try中有return也会在return之前被执行,但是如果try中有System.exit(),则Java虚拟机会退出,则不会执行finally。

}

###类方法和变量修饰符

在Java中一共有4中访问修饰符。用于控制类和数据的访问权限。

按权限范围由小到大依次为:private、空(default)、protected、public.

控制的范围如下所示:

| 访问范围 | public | protected | default | private |

| — | — | — | — | — |

| 同类 | ok | ok | ok | ok |

| 同包 | ok | ok | ok | |

| 子类(不同包) | ok | ok | | |

| 不同包无继承的类 | ok | | | |

  • 抽象方法必须为public或者protected(因为如果为private,则不能被子类继承,子类便无法实现该方法),缺省情况下默认为public。

  • 接口中的方法必须是public abstract的

类和接口的相关修饰符

class:用来声明新的 Java类,该类是相关变量和/或方法的集合。类是面向对象的程序设计方法的基本构造单位。类通常代表某种实际实体,如几何形状或人。类是对象的模板。每个对象都是类的一个实例。要使用类,通常使用 new 操作符将类的对象实例化,然后调用类的方法来访问类的功能。

interface :用来声明新的Java接口,接口是方法和常量的集合。接口是 Java 语言的一项强大功能。任何类都可声明它实现一个或多个接口,这意味着它实现了在这些接口中所定义的所有方法。任何非抽象类如果实现了接口则必须提供在该接口中的所有方法的实现,若是抽象类实现了接口则抽象类或其子类要实现接口中的全部方法。

abstract:可以修改类或方法。abstract类可以扩展(增加子类),但不能直接实例化。abstract方法不在声明它的类中实现,但必须在某个子类中重写。采用abstract方法的类一定是抽象类,并且必须声明为abstract类。

extends:用在 class 或 interface 声明中,用于标识所声明的类或接口是 extends 关键字后的类或接口的子类或子接口。子类继承父类的所有 public 和 protected 变量和方法。 子类可以重写父类的任何非 final 方法。

class ContextImpl extends Context {}

public interface Closeable extends AutoCloseable {

public void close() throws IOException;

}

implements:在 class 声明中使用,表示所声明的类提供了在 implements 关键字后面的名称所指定的接口中所声明的所有方法的实现。类必须提供在接口中所声明的所有方法的实现。一个类可以实现多个接口。

this :用于引用当前实例。 当引用可能不明确时,可以使用 this 关键字来引用当前的实例。

super :用于引用使用该关键字的类的超类。 作为独立语句出现的 super 表示调用超类的构造方法。 super.methodName() 表示调用超类的方法。

new:用于创建类的新实例。 new 关键字后面的参数必须是类名,并且类名的后面必须是一组构造方法参数(必须带括号)。

static

static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念。

被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享。

只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内找到他们。因此,static对象可以在它的任何对象创建之前访问,无需引用任何对象。

用public修饰的static成员变量和成员方法本质是全局变量和全局方法,当声明它类的对象时,不生成static变量的副本,而是类的所有实例共享同一个static变量。static表示不要实例化就可以使用,这样就容易理解多了。

static变量

被static修饰的变量,叫静态变量或类变量;没有被static修饰的变量,叫实例变量。

对于静态变量在内存中只有一个拷贝(节省内存),JVM只为静态分配一次内存,在加载类的过程中完成静态变量的内存分配,可用类名直接访问(方便),当然也可以通过对象来访问(但是这是不推荐的)。

对于实例变量,每创建一个实例,就会为实例变量分配一次内存,实例变量可以在内存中有多个拷贝,互不影响(灵活)。

static方法

静态方法可以直接通过类名调用,任何的实例也都可以调用,因此静态方法中不能用this和super关键字,不能直接访问所属类的实例变量和实例方法(就是不带static的成员变量和成员成员方法),只能访问所属类的静态成员变量和成员方法。

static代码块

static代码块也叫静态代码块,是在类中独立于类成员的static语句块,可以有多个,位置可以随便放,它不在任何的方法体内,JVM加载类时会执行这些静态的代码块,如果static代码块有多个,JVM将按照它们在类中出现的先后顺序依次执行它们,每个代码块只会被执行一次,利用静态代码块可以对一些static变量进行赋值。

final:final可以修饰类、方法和变量。

修饰类: 最终类,不能被继承。

修饰方法:最终方法,不能被重写。

修饰变量:最终变量,常量,一旦赋值不能被改变。

enum:枚举是Java中一个特殊的类,一般表示一组常量,比如一年的 4 个季节,一个年的 12 个月份,Java 枚举类使用 enum 关键字来定义,各个常量使用逗号 , 来分割。

enum Color {

RED, GREEN, BLUE;

}

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

知其然不知其所以然,大厂常问面试技术如何复习?

1、热门面试题及答案大全

面试前做足功夫,让你面试成功率提升一截,这里一份热门350道一线互联网常问面试题及答案助你拿offer

2、多线程、高并发、缓存入门到实战项目pdf书籍

3、文中提到面试题答案整理

4、Java核心知识面试宝典

覆盖了JVM 、JAVA集合、JAVA多线程并发、JAVA基础、Spring原理、微服务、Netty与RPC、网络、日志、Zookeeper、Kafka、RabbitMQ、Hbase、MongoDB 、Cassandra、设计模式、负载均衡、数据库、一致性算法 、JAVA算法、数据结构、算法、分布式缓存、Hadoop、Spark、Storm的大量技术点且讲解的非常深入


《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
eeper、Kafka、RabbitMQ、Hbase、MongoDB 、Cassandra、设计模式、负载均衡、数据库、一致性算法 、JAVA算法、数据结构、算法、分布式缓存、Hadoop、Spark、Storm的大量技术点且讲解的非常深入**

[外链图片转存中…(img-cqS0Y0je-1713437867761)]

[外链图片转存中…(img-nHmcKGoW-1713437867762)]

[外链图片转存中…(img-9mHfBym8-1713437867762)]
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值