Java基础最全整理01

一、Java的特性与优势

  1. 特点
  • 简单

  • 面向对象

  • 可移植/跨平台

  • 高性能

  • 安全性

  • 动态性

  • 分布式

  • 健壮性

  1. 优点
  • 平台无关性,拜托硬件束缚,“一次编写,到处运行。”

  • 相对安全的内存管理和访问优势,避免大部嗯内存泄漏和指针越界

  • 热点代码检测时运行时编译及优化,使程序随运行时间增长获得高性能

  • 完善的应用程序接口,支持第三方类库

二、Java的三大版本

  1. JavaSE:(Java Standard Edition)标准版,定位在个人计算机的应用上

  1. JavaME:(Java Micro Edition)微型版,用于嵌入式开发,定位在手机等电子消费产品上的应用。

  1. JavaEE:(Java Enterprise Edition)企业级,定位在服务器上的应用

三、JDK,JRE,JVM三者之间的区别和联系

1.基础简介

JDK:java开发工具包,java须在基础上进行应用程序的开发

JRE:java运行时环境,java程序运行起来得有它

JVM:Java虚拟机,为了屏蔽Java程序在不同操作系统上运行的差异性,它是使得java可以跨平台的原因,位于JDK的最底层。

2.JDK和JRE的区别

JDK提供了编译运行时Java程序的各种工具,包括编译器、JRE以及常用类库,是Java的核心。

JRE是Java程序运行的必要环境,包括JVM、核心类库,核心配置工具。

四、Java运行机制

java程序的运行机制分为编写、编译和运行三个步骤

  1. 编写

编写是指在Java开发魂晶中进行代码程序的编写,最终生成后缀名“.java”的java源文件

2.编译

编译是指使用Java编译器对yuanwenjian进行错误排查的过程,编译后生成后缀名为“.class”的字节码文件,该文件可以被java虚拟机(JVM)的解释器正常读取。

3.运行

运行是指使用Java解释器将字节码文件翻译成机器代码,执行并显示结果。字节码文件是一种和任何具体机器环境及操作系统环境无关的中间代码,它是一种二进制文件,是Java源文件由Java编译器编译后生成的目标代码文件。编程人员和计算机都无法直接读懂字节码文件,它必须用专用的Java解释器来解释执行,因此Java是一种在编译基础上进行解释运行的语言。

完整的程序运行过程总结:从编写出来的Java源文件,经过Java编译器编译为字节码文件,再通过JVM执行程序,然后将程序的运行结果展示给用户。

五、Java基础

1.注释
  • 单行注释://用于注释少量的代码或者对附近的代码进行说明

快捷键:选中区域+alt+/ 取消注释也是同样这个快捷键

  • 多行注释:/**/多用于注释多行代码

快捷键:选中区域+Ctrl+shift+/

取消注释:选中区域+Ctrl+shift+\

  • 文档注释:/** */一般用于为类和方法名进行说明

快捷键:alt+shift+j

注意区分:什么是注解?什么是元注解?

注解是一种标记,使类或者接口附加额外信息,帮助编译器和JVM完成一些特定功能。例如@Override

元注解是自定义注解的注解

2.标识符和关键字
(1)java标识符的定义
  • 包名、类名、方法名、参数名、变量名等,这些符号被称为标识符。

  • 标识符可以由字母、数字、下划线和美元符号$组成

  • 标识符不能以数字开头,不能是Java中的关键字

  • Java区分大小写

  • 不可以用关键字和保留字作为标识符,但标识符能包括关键字和保留字

  • 标识符不能含有空格

例:合法的标识符:date、$abc、D$Date

不合法的标识符:123.com、2com、for、if

(2)Java标识符规则
  • 包名所有字母必须小写

  • 类名和接口名每个单词的首字母都要大写,例子:ArrayList

  • 常量名所有的字母都要大写,单词之间用下划线连接。例子:DAY_OF_MONDAY

  • 变量名和方法名的第一个单词首字母小写,从第二个单词开始,每个单词首字母大写。例子:lineName

  • 在程序中,应该尽量使用有意义的英文单词来定义标识符,使得程序便于阅读。

