Java学习笔记1

文章目录

  • 1. 第⼀个 Java 程序
  • 2. Java 对象和类
    • 2.1 构造器
    • 2.2 创建对象和访问实例
    • 2.3 java包
  • 3. 数据与变量
    • 3.1 基本数据类型
    • 3.2 基本变量类型
  • 4. Java 修饰符
    • 4.1 访问控制修饰符
    • 4.2 ⾮访问修饰符
  • 5. 程序的逻辑结构
  • 6. String 字符串
    • 6.1 字符串的存储
    • 6.2 字符串相关函数
  • 7. StringBuffer 和 StringBuilder 类
    • 7.1 特点
    • 7.2 StringBuilder 和 StringBuffer 的使用
  • 8. 数组的使⽤
  • 9. Java ⽅法
    • 9.1 方法的定义与调用
    • 9.2 可变参数
  • 10. 时间和日期
    • 10.1 查看时间
    • 10.2 格式化输出时间
    • 10.3 测量时间
    • 10.4 Calendar 类
  • 11. 输⼊与输出
    • 11.1 Scanner 类
    • 11.2 读取字符串
    • 11.3 读取数字
  • 12. 异常捕获
  • 13. data structure
    • 13.1 ArrayList
    • 13.2 Stack

1. 第⼀个 Java 程序

打开终端,输⼊
Java学习笔记1_第1张图片
在终端将上述代码存放到 Hello.java 中,使⽤ javac Hello.java 编译代码,⽣成⼀个Hello.class ⽂件,接着使⽤ java Hello 来运⾏程序。
Java 源程序与编译型运⾏区别
Java学习笔记1_第2张图片
基础语法

  • 对⼤小写敏感
  • 类名应当⼤写开头
  • ⽅法名要小写开头
  • 源⽂件名要和类名相同
  • 标识符由字⺟、下划线或 $ 打头,不能是关键字

2. Java 对象和类

看⼀个简单的类:
Java学习笔记1_第3张图片
这个类描述了小狗,属性包含:名字、颜⾊和年龄,类⾥⾯的函数称为⽅法。
类中包含了⼀个 static 的静态⽅法,可以⾃动执⾏,不需要对象调用。

this 关键字:
当实例变量和局部变量重名,JAVA平台会按照先局部变量、后实例变量的顺序寻找。
如果使⽤this.name,则不会在⽅法(局部变量)中寻找变量name,而是直接去实例变量中去寻找。
当实例变量和局部变量名字不重复时,可以不使⽤ this,编译器会⾃动加上 this。

2.1 构造器

⼀般构造函数 public 可加可不加。如果加上 public,就代表此类可以对外开放,其他的类可以继承它,外部也可以实例化该对象;如果不加 public,则默认的修饰词是protected,代表只对同包开放。

2.2 创建对象和访问实例

在这里插入图片描述

2.3 java包

import java.io.* // 导入java_installation/java/io下的所有类

3. 数据与变量

3.1 基本数据类型

Java学习笔记1_第4张图片
Java 为每⼀个内置数据类型都提供了对应的
包装类:Float, Double, Boolean, Byte, Short, Integer, Long, Character.
Java学习笔记1_第5张图片
java Math类:
Java学习笔记1_第6张图片

3.2 基本变量类型

  • 类变量:独⽴于⽅法之外的变量,⽤ static 修饰;
  • 实例变量:独⽴于⽅法之外的变量,不过没有 static 修饰;
  • 局部变量:类的⽅法中的变量。
    Java学习笔记1_第7张图片
    类变量属于静态变量,⽆论⼀个类有多少个对象,类变量都共⽤⼀个!

4. Java 修饰符

4.1 访问控制修饰符

Java ⽀持四种不同的访问权限:

  • default:在同⼀包内可⻅,不使⽤任何修饰符。使⽤对象:类、接口、变量、⽅法。
  • private : 在同⼀类内可⻅。使⽤对象:变量、⽅法。 注意:不能修饰类(外部类)
  • public : 对所有类可⻅。使⽤对象:类、接口、变量、⽅法
  • protected : 对同⼀包内的类和所有⼦类可⻅。使⽤对象:变量、⽅法。 注意:不能修饰类(外部类)。

4.2 ⾮访问修饰符

static
静态变量:static 关键字⽤来声明独⽴于对象的静态变量,⽆论⼀个类实例化多少对象,它的静态变量只有⼀份拷⻉。
静态函数:static 关键字⽤来声明独⽴于对象的静态⽅法。静态⽅法不能使⽤类的⾮静态变量。
Java学习笔记1_第8张图片

注意:在静态⽅法中调⽤⾮静态⽅法时,编译器会报错(因为⾮静态⽅法只有实例化的对象能够调⽤, 而静态⽅法执⾏的过程中未调⽤构造函数实例化对象,因此不允许调⽤!)
解决办法为要么创建⼀个类的对象,通过对象来调⽤函数,要么将⾮静态⽅法声明中加上 static 改为静态⽅法,同时将变量声明为全局静态的。

