java基础

本文详细介绍了Java的基础知识,包括Java的三个体系(SE、EE、ME)、语言特性和JVM的工作原理。重点讲解了JVM的类加载器、运行时数据区以及垃圾回收算法。同时,概述了Java语法基础,如标识符、关键字和基本数据类型。此外,还探讨了Java的包应用,特别是java.lang包中的数据类型包裹类和字符串类。最后,简要介绍了异常处理类Throwable和GUI库Swing的相关内容。
摘要由CSDN通过智能技术生成

1.java简介

1.1 java分为三个体系

  • javaSE(java2SE)(java 2 Platform Standard Edition java平台标准版)
  • javaEE(java2EE)(java 2 Platform Enterprise Edition java企业版)
  • javaME(java2ME)(java 2 Platform Micor Edition java平台微型版)
    javaME是为嵌入式和移动设备提供的平台。

1.2 java语言特性

  • java语言简单

  • java语言是面向对象的

  • java语言是分布式的:
    所谓的分布式是指使用java语言开发企业应用开发时,采用分布式技术解决业务逻辑的高并发性、高可用性一套架构方案。Java 语言支持 Internet 应用的开发,在基本的 Java 应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括 URL、URLConnection、Socket、ServerSocket 等。Java 的 RMI(远程方法激活)机制也是开发分布式应用的重要手段。

  • java语言是健壮的
    java的强制类型、异常处理、垃圾自动回收装置是java健壮的保证。java的安全监测机制使的java更加具有健壮性。

  • java 语言是安全的(java提高语言及安全性)
    java通常被用在网络编程中,java提供安全监测机制,防止被恶意代码攻击。java对通过网络下载的类具有安全防范机制,分配不同的名字空间以防替换本地同名的类名、字节代码检测、并提供安全管理机制,让java类设置安全哨兵。

  • java体系结构中立
    java程序(后缀为java )在java平台上被编译成体系结构中立的字节码文件(后缀为class),可以在实现java平台的任意操作系统中运行。这种结构适合异构的网络环境和软件的并发。

  • java语言是可移植的
    可移植性来源用体系结构的中立性,java还严格规定了各个基本数据类型的长度。java系统本身具有很强的可移植性,java编译器是java实现的,java的运行环境是用ANSI C 实现的

  • java 是解释性的
    java平台被编译成字节码格式,可以在实现了java平台的任何操作系统运行。在运行时,java平台的解释器对这行字节码进行解释执行,执行过程中需要的类在联接阶段被加载到运行环境中

  • java是高性能的
    与哪些解释性的高级脚本语言相比,java的的确是高性能的。java运行的速度随着JIT(Just-In-Time)编译器的技术的发展越来越接近C++

  • java语言是多线程的
    java中有一些特殊的对象,它必须有Thead类或者子类来创建。

  • java语言是动态的
    java语言的设计是为了适应动态变化的环境,java程序需要的类能够被动态的加载运行环境中,也可以通过网络来载入所需要的类,有利于软件的升级。

1.3JVM

在这里插入图片描述
在这里插入图片描述

JVM由类加载器、运行时数据区、执行引擎

1.3.1类加载器

类加载器负责加载字节码文件,即java编译后的.class文件

1.3.2运行时数据区

运行时数据区,负责存放.class 文件,分配内存。运行时数据区又分为5部分:

  • 方法区:负责存放.class 文件,方法区里有一块区域是运行时常量池,用来存放程序的常量
  • 堆:分配给对象内存地址。Java虚拟机中,java堆是所有线程共享的数据
  • java虚拟机线:每个线程独享的内存空间
  • 本地方法栈:本地native方法独享的内存空间
  • 程序计数器:记录线程的执行位置,方便线程切换后再执行。

参考链接

1.3.2java的垃圾回收算法有哪些

  • 复制算法
  • 标记-清除算法
  • 标记-整理/压缩算法
  • 分代算法
    参考链接

2.java语法基础

2.1 java标识符

java所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。
标识符注意以下几点:

  • 所有的表示符都应该是以字母(A-Z或a-z),美元($),或者下划线(_)开始
  • 首字母之后可以是字母(A-Z或者a-z),美元($),下划线(_)或者数组的任何字符组合
  • 关键字不能作为标识符
  • 标识符大小写敏感

2.2关键字

3.java基本数据类型

3.1内置数据类型

java语言提供了八种基本数据类型。六种数字类型(四个整数型,两个浮点型)、一种字符型,还有布尔值

3.1.1byte

  • byte 数据类型是8位、有符号的,以二进制的补码表示的
  • 最小值是-128(-2的7次方)
  • 最大值是127(2的7次方)
  • 默认值为0
  • byte类型用在大型数组中节约空间,主要代替整数,因为byte变量占用的空间是int类型的四分之一