(3)Java关键字
  • 访问修饰符的关键字(3个)

关键字

意思

备注,常用

public

公有的

可跨包

protected

受保护的

当前包内可用

private

私有的

当前类可用

  • 定义类、接口、抽象类和实现接口、继承类的关键字、实例化对象(6个)

关键字

意思

备注,常用

class

public class A(){} 花括号里有已实现方法体,类名需要与文件名相同

interface

接口

public interface B(){} 花括号里有方法体,但没有实现,方法体句子后面是英文分号“:”结尾

abstract

声明抽象

public abstract class C(){} 介于类与接口中间,可以有也可以没有已经实现的方法体

extends

继承

用于类继承类 public class A extends D(){}

implements

实现

用于类或接口实现接口public class A interface B(){}

new

创建新对象

A a=new A(); A表示一个类

  • 包的关键字(2个)

关键字

意思

备注,常用

import

引入包的关键字

当使用某个包的一些类时,仅需类名 然后使用ctrl+shift+o或者选定类名(类或属性或方法)按住ctrl+单击 即可自动插入类所在的包。如:JFrame 快捷键之后自动加入

package

定义包的关键字

将所有有关的类放在一个包类以便查找修改等。如:package javake.flycat.draw002;

  • 数据类型的关键字(12个)

关键字

意思

备注,常用

byte

字节型

1B=8bit

short

短整型

2B=16bit

int

整型

4B=32bit

long

长整型

8B=64bit

float

单精度浮点型

4B

double

双精度浮点型

8B

char

字符型

2B

boolean

布尔型

--

void

无返回

public void A(){} 其他需要返回的经常与return连用

null

空值

true

false

  • 条件循环(流程控制)(12个)

关键字

意思

备注,常用

if

如果

if(){} 如果小括号里面怎么怎么样 花括号就怎么怎么样

else

否则

常与if连用,用法相同

while

当什么时候

while 怎么样就do什么 while(){}

for

满足三个条件时

for ( ; ; ){}

switch

开关

switch(表达式)

{

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

....

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

default:语句;

}

case

返回开关里的结果

default

默认

do

运行

长与while连用

break

跳出循环

continue

继续

中断本次循环,并并开始下一次

return

返回

return 一个返回值类型

instanceof

实例

一个二元操作符,和==,>,<是同一类的。测试它左边的对象是否是它右边的类的实例,返回boolean类型的数据

  • 修饰方法、类、属性和变量(9个)

关键字

意思

备注,常用

static

静态的

属性和方法都可以用static修饰,直接使用类名.属性和方法名。 只有内部类可以使用static关键字修饰,调用直接使用类名.内部类类名进行调用。 static可以独立存在。静态块

final

最终的不可被改变的

方法和类都可以用final来修饰

final修饰的类是不能被继承的

final修饰的方法是不能被子类重写。

常量的定义:

final修饰的属性就是常量。

super

调用父类的方法

常见public void paint(Graphics g){

super.paint(g); ··· }

this

当前类的父类对象

调用当前类中的方法(表示调用这个方法的对象)

this.addActionListener(al):等等

native

本地

strictfp

严格、精准

synchronized

线程、同步

transient

短暂

volatile

易失

  • 错误处理(5个)

关键字

意思

备注,常用

catch

异常处理

1.try+catch

程序的流程是:运行到try块中,如果有异常抛出,则转到catch块去处理。然后执行catch块后面的语句

2.try+catch+finally

程序的流程是:运行到try块中,如果有异常抛出,则转到catch块,catch块执行完毕后,执行finally块的代码,再执行finally块后面的代码。

如果没有异常抛出,执行完try块,也要去执行finally块的代码。然后执行finally块后面的语句

3.try+finally

