目录

二、Java程序设计环境

三、Java的基本程序设计结构

3.1 一个简单的java应用程序

3.2 数据类型

3.3 标识符命名规范

3.4 运算符

3.4.1 位运算符

3.4.2 数学函数与常量

3.4.3 强制类型转换

3.5 字符串

3.5.1 子串

3.5.2 不可变字符串

3.5.3 检测字符串是否相等

3.6 输入输出

3.6.1 读取输入

3.7 控制流程

3.7.1 块作用域

3.7.2 for循环

3.8 数组

3.8.1 数组拷贝

3.8.2 数组排序

四、对象与类

4.1 面向对象程序设计概述

4.1.1 类

4.1.2 类之间的关系

4.2 方法参数

4.3 文档注释

4.3.1 方法注释

4.3.2 通用注释

五、继承

5.1 泛型数组列表

5.2 对象包装器与自动装箱

5.3 枚举

5.4 反射

5.4.1 Class类

5.4.2 捕获异常

5.4.3 利用反射分析类的能力

5.4.4 调用任意方法

六、接口与内部类

6.1 内部类

七、集合

7.1 开发中如何选择集合实现类

八、多线程

8.1 线程的基本使用

8.2 常用方法

8.3 线程的状态


二、Java程序设计环境

三、Java的基本程序设计结构

3.1 一个简单的java应用程序

使用System.out对象并调用的它的println方法。注意:点号 . 用于调用方法

3.2 数据类型

十六进制数值有一个前缀0x;八进制有一个前缀0;二进制有一个前缀0b;

Unicode编码单元可以表示为十六进制值,其范围从\u0000到\Uffff

3.3 标识符命名规范

①包名:多个单词组成时所有字母都小写:aaa.bbb.ccc

②类名、接口名:多个单词组成时,所有单词的首字母大写:XxxYyyZzz

③变量名、方法名:多个单词组成时,第一个单词的首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz【驼峰法】

④常量名:所有字母都大写,多单词时每个单词用下划线连接:XXX_YYY_ZZZ

3.4 运算符

对于使用strictfp关键字标记的方法必须使用严格的浮点计算来产生理想的结果

例如:可以把main方法标记为

public static strictfp void main([String[] args])

于是,在main方法中的所有指令都将使用严格的浮点计算。

3.4.1 位运算符

>>和<<运算符将二进制位进行右移或左移

>>>运算符将用0填充高位,>>运算符用符号位填充高位。没有<<<运算符

3.4.2 数学函数与常量

在Java中没有幂运算,因此需要借助Math类的pow方法

double y = Math.pow(x,a);

//将y的值设置为x的a次幂。pow方法有两个double类型的参数,其返回结果也为double类型

3.4.3 强制类型转换

如果想对浮点数进行四舍五入运算,需要使用Math.round方法

double x = 9.997;

int nx = (int) Math.round(x); //现在变量nx的值为10

当调用round的时候,仍然需要使用强制类型转换(int)。其原因是round方法返回的结果为long类型,由于存在信息丢失的可能性,所以只能使用显式的强制类型转换才能将long转为int类型

3.5 字符串

3.5.1 子串

String的substring方法可以从一个较大的字符串提取出一个子串

String greeting = "Hello";

String s = greeting.substring(0,3); //创建了一个由字符Hel组成的字符串

substring方法的第二个参数是不包含这个数。即前闭后开。

3.5.2 不可变字符串

String类没有提供用于修改字符串的方法。如果想要修改greet为Help!,不能直接将greeting的最后两个位置的字符串修改为p和!。想修改首先提取需要的字符串,其次再拼接上替换的字符串

greeting = "Hello";

greeting = greeting.substring(0,3) + "p!";  //结果为Help!

3.5.3 检测字符串是否相等

使用equals方法检测两个字符串是否相等

想要检测两个字符串是否相等并且不区分大小写,可以使用equalsIgnoreCase方法

"Hello".equalsIgnoreCase("hello");

3.6 输入输出

3.6.1 读取输入

想通过控制台进行输入,首先要构造一个Scanner对象,并与“标准输入流”System.in关联