3.1.2 short

  • short 数据类型是16位、有符号的以二进制部补码表示的整数
  • 最小值-32768(-2的15次方)
  • 最大值32767(2的15次方)
  • short数据类型也可以像byte那样节省空间,一个short变量是int类型变量 的二分之一
  • 默认值为0

3.1.3 int

  • int数据类型是32位、有符号的以二进制补码表示的整数
  • 最小值-2147483648(-2的31次方)
  • 最大值2147483647(2的31次方)
  • 一般的整型变量默认为int类型
  • 默认值为0

3.1.4 long

  • long数据类型是64位、有符号的以二进制补码表示的整数
  • 最小值-9,223,372,036,854,775,808(-2^63)
  • 最大值9,223,372,036,854,775,807(2^63 -1)
  • 这种类型主要使用在比较大的整数系统中
  • 默认值为0L
    -"L"理论上不分大小写,但是若写成"l"容易与数字"1"混淆,不容易分辩。所以最好大写

3.1.5float

  • float数据类型是单精度、32位、符合IEEE 754标准的浮点数
  • float在存储大型浮点数组的时候可节省内存空间
  • 默认值为0.0f
  • 浮点数不能用来表示精确的值,如货币

3.1.6double

  • double数据类型是双精度、64位、符合IEEE 754标准的浮点数
  • 浮点数的默认类型为double
  • double 类型同样不能表示精确的值,如货币
  • 默认值是0.0d

3.1.7boolean

  • boolean数据表示一位的信息
  • 有那个取值:true、false
  • 这种类型仅作为一种标志来记录true/flase情况
  • 默然值为flase;

3.1.8char

  • char 类型是一个单一的16位unicode字符
  • 最小值为\u0000(十进制为0)
  • 最大值为\uffff(即为65535)
  • char数据类型可以存储任意字符
  • 默认值:\u0000

3.2引用数据类型

  • 在Java中,引用类型的变量非常类似C/C++的指针。引用类型指向一个对象,指向对象的变量是引用变量。这写变量在声明时被指定为一个特定的对象。
  • 对象、数组都是引用数据类型
  • 所有引用类型默认值为null
  • 一个引用变量可以用来引用任何与之兼容的类型

4.包的应用

4.1java基础类库概述

4.1.1 语言包(java.lang)

语言包java.lang提供了语言最基础的类。其中包括Object类、数据类型包裹类(The Data Type Wrapper)、字符串类(String、StringBuffer)、数学类(Math)、系统和运行时类(System、Runtime)、类操作类(Class、ClassLoader)。

4.1.1.1数据类型包裹类(The Data Type Wrapper)

对应java的每一个基本数据类型(primitive data type) 都有一个数据包裹类。每个包裹类都只有一个类型对应的基本数据类型的属性域。如下图。

基本数据类型数据包裹类
btyeByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
booleanBoolean
chatCharacter
  • 每一个包裹类都有一个基本数据类型的变量或者常量生成包裹类的构造方法。
    例如:
    double x=2.0;
    Double a=new Double(x);
    Doubel b=new Double(b);

  • 从java5开始,可以使用自动封箱功能将基本数据类型的变量自动转换为对用的包裹类对象,而不用调用对用的构造方法
    例如:
    Double x=2.0;
    Double b=-3.0;

  • 除了Character包裹类,其他每一个包裹类都有一个从字符串转换成对应包裹类对象的构造方法
    例如:
    Double x=new Double("-2.0");
    Integer i=new Integer(“423”);

  • 已知字符串,使用valueOf()方法可以将其转换成包裹类对象
    例如:
    Integer.valueOf(“123”);//返回表示123的integer类对象
    Double.valueOf(“1.22”);//返回表示1.22的Double类对象
    Boolean.valueOf(“true”);//返回表示true的Boolean类对象
    Character.valueOf(“G”);//返回表示G的Character类对象

  • 每一个包裹类都提供相应的方法将包裹类对象转换成基本数据类型数据
    例如:
    Integer a=new Integer(3);
    int b= a.intValue()//返回int类型数据

  • 从java5开始,可以使用自动拆箱功能将包裹类型自动转行成基本数据类型。
    例如:
    Integer a=new Integer(3);
    int b=a;

  • Byte、Short、Integer、Long、Float、Double提供了将字符串转换成对应的byte、short、int、long、float、Double的方法
    例如:
    Integer.parseInt(“222”);
    Float.parseFloat(“22.3”);

4.1.1.2 字符串类
4.1.1.2.1 常量字符串类

