当前位置: 首页 > article >正文

JAVA基础

JAVA

跨平台

是指java虚拟机(JVM),在不同的操作系统上安装jvm,然后程序运行在JVM

JRE和JDK

JRE:是JAVA运行时环境,包括其JVM和运行时所需要的核心类库
JDK:是JAVA程序开发工具包,包含JRE和开发人员使用的工具

JAVA

  • 编译型
  • 解释型

注释

  • 单行注释
    //
  • 多行注释
    /**/
  • 文档注释(javaDoc)
    /**
    /

标识符&关键字

  • 标识符
  • 关键字

数据类型

要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用

两大分类

  • 基本类型
  • 引用类型
    在这里插入图片描述

什么是字节

  • 位:是计算机内部存储的最小单位
  • 字节:是计算机总数据处理的基本单位,习惯上有大写B表示
  • 1B(byte,字节)=8bit(位)

进制

1bit表示1位
1B=8b 表示一个字节
1024B=1KB
1024KB=1M
1024M=1G

浮点数

浮点数是有点的离散,存在舍入误差。接近但不等于。
解决:Bigdecimal 类

字符型

所有的字符本质就是数字,涉及到Uniconde编码表

类型转换

低--------------------------------------------------高
byte->short>char->int>long->float->double(小数优先级高于整数)
在运算中不同的数据类型要先转成统一的数据类型

自动类型转换&强制类型转换

自动类型转换:低->高
int类型以下的运算其结果为int类型
int类型以上存在最高什么类型结果就为什么类型
强制类型转换:高->低

转换问题

  1. 不能对布尔值进行转换
  2. 不能把对象类型转换为不想干类型
  3. 强制转换可能存在内存溢出或者精度丢失问题

变量

变量是什么:就是可以变化的量
Java是一种强类型语言,每个变量都必须声明其类型
Java变量是程序中最进本的存储单元,其要素包括变量名,变量类型和作用域
注意事项:

  1. 每个变量都有类型,类型可以是基本类型,也可以是引用类型
  2. 变量名必须是合法的标识符
  3. 变量声明是一条完整的语句,因此每一个声明都必须以分号结束

常量

常量:初始化之后不可在改变的值。在被设定后,在程序运行中不可在改变。
关键字:final 常量名=值 (常量名为大写字符)

运算符

在这里插入图片描述

包机制

为了更好的组织类,Java提供了宝鸡至,用于区别类名的命名空间
一般李永公司域名倒置作为包名
package
为了使用包类的某个成员,我们需要在Java程序中明确导入包
import

顺序结构

Java的基本结构就是顺序结构,除非特别指明,否则就按顺序一句一句执行
顺序结构是最简单的算法结构,它是任何一个算法都离不开的基本算法结构

if选择结构

  1. if单选择结构
    在这里插入图片描述
if(布尔表达式){
}
  1. if 双选择结构
if(布尔表达式){
}else{
}

在这里插入图片描述
3. if选择结构

if(布尔表达式){
} else if(布尔表达式){
}else if(布尔表达式){
}else{
}

在这里插入图片描述

switch 多选择结构

switch case 语句判断一个变量与一系列值中某个值相等,每个值称为一个分支。
switch 语句中的变量类型可以是:byte、short、int或者char,JavaSE7后switch支持字符串String类型
无break,则会造成case穿透。

switch(expression){
	case value:
		break;
	case value:
		break;
	default:
		
}

循环结构

while循环

当表达式为true,循环会一直执行下去;当表达式不成立时,循环停止。

while(布尔表达式){
 循环内容
}

do…while循环

至少循环执行一次后进入条件判断

do{
}while(布尔表达式)

for循环

for循环语句是支持迭代的一种通用结构,是最有效、最灵活的循环结构
for(初始化;布尔表达式;更新){
循环内容
}

加强for

声明语句:声明新的不变量,该变量的类型必须和数组元素的类型匹配
表达式:表达式要访问的数组名,或者是返回值为数组的方法。
for(声明语句:表达式){
}

for(item:array){

}

方法

方法的本意是功能模块,就是实现某个功能的代码片段。方法包含于类或对象中,
我们设计的方法最好保持方法的原子性,就是一个方法只完成一个功能,这样利于后期的扩展。
修饰符 返回值类型 方法名(参数类型 参数名){
。。。
方法体
。。。
return 返回值;
}

修饰符:定义了该方法的访问类型
返回值类型:方法可能返回值,当无返回值时可使用void
方法名:方法的实际名称
参数类型:参数像是一个占位符。放方法被调用时。传递值给参数,这个值被称为实参或变量。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含参数;
方法体:方法体包含具体的语句,定义该方法的功能。
值传递&&引用传递
引用传递:引用传递中形参实参指向同一个对象,形参的操作会改变实参对象的改变
值传递:无论是基本类型和是引用类型,在实参传入形参时,都是值传递,也就是说传递的都是一个副本,而不是内容本身
结果:java只有值传递

方法重载

重载就是在一个类中,有相同的函数名称,但形参不同的函数
方法重载的规则:

  1. 方法名称必须相同
  2. 参数列表必不相同(个数、类型、顺序不同)
  3. 方法的返回类型可以相同也可以不相同
  4. 仅仅返回类型不同不足以成为方法的重载
    实现理论:
    方法名称相同时,编译器会根据调用方法的个数、参数类型去逐个匹配。以选择对应的方法,如果匹配失败,则编译器报错。

可变参数–

JDK1.5开始,Java支持可变参数。
在方法声明中,在指定参数类型后加一个省略号(…)
一个方法中只能指定一个可变参数,它必须是方法的最后一个参数。
本质:数组

testNum(1,2);
public static void testNum(int...i){
		System.out.println(i.length);
		//2 
	}

数组

数组:相同数据类型的有序集合
数组描述的是相同类型的若干数据,按照一定的先后次序排列组合而成。
其中,每一个数据称为一个数据元素,每个数组元素可以通过下标来访问他们

创建数组

  1. int[] arr=new int[size]
  2. int[]={item,item…}

数组的四个基本特点

  1. 长度是确定的。数组一旦被创建,它的大小就是不可以改变的。
  2. 其元素必须是相同类型,不允许出现混合类型
  3. 数组中的元素可以是任何数据类型,包括基本数据类和应用类型。
  4. 数据变量属于引用类型,数组可以看成是对象,数组中的每个元素相当于该对象成员。数组本身就是对象,数组对象本身就是在堆中

数组边界

【0,数组.length】
超过边界:ArrayIndexOutOfBoundsException : 数组下标越界异常!

二位数组

Arrays 数组工具类

面向对象

面向对象编程(Object-Oriented Programming ,OOP)
面向对象的本质:以类的方式组织代码,以对象的方式组织数据。
三大特性

封装

核心思想:高内聚,低耦合
属性私有get/set
目的:禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问
优点

  • 提高程序的安全性,保护数据
  • 隐藏代码实现细节
  • 统一接口
  • 系统可维护增加了
    举个栗子
    eg : private 类型 名字
    get/set方法(可操作空间瞬间拉大
    方法的本意是功能模块,就是实现某个功能的代码片段,可以在方法中进行一些其他实现。如参数校验。如果是public int age ,使用只直接对象.age=999,这完全是不合理的存在。使用方法则可以添加校验。
    方法就是实现某个功能的代码片段,给对象属性设置值,就是对其数据处理功能。

继承

本质:是对某一批类的抽象,从而实现对现实世界更好的建模
关键字:extends
java类只有单继承,没有多继承。所有的类默认都继承Object

super

  • super调用父类的构造方法,必须在构造方法的第一个
  • super只能出现在子类的方法或构造方法中
  • super和this不能同时调用构造方法

重写

子类重写父类方法

  • 方法名相同
  • 参数列表相同
  • 修饰符只可扩大
  • 异常只可扩大

多态

即同一方法可以根据发送对象的不同而采用不同的行为方式
多态存在的条件:

  • 有继承关系
  • 子类重写父类方法
  • 父类引用指向子类对象

创建和初始化对象

  • 使用new关键字创建对象
  • 使用new关键字创建的时候,除了分配内存空间以外,还会给创建好的对象进行默认的初始化以及对类中构造器的调用。

构造器

  • 必须和类名相同
  • 必须没有返回类型、也不能写void

static

static 同类一起加载。只加载一次。
匿名 每次创建类就加载一次。


{} // 匿名代码块
static {} // 静态代码块

静态导入包

可以直接导入到静态方法,程序可直接使用方法名去使用。

import static java.lang.Math.random

抽象类

关键字 abstract
可以用来修改方法(抽象方法)也可以修饰类(抽象类),抽象类中可以没有抽象方法,但是有抽象方法一定是抽象类。

接口

只有规范
关键字 interface
定义的方法默认修饰都是:public abstract
定义的都是常量默认修饰都是:public static final

内部类

就是在一个类的内部定义一个类

  1. 成员内部类
public class Outer  {
    private String name;
    private int age;

     public  class  Inner{
        public void testIn(){
            System.out.println("这是一个内部方法");
        }
    }
 }
 // 创建
        Outer outer=new Outer();
        Outer.Inner inner = outer.new Inner();
  1. 静态内部类
public class Outer  {

    private String name;
    private int age;


     public  static class  Inner{
        public void testIn(){
            System.out.println("这是一个内部方法");
        }
    }
   }
  1. 局部内部类
public class Outer  {

    private String name;
    private int age;


    public void testMethod(){
         class  Inner{
            public void testIn(){
                System.out.println("这是一个内部方法");
            }
        }
    }
  }
  1. 匿名内部类
public interface Runnable {
    public abstract void run();
}

new Runnable() {
            @Override
            public void run() {

            }
        };

异常

检查性异常

最具代表的检查性异常是用户错误或问题引起的异常,这是程序猿无法预见的。例如要打开一个不存在文件时,一个异常就这样发生了,这些异常在编译时不能简单的忽略。

运行异常

运行异常是可被程序猿避免的异常,与检查性相反,运行时异常可以在编译时被忽略。

错误

错误不是异常,二十脱离程序猿控制的问题。错误在代码中尝尝没忽略。

在这里插入图片描述

ERROR

Error类对象由Java虚拟机生成并抛出,大多数错误与代码编写者所执行的操作无关。
Java虚拟机运行错误,当JVM不再继续执行操作所需的内存资源时,将出现OutOfMemoryError。这些异常发生时,Java虚拟机一般会选择线程终止。
还有发生在虚拟机视图执行应用时。如类定义错误、链接错误。这些错误是不可查的。因为它们在应用程序的控制和处理能力之外,而且绝大多是程序运行时不允许出现的状况。

Exception

在Exception分支中有一个重要的子类RuntimeException(运行时异常)

  • ArraylndexOutOfBoundsException
  • NullPointerException
  • ArithmeticException
  • MissingResourceException
  • ClassNotFoundException
    这些异常一般是由程序逻辑错误引起的,程序应该从逻辑角度尽可能避免这类服务的发生

Error和Exception的区别

Error通常是灾难性的致命错误,是程序无法控制和处理的。出现这些异常时,Java虚拟机一般会选择终止线程;
Exception通常情况下可以被程序处理的,并且在程序中应该尽可能的去处理这些异常。


http://www.kler.cn/a/7019.html

相关文章:

  • Python 神经网络项目常用语法
  • Linux-何为CentOS
  • python语言基础-5 进阶语法-5.2 装饰器-5.2.2 简单装饰器
  • stm32下的ADC转换(江科协 HAL版)
  • 渑池县中药材产业党委莅临河南广宇企业管理集团有限公司参观交流
  • 联通大数据面试题及参考答案
  • 副词也可以做定语
  • 9.网络爬虫—MySQL基础
  • 中华好诗词(九)
  • linux系统编程(2)--Makefile
  • C++: Articles:Split a String
  • OpenResty+OpenWAF的WEB防护实战
  • Java程序设计——作业2循环
  • C++算法恢复训练之时间复杂度
  • 温度PID串级控制器在提高空气膜分离制氮产量中的应用
  • Vue3之插槽(Slot)
  • SpringBoot起步
  • 改进YOLO系列:YOLOv5s、YOLOv5m结合GHostv2轻量化设计,保持精度,计算量缩小40%
  • 记录--Canvas实现打飞字游戏
  • Python模拟星空
  • 逍遥自在学C语言 | 第一个C语言程序 九层之台起于垒土
  • 多线程进阶学习12------ConcurrentHashMap详解
  • 关于数据结构及存储的想法
  • 出售Steam上线游戏的完整开发资源包
  • 企业月结快递管理教程
  • aspnet016计算机组成原理精品课程shfw程序