Scanner in = new Scanner(System.in);

现在就可以使用Scanner类的各种方法实现输入操作了

System.out.printli("What is your name?");

String name = in.nextLine();        //nextLine方法将输入一行

在这里使用nextLint方法是因为在输入行中有可能包含空格

3.7 控制流程

3.7.1 块作用域

不能在嵌套的两个块中声明同名的变量

3.7.2 for循环

如果在for语句内部定义一个变量,这个变量就不能在循环体之外使用。因此,如果希望在for循环体之外使用循环计数器的最终值,就要确保这个变量在循环语句的前面且在外部声明

3.8 数组

3.8.1 数组拷贝

如果希望将一个数组的所有值拷贝到一个新的数组中去,就要使用Arrays类的copyOf方法

int[] copiedLuckyNumbers = Arrays.copyOf(luckyNumbers, luckyNumbers.length);

第二个参数是新数组的长度。这个方法通常用来增加数组的大小

3.8.2 数组排序

想要对数值型数组进行排序,可以使用Arrays类中的sort方法

int[] a = new int[10000];

.....

Arrays.sort(a)

四、对象与类

4.1 面向对象程序设计概述

4.1.1 类

由类构造对象的过程称为创建类的实例

对象中的数据称为实例域;操纵数据的过程称为方法

实现封装的关键在于绝对不能让类中的方法直接地访问其它类的实例域

4.1.2 类之间的关系

  • 依赖:如果一个类的方法操纵另一个类的对象,我们就说一个类依赖于另一个类
  • 聚合:聚合关系意味着类A的对象包含类B的对象
  • 继承:如果类A扩展类B,类A不但包含从类B继承的方法,还会拥有一些额外的功能

4.2 方法参数

按值调用表示方法接收的是调用者提供的值,而按引用调用表示方法接收的是调用者提供的变量地址

4.3 文档注释

4.3.1 方法注释

  • param 变量描述:这个标记将对当前方法的param(参数)部分添加一个条目
  • return描述:这个标记将对当前方法添加return(返回)部分。这个描述可以跨越多行
  • throws类描述:这个标记将添加一个注释,用于表示这个方法有可能抛出异常

4.3.2 通用注释

@see引用:这个标记将在"see also"部分增加一个超级链接

如果@see标记后面有一个<符号,就需要指定一个超链接。可以超链接到任何URL

五、继承

5.1 泛型数组列表

size()方法用于返回数组列表中包含的实际元素数目,它等价于数组a的a.length

一旦能够确认数组列表的大小不再发生变化,就可以调用trimToSize方法。这个方法将存储区域的大小调整为当前元素数量所需要的存储空间数目

5.2 对象包装器与自动装箱

对象包装器类是不可变的,即一旦构造了包装器,就不允许更改包装在其中的值。同时,对象包装器类还是final,因此不能定义它们的子类

==运算符也可以应用于对象包装器对象,只不过检测的是对象是否指向同一个存储区域。

5.3 枚举

在比较两个枚举类型的值时,永远不需要调用equals,而直接使用"=='就可以了

toString的逆方法是静态方法valueOf

每个枚举类型都有一个静态的values方法,它将返回一个包含全部枚举值的数组

5.4 反射

能够分析类能力的程序称为反射

5.4.1 Class类

一个Class对象将表示一个特定类的属性

newInstance()方法可以用来快速地创建一个类的实例。newInstance方法调用默认的构造器初始化新创建的对象

5.4.2 捕获异常

异常有两种状态:未检查异常和已检查异常

5.4.3 利用反射分析类的能力

在java.lang.reflect包中有三个类Field、Method、和Constructor分别用于描述类的域、方法和构造器

Class类中的getFields、getMethods和getConstructors方法将分别返回类提供的public域、方法和构造器数组,其中包括超累的公有成员。

Class类中的getDeclareFields、getDeclareMethods和getDeclaredConstructors方法将分别返回类中声明的全部域、方法和构造器,其中包括私有和受保护成员,但不包括超类的成员

5.4.4 调用任意方法