程序的流程是:运行到try块中,如果有异常抛出的话,程序转向执行finally块的代码。那末finally块后面的代码还会被执行吗?不会!因为你没有处理异常,所以遇到异常后,执行完finally后,方法就已抛出异常的方式退出了。

这种方式中要注意的是,由于你没有捕获异常,所以要在方法后面声明抛出异常

try

捕获异常

finally

有没有异常都执行

throw

抛出一个异常对象

一些可以导致程序出问题的因素,比如书写错误,逻辑错误或者是api的应用错误等等. 为了防止程序的崩溃就要预先检测这些因素,所以java 使用了异常这个机制.

在java中异常是靠 "抛出" 也就是英语的"throw" 来使用的,意思是如果发现到什么异常的时候就把错误信息 "抛出"

throws

声明一个异常可能被抛出

把异常交给他的上级管理,自己不进行异常处理

  • 剩余2个

关键字

意思

备注,常用

enum

美剧,列举类别

assert

断言

3.数据类型
  • 基本类型:见前文的数据类型关键字

  • 引用类型:类,接口,数组

4.数据类型的扩展
(1)整数扩展
int i1 = 010;
int i2 = 0x10;

上述中的i1=8,i2=16.因为以数字0开头表示八进制,以0x开头表示计算机里的十六进制;

(2)浮点数扩展
float f = 0.1F;
double d = 1.0/10;

输出的结果f=0.1,d=0.1,但计算机在判断f和d是否相等时,计算机会判断为false。

(3)字符扩展
char c1 = 'a';
char c2 = '中';

System.out.println(c1);
System.out.println((int)c1);
System.out.println(c2);
System.out.println((int)c2);

输出的结果:a,97,中,20013

(4)boolean扩展
boolean flag = true;
if(flag == true){}
if(flag){}

上面第二行和第三行写法不同但作用相同

5.类型转换

在java中整型、实型、字符型被视为简单数据类型,这些类型由低级到高级分别为(byte,short,chart)、int、long、float、double。

(1)自动类型转换:从低级到高级。

(2)强制类型转换:从高级到低级,注意有内存溢出问题,得出的结果很可能

是负数。

注意:

  • boolean类型不能转换

  • 不能把不相干的类型转换

  • 有内存溢出和精度问题存在

6.变量

变量是程序中最基本的存储单元,相当于占用了内存中的空间,其要素包括变量名、变量类型和作用域。

(1)注意事项

  • 在java中,所有的变量在使用前必须声明,声明变量的基本格式如下:

类型 变量名 [ = value];
例:int a = 1;
int a=1,b=2,c=3;
//可以这样用逗号隔开,但不建议这样做。
  • java取的变量名必须是合法的

  • java的变量定义是以分号结束

(2)java语言支持的变量类型

  • 类变量:独立于方法之外的变量,用static修饰;

  • 实例变量:独立于方法之外的变量,不过没有static。从属对象,如果不初始化,默认值为0,boolean类型的默认值为false,除了基本类型其他默认为null。

  • 局部变量:类的方法中的变量。必须声明和初始化值

//实例
public class Variable{
    static int allClicks=0;    // 类变量
 
    String str="hello world";  // 实例变量
 
    public void method(){
 
        int i =0;  // 局部变量
 
    }
}
7.常量

java常量可以理解为特殊的变量,定义后不能改变。

static final double PI = 3.1415926;
注:java命名规则:
  • 包命名:包常用顶级域名作为前缀,例如com,net,org,edu,gov,cn,io等,随后紧跟公司/组织/个人名称以及功能模块名称。示例:

package org.springframework.boot.autoconfigure.cloud
package org.springframework.boot.util
package org.hibernate.action
package org.hibernate.cfg
package com.alibaba.druid
  • 类名:首字母大写以及遵循驼峰规则

  • 方法名:首字母小写以及遵循驼峰规则

  • 局部变量:首字母小写以及遵循驼峰准则

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值