final
被 final 修饰的实例变量必须显式指定初始值,之后不能再修改。
Java学习笔记1_第9张图片

5. 程序的逻辑结构

常⻅循环结构如下:
Java学习笔记1_第10张图片
常⽤的分⽀结构如下:
Java学习笔记1_第11张图片

6. String 字符串

6.1 字符串的存储

Java学习笔记1_第12张图片
函数 System.identityHashCode(str) 可以打印出字符串 str 地址对应的哈希值
使⽤ String str = “xxxxx”; 声明的字符串存储在公共池⾥,存储字符串内容相同的字符串变量 相当于引⽤;
使⽤ new String(“xxxx”); 得到的字符串地址在堆内,每次 new 得到的对象地址不同;

6.2 字符串相关函数

长度length()
在这里插入图片描述

格式化字符串:String.format(str, args)
String 类使⽤静态⽅法 format() 返回⼀个String 对象
在这里插入图片描述
字符索引查询: indexOf()
在这里插入图片描述
字符串分割:split()
在这里插入图片描述
子串:substring()
在这里插入图片描述
⽐较函数: equals
填补⼀个⼤坑: equals ⽐较的是内容是否相等、 == ⽐较的是引⽤的变量地址是否相等。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210220161930665.png

7. StringBuffer 和 StringBuilder 类

7.1 特点

StrngBuilder 和 StringBuffer 类的对象⽀持多次的 ,而且并且不产⽣新的未使⽤对象!

  • StringBuilder 的⽅法不是线程安全的,但速度⾼(不能同步访问)。
  • 由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使⽤ StringBuilder 类。
    Java学习笔记1_第13张图片

7.2 StringBuilder 和 StringBuffer 的使用

常⽤函数的语法如下(StringBuilder 和 StringBuffer 的使⽤⽅法⼏乎相同):
Java学习笔记1_第14张图片
举个例⼦:
Java学习笔记1_第15张图片
输出的结果为:
在这里插入图片描述

8. 数组的使⽤

声明与创建:
Java学习笔记1_第16张图片

数组的访问与修改:
Java学习笔记1_第17张图片
可以使⽤ Arrays 类的函数来对数组操作:
Java学习笔记1_第18张图片

9. Java ⽅法

9.1 方法的定义与调用

⼀个⽅法包含了 修饰符、返回值类型 、方法名 、参数 和 ⽅法体 构成。
Java学习笔记1_第19张图片
在不创建类对象的情况下,主函数可以调⽤静态⽅法:
Java学习笔记1_第20张图片

9.2 可变参数

可变参数的声明⽅式为:

 typeName... parameterName

举个例⼦:
Java学习笔记1_第21张图片
此处传⼊的参数有很多个,可以像数组⼀样来访问传⼊的参数。

10. 时间和日期

10.1 查看时间

java.util 包提供了 Date 类来封装当前的⽇期和时间,可以 new ⼀个 Date 对象:
Java学习笔记1_第22张图片

10.2 格式化输出时间

Java学习笔记1_第23张图片

10.3 测量时间

Thread.sleep(1000) 休眠 1000ms
System.currentTimeMillis() 获取毫秒数
Java学习笔记1_第24张图片

10.4 Calendar 类

Java学习笔记1_第25张图片

11. 输⼊与输出

11.1 Scanner 类

Java 提供了 Scannner 类,可以设置参数来从键盘读取数据,创建 Scanner 对象如下:
在这里插入图片描述

11.2 读取字符串

输⼊字符串的⽅式有两种:
next()

  • ⼀定要读取到有效字符后才可以结束输⼊
  • 输⼊⼀⾏时,以空格分隔字符串,因此不能得到带有空格的字符串;
    nextLine()
  • 输⼊⼀⾏,以换⾏符结束,能读取有空格的
  • 字符串可以读取空⽩内容
    举个例⼦:(输⼊为 “hello world”)
    Java学习笔记1_第26张图片

11.3 读取数字

下⾯的程序对输⼊的所有数字求和,当输⼊不是 double 类型时(如字符串),程序会终⽌。
Java学习笔记1_第27张图片

12. 异常捕获

使⽤ try-catch 来捕获 异常:
Java学习笔记1_第28张图片
可以有多个 catch 来捕获不同类型的错误;不论是否存在异常, finall 关键字中的语句都会被执 ⾏。输出结果为:
在这里插入图片描述

13. data structure

Java 提供了⼀系列的存储数据结构和相应的算法,各种容器由 Collections 继承而来,算法可以通过 Collections 类来调⽤;容器的创建⽅法如下:
在这里插入图片描述

13.1 ArrayList

ArrayList 类是⼀个可以动态修改的数组,与普通数组的区别就是它是没有固定⼤小的限制;
Java学习笔记1_第29张图片

13.2 Stack

Stack 常⽤的⽅法有: boolean empty() , E push() , E pop() , E peek()
Java学习笔记1_第30张图片
除此之外,Java 还有 Vector , LinkList , Queue , Dictionary 等常⽤容器。

你可能感兴趣的:(java)