在Mehtod类中有一个invoke()方法,它允许第哦啊用包装在当前Method对象中的方法

六、接口与内部类

6.1 内部类

使用内部类的主要原因有以下三点

①内部类方法可以访问该类定义所在的作用域中的数据,包括私有的数据

②内部类可以对同一个包中的其他类隐藏起来

③当想要定义一个回调函数且不想编写大量代码时,使用匿名内部类比较便捷

七、集合

7.1 开发中如何选择集合实现类

1. 先判断存储的类型(一组对象[单列]或一组键值对[双列])

2. 一组对象[单列]:Collection接口

        允许重复:List

                增删多:LinkedList【底层维护了一个双向链表】

                改查多:ArrayList【底层维护Object类型的可变数组】

        不允许重复:Set

                无序:HashSet【底层是HashMap,维护了一个哈希表,即(数组+链表+红黑树)】

                排序:TreeSet

                插入和取出顺序一致:LinkedHashSet,维护数组+双向链表

3.一组键值对[双列]:Map

                键无序:HashMap【底层是哈希表,在jdk7里底层是数组+链表,jdk8里是数组+链表+红黑树】

                键排序:TreeMap

                键插入和取出顺序一致:LinkedHashMap

                读取文件:Properties

4.需要线程同步安全时,使用Vector

八、多线程

8.1 线程的基本使用

1. 继承Thread类,重写run方法

2. 实现Runnable接口,重写run方法 (java是单继承机制,推荐使用Runnable)

8.2 常用方法

① setName:设置线程名称,使之与参数name相同

② getName:返回该线程的名称

③ start:使该线程开始执行;Java虚拟机底层调用该线程的start0方法

④ run:调用线程对象的run方法

⑤ setPriority:更改线程的优先级

⑥ getPriority:获取线程的优先级

⑦ sleep:在指定的毫秒数内让当前正在执行的线程休眠(暂停执行)

⑧ interrupt:中断线程

⑨ yield:线程的礼让。让出cpu,让其它线程执行,但礼让的时间不确定,所以也不一定礼让成功

⑩ join:线程的插队。插队的线程一旦插队成功,则肯定先执行完插入的线程所有的任务

8.3 线程的状态

  • New:新创建的线程,尚未执行;
  • Runnable:运行中的线程,正在执行run()方法的Java代码;
  • Blocked:运行中的线程,因为某些操作被阻塞而挂起;
  • Waiting:运行中的线程,因为某些操作在等待中;
  • Timed Waiting:运行中的线程,因为执行sleep()方法正在计时等待;
  • Terminated:线程已终止,因为run()方法执行完毕。

线程启动后,可以在Runnable、Blocked、Waiting、Timed Waiting这几个状态来回切换,直到最后变成Terminated状态。线程停止

九、常用类

9.1 String、StringBuffer和StringBuilder

1.如果字符串存在大量的修改操作,一般使用StringBuffer或StringBuilder

2.如果字符串存在大量的修改操作,并在单线程的情况,使用StringBuilder

3.如果字符串存在大量的修改操作,并存在多线程的情况,使用StringBuffer

4.如果字符串很少修改,并且被多个对象引用,使用String,比如配置信息等