java将字符串作为类来实现,而不强制使用字符数组。String 类的字符串对象的值和长度不变。

  • 生成一个字符串。
    例如:
    String string="’;
    String string1=“abc”;
    String String2=new String("abc);

  • 常用字符串方法
    1.int length()//返回字符串中字符的个数
    2.char charAt(int index)//返回index的字符
    3.int valueOf(String s)//在接受字符串中查找,如果包含字符串s,则返回第一个匹配的位置下标,否则返回-1.
    4.String substring(int begin,int end)//返回接受者序号从begin到end-1的子字符串。
    5.String concat(String s)//返回接受者字符串与参数字符串进行连接后的字符串
    6.String replace(char oldChar,char newChar)//返回接受者的oldChar替换成newChar后的字符串。注意,接受对象没有被改变。
    7.int compareTo(String s)//将接受者对象与参数对象字符串进行比较,如果接受者对象小于s,则返回负数;如果相等,则返回0;如果接受者大于s,则返回一个正数。
    8.boolean equles(String s);//接受者对象与参数对象进行比较,如何包含的字符串个数相等且对应的字符相等,则返回true,否则返回false。
    9.String trim();//返回将接受者字符串两端的空字符串都去掉的字符串。
    10.String toLowerCase()//返回接受字符串中的字符都转行成小写的字符串。
    11.String toUpperCase()//返回接受字符串中的字符都转换成大写的字符串。

4.1.1.2.2 变量字符串类

StringBuffer类对象是可以被修改的字符串,与String类的对象比较,执行效率低一些。注意StringBuffer类的方法不能被用于String类的对象。

  • 生成StringBuffer对象
    new StringBuffer();//生成容量为16的空字符串
    new StringBuffer(int size);//生成容量为size的空字符串
    new StringBuffer(String aString);//生成aString的一个备份,其长度为其长度+16

  • 常用方法:
    1.int length();//返回字符串对象长度
    2.int capacity();//返回字符串对象的容量
    3.void ensureCapacity(int size);//设置字符串对象的容量
    4.void setLength(int len);//设置字符串长度。如果len的值小于当前字符串的长度,则尾部被截掉。
    5.char charAt(int index);//返回index处的字符
    6.void setCharAt(int index,char c);//将index的字符转换成c
    7.void getChars(int start,int end,char [] charArray,int newStart);//将接受者对象start位置到end-1位置的字符串复制到字符数组charArray中,从newStart开始。
    8.StringBuffer reverse();//将接受者字符串反转
    9.StringBuffer insert(int index,Object o);//o插入到index位置
    10.StringBuffer append(Object o);//将连接到接受者的末尾。

5. Throwable

Throwable有两个子类,Error和Exception。其中Error是错误,对于所有的编译时期的错误以及系统错误都是通过Error抛出的。这些错误表示故障发生于虚拟机自身、或者发生在虚拟机试图执行应用时,如Java虚拟机运行错误(Virtual MachineError)、类定义错误(NoClassDefFoundError)等。

在这里插入图片描述

6.Swing

6.1Swing介绍

  • Swing是一个为java设计的GUI包
  • Swing是java基础类的一部分
  • Swing包括了图形用户界面GUI的器件

6.2Swing的构件

6.2.1 JFrame

  • JFrame()创建一个无标题的窗口
  • JFrame(String title)创建一个标题为title的窗口
  • 方法:
    setVisible(true) 使得窗口可b见。
    setSize(宽,高) 设置窗口尺寸。
    pack() 窗口的自适应。
    setBackground(Color c) 设置窗口背景色。
    setForeground(color c) 设置窗口前景颜色。

6.2.2 Label类

  • JLabel()创建空标签
  • JLabel(String Text):创建内容为text的标签
  • JLabel(String text,int align):创建内容为text的标签,对齐方式为align的标签,JLabel.LEFT,JLabel.RIGHT、JLabel.CENTER
  • 设置标签字体文字:
    Font(Stirng name,int style,int size)创建一个指定字体对象
  • 设置标签文字颜色(Color 类)
    Color(int red,int green,int blue)
    setForeground(Color c)

6.2.3 JButton

  • JButton():创建一个无显示文字的按钮
  • JButton(String text):创建一个显示文字为text的按钮

6.2.4 JPanel

  • JPanel是一个中间容器,用于容纳其他组件
  • 构造方法 JPanel() 创建一个空面板
  • JPanel添加组件的方法 add(组件) 向面板中添加组件

6.2.5 布局管理器

  • FlowLayout(流式布局)
  • BorderLayout(边界布局)
  • c(网格布局)
  • CardLayout(卡片布局)
  • GridBagLayout(网格包布局)

6.2.6事件处理

参考链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值