Java基础复习巩固(一)相关推荐

  1. Java基础复习笔记系列 九 网络编程

    Java基础复习笔记系列之 网络编程 学习资料参考: 1.http://www.icoolxue.com/ 2. 1.网络编程的基础概念. TCP/IP协议:Socket编程:IP地址. 中国和美国之 ...

  2. Java基础复习笔记系列 七 IO操作

    Java基础复习笔记系列之 IO操作 我们说的出入,都是站在程序的角度来说的.FileInputStream是读入数据.?????? 1.流是什么东西? 这章的理解的关键是:形象思维.一个管道插入了一 ...

  3. 2020604 Java基础复习

    2020/6/4 Java基础复习 Java特性和优势 1.简单性: Java是在C++的语法的基础再"减减".没有头文件,没有指针,也不用分配内存,所以相对来说比较简单; 2.面 ...

  4. Java基础复习(六)

    Java基础复习(六) 常见关键字总结 1.final关键字 final用来修饰类.方法和变量. (1)final修饰的类不能被继承,而且final修饰的类中,所有成员方法会被默认为final方法,不 ...

  5. Java基础复习-常用类

    Java基础复习-常用类 本文仅对学习过程中所缺java知识点的查缺补漏复习 String 代表字符串.Java程序中的所有字符串字面值(如"abc")都作为此类的实例实现. St ...

  6. Java基础复习-八大基本数据类型-内存模型-基本算法-网络编程

    Java基础 数据类型: 基本数据类型: 整数型:byte short int long(数值型) 浮点型: float double(数值型) 字符型:char 布尔型:boolean 引用数据类型 ...

  7. java基础复习(练习写博客)

    文章目录 Java特性和优势 java三大版本 JDK.JRE.JVM(从前到后包含) Java开发环境搭建步骤 Java程序运行机制 IDE Java基础语法 一.注释.标识符.关键字 二.数据类型 ...

  8. Java基础复习总结笔记(上)

    前言 对Java部分基础知识进行复习总结,没事可以看看. 目录 一.基础语法 1.1 Java名词 1.2 Java关键字 1.3 基本数据类型(4类8种) (1)整数类型 (2)浮点类型 (3)字符 ...

  9. Java 基础复习实践 --- Hashcode Equals

    虽然很多知识点书籍都有整理,但是记性总是不好,所以决定将一些细小容易混淆的概念,通过简单的 Demo 实践,加深复习.特此开一个坑,坚持就是胜利. 本章内容主要为了理解以下几个知识点: equals( ...

  10. Java基础复习(1) 为什么在java中我们要将main定义为一个static方法?

    2015-10-20 以前学习java知识,只是跟着用到的代码跳着学了些,学的不全还错漏成片--恩,好惨! 思来想去,是必须要好好复习加整理下,不然写出来的东西真没法读了.所以,就从今儿起一点一点的啃 ...

最新文章

  1. 数据库原理与设计 P75作业 学号2013211466 班级0401302
  2. JavaScript 利用location对象实现跨页面传参
  3. 重磅!第二轮“双一流”名单来了,有你的学校吗?
  4. AutoX李卓:无人驾驶市场是渐进式的,但技术其实很难渐进式
  5. mysql数据库系统配置文件_跟我学虚拟机系统平台相关技术及应用——在CentOS系统中的MySql数据库系统配置文件中进行配置定义...
  6. Ubuntu环境搭建
  7. python中的数据结构之deque
  8. wps图表xy轴颠倒_用EXCEL来搞艺术之图表类型变换
  9. 学习IOS开发UI篇--UIView\UIButton\UILabel\UIImageView\UITextField
  10. js判断中文字符串长度和js截取中文字符串
  11. 如何在Linux中使用ulimit命令
  12. 微服务架构实践之邮件通知系统改造
  13. Atitit.atijson 类库的新特性设计与实现 v3 q31
  14. IDA安装lazyIDA
  15. UCOS操作系统——信号量实验(十)
  16. 怎么完全卸载赛门铁克_赛门铁克(sep)卸载方法
  17. 如何从CPU顶盖获取有用信息
  18. Freemarker商品详情页静态化服务调用处理
  19. NVIDIA ShadowPlay、Record、Highlights的区别
  20. python下faker模块引入报错:Traceback (most recent call last) 解决办法

热门文章

  1. python urlopen函数的timeout_urllib.request.urlopen()函数详解
  2. MATLAB--imadjust函数
  3. 【调剂】211北京邮电大学2020年计算机学院硕士研究生招生缺额信息
  4. 《计算机网络—自顶向下方法》 Wireshark实验(二):HTTP协议分析
  5. 2022年1月23日
  6. impalasql根据特殊符号劈开截取字符串
  7. 软件开发工具上云,华为云有备而来
  8. Activity onDestroy延迟回调
  9. 计算机导航种植牙的优势,种牙也能计算机导航
  10. 5600G 5600X 12400F 12490F 对比区别表