java学习报告

Java学习报告

目录

第一章 初识java与面向对象程序设计 1

第二章 java编程基础 3

第三章 面向对象程序设计(基础) 13

第四章 面向对象程序设计(进阶) 15

第五章 异常 17

第六章 java常用类 17

20

初识java与面向对象程序设计

  1. Java概述
      1. 计算机编程语言发展史

“计算机之父”冯·诺依曼

计算机语言经历了三个历程的发展:机器语言、汇编语言、高级语言

      1. Java语言发展史

“java语音之父”詹姆斯·高斯林

      1. Java语言特点

Java语言共有十大特点:简单性、面向对象、分布性、编译和解释性、稳健性、安全性、可移植性、高性能、多线索性、动态性

      1. Java跨平台原理

跨平台性是指软件可以不受计算机硬件和操作系统的约束而在任意计算机环境下正常运行。

Java是跨平台的,它自带的Java虚拟机(Java Virtual Machine, JVM)可以很好地实现跨平台性。Java源程序代码经过编译后生成与平台无关的二进制代码,即字节码文件(.class文件),可被JVM中的Java解释器解释成所在具体平台上的机器指令,可以在装有JVM的任何平台上运行,从而实现 Java 与平台无关

    1. 面向对象程序设计思想
      1. 面向过程程序设计
      2. 面向对象程序设计
      3. 面向对象与面向过程程序设计的比较

java编程基础

    1. 变量与常量
      1. 关键字:预先定义好的有特别意义的单词。

保留字:预先保留,在以后的版本中可能使用到的特殊标识符。

      1. 标识符与命名规范

标识符是给Java中的类、方法、变量、包命名的符号。标识符需要遵 守一定的规则。

. 标识符只能由字母、数字、下划线、美元符号组成,并且不能以数字开头。

Java标识符大小写敏感,长度无限制。

.标识符不可以是Java关键字和保留字。

      1. 数据类型

      1. 变量的定义与赋值

变量必须先声明在使用,变量的值是可以改变的,在声明一个变量之后,它的值可被改变任意次。变量名的命名遵守小写字母开头的驼峰规则

数据类型 变量名;

变量名=变量值;

数据类型 变量名1,变量名2,变量名3

      1. 常量

在变量名前加上final关键字即可。命名要求,一般要求所以字母大写,单词之间使用“-”隔开

Final 数据类型 常量名=常量值

//至始至终只能被赋值一次

      1. 变量的类型转换

在Java中,类型转换是指将一个变量的值从一种数据类型转换为另一种数据类型。类型转换主要分为两种:自动类型转换和强制类型转换。

自动类型转换是指在数值范围允许的情况下,Java编译器自动进行的类型转换。这种转换发生在从较小范围的数据类型转换到较大范围的数据类型时,例如:

从 byte 转换到 short、int、long、float 或 double

强制类型转换是指在数值范围可能不允许的情况下,由程序员显式指定的类型转换。这种转换需要在代码中明确写出转换的类型,例如:

int num1=10;

double num2=num1;

      1. Scanner的使用

Scanner sc=new scanner(System.in);

String str=sc.next();//输入字符串

int num=sc.nextint();//输入数字

    1. 运算符与表达式
      1. 算数运算符

      1. 赋值运算符

      1. 关系运算符

      1. 逻辑单元运算符

      1. 位运算符

      1. 三元运算符

条件表达式?表达式1:表达式2;

      1. 运算符的优先级

    1. 选择结构
      1. If 语句

Java 中的条件语句允许程序根据条件的不同执行不同的代码块。一个 if 语

句包含一个布尔表达式和一条或多条语句。

public class Test {

public static void main(String args[]){

int x = 10;

if( x < 20 ){

System.out.print("这是 if 语句");

}

}

}

      1. Switch 语句

switch(expression){

case value :

//语句

break; //可选

case value :

//语句

break; //可选

//你可以有任意数量的case语句

default : //可选

//语句

}

      1. 选择结构的嵌套
      2. 两种选择结构的比较

If 语句和switch语句都可以实现逻辑判断,但它们的使用场景有所不同。If语句用于区间值的判断,而switch语句只能用于确定值的判断。

    1. 循环结构
      1. for语句

最先执行初始化步骤。可以声明一种类型,但可初始化一个或多个循环控制变

量,也可以是空语句。然后,检测布尔表达式的值。如果为 true,循环体被执

行。如果为false,循环终止,开始执行循环体后面的语句。执行一次循环后,

更新循环控制变量。再次检测布尔表达式。循环执行上面的过程。

public class Test {

public static void main(String[] args) {

 

for(int x = 10; x < 20; x = x+1) {

System.out.print("value of x : " + x );

System.out.print("\n");

}

}

}

      1. while语句

只要布尔表达式为 true,循环就会一直执行下去。

public class Test {

public static void main(String[] args) {

int x = 10;

while( x < 20 ) {

System.out.print("value of x : " + x );

x++;

System.out.print("\n");

}

}

}

      1. do while语句

对于 while 语句而言,如果不满足条件,则不能进入循环。但有时候我们

需要即使不满足条件,也至少执行一次。do…while 循环和 while 循环相

似,不同的是,do…while 循环至少会执行一次

public class Test {

public static void main(String[] args){

int x = 10;

 

do{

System.out.print("value of x : " + x );

x++;

System.out.print("\n");

}while( x < 20 );

}

}

      1. break和continue语句

break 主要用在循环语句或者 switch 语句中,用来跳出整个语句块。

break 跳出最里层的循环,并且继续执行该循环下面的语句。

Continue只能终止某次循环,继续下一次循环。

      1. 循环嵌套
      2. 三种循环语句应用场景

如果能够确定循环次数,建议使用for循环;如果不能就用while,do while可以实现至少执行一次。

    1. 方法
      1. 方法介绍
      2. 方法声明

修饰符 返回值类型 方法名(参数类型 参数1,参数类型 参数名2…){方法体

返回值return;}

      1. 方法重载

意思是相同的方法名但其中方法内容不一样,参数不一样,从而实现不一样的结果

      1. 方法递归

编程语言中,若方法直接或间接调用方法本身,则称该方法为递归方法

    1. 数组
      1. 数组概念

数组就是一种能够存放相同数据类型的有序集合,或者说他是一个存储数据的地方

dataType[] arrayRefVar; // 首选的方法

dataType arrayRefVar[]; // 效果相同,但不是首选方法

      1. 数组常见操作

通过索引操作元素

数组的遍历

获取数组的最值

通过值获取索引

数组元素的反转

      1. 数组的排序操作

1.冒泡排序

2.选择排序

      1. 二分查找法
      2. 方法中的可变参数

当方法中的参数个数不确定,但参数的类型确定是可以使用可变参数

      1. 二维数组

数据类型[][]数组名=new 数据类型[m][n];

M表示数组长度,n表示数组中每个元素的长度

      1. Arrays工具类

    1. Jav中的堆栈内存

JVM是基于堆栈的虚拟机,堆栈是一种数据结构,是用来存储数据的。对于一个Java程序来说,它的运行就是通过对堆栈的操作来完成的。

栈内存用于存储局部变量,以及对象的引用,它是一个连续的内存空间,由系统自动分配,性能较高。栈内存具有先进后出、后进先出的特点,虚拟机会为每条线程创建一个虚拟机栈,当执行方法时,虚拟机会创建出该方法的一个栈帧,该方法中所有的局部变量都会存储到这个栈帧中,方法执行完毕后,栈帧弹栈。

堆内存用于存储引用类型的数据,主要是对象和数组。全局只有一个堆内存,所有的线程共用一个堆内存。在堆中产生了一个数组或对象后,还可以在栈中定义一个特殊的变量,让栈中这个变量的取值等于数组或对象在堆内存中的首地址,栈中的这个变量就成了数组或对象的引用变量。引用变量就相当于是为数组或对象起的一个名称,以后就可以在程序中使用栈中的引用变量访问堆中的数组或对象了

面向对象程序设计(基础)

    1. 面向对象的概念
      1. 什么是面向对象

面向对象程序设计的思维方式是一种更符合人们思考习惯的方式。

面向对象分析问题涉及到的事物或对象,创建对应的类,分析事物的属性和行为,将这些属性和行为定义到类中,在解决问题的过程中按需创建对象,通过对象调用类中的行为,最终解决问题。

      1. 类和对象

比如班上的每一位同学都是一个对象,都具备姓名、年龄、学号属性,都拥有学习、睡觉行为。而把班上的同学进行抽象,就是一个学生类。

      1. 面向对象的特征

三大特征:封装、继承、多态

    1. 面向对象的编程
      1. 类的定义

·Java使用class关键字来定义一个类。

·一个Java文件中可以有多个类,但最多只能有一个public修饰的类,并且这个类的类名必须与文件名完全一致。

·类名需要符合标识符规则,并且遵循大写字母开头的驼峰规则。

      1. 对象的创建与使用

类名称   对象名称  = new 类名称();

      1. 成员变量默认值

      1. 匿名对象

匿名对象就是没有名字的对象,是定义对象的一种简写方式。 当方法的参数只需要一个对象,或者仅仅想调用一下某个对象的成员方法时,大可不必为这个对象单独创建一个变量,此时就可以使用匿名对象

    1. 构造方法

修饰符  类名 (形式参数){ }

构造方法时的要点:初始化对象、重载、默认构造方法、带参数的构造方法、调用另一个构造方法、继承方法、私有构造

    1. This关键字

this 关键字是 Java 常用的关键字,可用于任何实例方法内指向当前对象,也可指向对其调用当前方法的对象,或者在需要当前类型对象引用时使用。大部分时候,普通方法访问其他方法、成员变量时无须使用 this 前缀,但如果方法里有个局部变量和成员变量同名,但程序又需要在该方法里访问这个被覆盖的成员变量,则必须使用 this 前缀。

    1. Static关键字

static是静态的意思,它既可以用来修饰成员变量也可以用来修饰成员方法。

static修饰的成员变量叫作静态成员变量(类变量),修饰的成员方法叫作静态方法(类方法)。static修饰后的成员变量可以被类的所有对象共享(访问,修改),但注意它不属于某一个对象。

当有多个开发人员共同开发同一个项目,肯定会出现类名称相同的情况,这样一来就会比较麻烦,可以利用 package 关键字来解决此问题

面向对象程序设计(进阶)

    1. 封装

封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。

    1. 继承

class 父类 { } class 子类

extends 父类 { }

    1. Super关键字

我们可以通过 super 关键字来实现对父类成员的访问,用来引用当前对象的父类。

    1. Fina关键字

final 可以用来修饰变量(包括类属性、对象属性、局部变量和形参)、方法(包括类方法和对象方法)和类。

使用 final 关键字声明类,就是把类定义定义为最终类,不能被继承,或者用于修饰方法,该方法不能被子类重写:

    1. Object类

    1. 多态

指的是同一个方法调用,由于对象不同可能会有不同的行为。 多态的前提是必须存在继承,并且子类重写了父类的方法,最重要的一点是父类引用要指向子类对象。

    1. 抽象类

在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,那么这样的类称为抽象类。

<abstract>class<类名> {
    <abstract><type><抽象方法名称>(方法参数列表);
}

    1. 接口

接口是 Java 中最重要的概念之一,它可以被理解为一种特殊的类,不同的是接口的成员没有执行体,是由全局常量和公共的抽象方法所组成。它可以实现“ 多重传承 ”,并实现“行为上的“ 多态 ”。

    1. 内部类

class {//外部类

修饰符 class{内部类

}

}

内部类与外部类之间的成员变量可以互相访问。 外部类访问内部类变量时非常简单,使用内部类的对象名.变量名即可获取内部类的变量,而内部类访问外部类变量时,则需要通过外部类名.this.变量名获取

异常

  1. En
    1. 异常概述

Java中的异常(Exception)又称为例外,是一个在程序执行期间发生的事件,它中断正在执行程序的正常指令流。为了能够及时有效地处理程序中的运行错误,必须使用异常类。

java中异常(Exception)与错误(Error)都继承自Throwable类。

    1. 异常处理

Java中提供了一个throw关键字,该关键字用于抛出异常。 Java中的异常本质上也是类,抛出异常时,实际上是抛出一个异常的对象,并提供异常文本给调用者,最后结束该方法的运行。 抛出异常语法格式如下:

throw new 异常 名称(参数列表):

    1. 异常进阶

java常用类

    1. 包装类
    2. String类概括

    1. StringBuffer和StringBuild

StringBuffer : 可变长字符串运行效率慢、线程安全,,JDK1.0提供

StringBuilder : 可边长字符串、运行快、线程不安全,JDK5.0提供

    1. 时间与日期相关类

Date类

SimpleDateFormat类

Calendar类

    1. 其他常用类

Math类

Random类

UUID类

枚举类

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/864393.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PyTorch Geometric框架下图神经网络的可解释性机制:原理、实现与评估

在机器学习领域存在一个普遍的认知误区,即可解释性与准确性存在对立关系。这种观点认为可解释模型在复杂度上存在固有限制,因此无法达到最优性能水平,神经网络之所以能够在各个领域占据主导地位,正是因为其超越了人类可理解的范畴。 其实这种观点存在根本性的谬误。研究表明…

25. K 个一组翻转链表(难)

目录题目法一、模拟--迭代法二、递归 题目给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返回修改后的链表。 k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。 你不能只是单纯的改变节点内部的值,而…

OpenWrt 系统UCI详解(Lua、C语言调用uci接口实例)

1 UCI简介 “uci"是"Unified Configuration Interface”(统一配置界面)的缩写,用于OpenWrt整个系统的配置集中化。 很多后台服务有自己的配置文件,并且配置文件格式都不相同,OpenWrt系统中需要开启各种服务,为了解决配置不兼容的问题,统一采用uci格式的配置文件。…

macbook 双系统win7忘密码 解决办法 通用

1开机出现以下图片按开机键强制重启2选择这一个3跟着选择4等待时间较长5继续678点击计算机9选择c盘10选择Windows进入system32文件夹11右键修改名字 将sethc 修改为sethc112然后键盘上输入cmd13将cmd名字修改为sethc 14关掉所有点击完成 15然后开机来到登录界面 按5次shift 次数…

GoLang 2024 安装激活详细使用教程(激活至2026,实测是永久,亲测!)

开发工具推荐:GoLang 安装激活详细使用教程(激活至2026,实际上永久,亲测!)申明:本教程 GoLang 补丁、激活码均收集于网络,请勿商用,仅供个人学习使用,如有侵权,请联系作者删除。若条件允许,希望大家购买正版 ! GoLang是JetBrains公司推出的一款功能强大的GO语言集成…

数值计算方法(3) 数值微分方法

+++ date = 2024-12-21T15:45:47+08:00 draft = true title = 数值计算方法(3) 数值微分方法 +++ 初次发布于我的个人文档 上一期讲了数值积分方法,这一次自然是要讲数值微分方法的,不然太不完善了。 更何况数值微分方法其实是基于数值积分方法得到的。 我们先从比较简单的估…

.Net NativeAOT另外一种选择-bflat

https://www.qiufengblog.com/articles/dotnet-native-bflat.html前言 说起bflat,还得先说NativeAOT,在.Net 7时,正式把NativeAOT合到Runtime中,地位是明显上升了,对NativeAOT的代码提交也越来越多了,之前还是corert时,几年也没有太大的进展. 这个时候的成果还是有ILC(ILCompil…

20241415 《计算机基础与程序设计》课程总结

20241415 《计算机基础与程序设计》课程总结 每周作业链接汇总 第一周作业 参考基于VirtualBox虚拟机安装Ubuntu图文教程安装Linux系统 自学计算机科学概论》并提出问题第二周作业 了解计算思维和计算机结构第三周作业 计算机的数据表示法 C语言的基本数据类型第四周作业 门电路…

centos7 开启网卡相关设置

默认网卡是ens33 查看ip命令 ip a 或 ip addr 对于没有启用的网卡,使用命令ifup,开启网卡。注意网卡的名称ens33 找到自己对应的ifup ens33 永久默认启用网卡,关机或重启后,网卡自动启用该配置文件在/etc/sysconfig/network-scripts文件夹下,可以提前备份下 ifcfg-ens3…

20241417 《计算机基础与程序设计》课程总结

20241417 《计算机基础与程序设计》课程总结 每周作业链接汇总 第一周作业:链接 简要内容:课程概论,工业革命与浪潮之巅,信息与信息安全,计算机系统概论,计算机安全,计算的限制,计算思维第三周作业:链接 简要内容:数字分类与计数法,位置计数法,进制转换,模拟数据与…

PCIe扫盲——Base Limit寄存器详解

上一篇文章介绍了Type0型配置空间Header中的BAR的作用和用法,但是PCIe中的桥设备(Switch和Root中的P2P)又是如何判断某一请求(Request)是否属于自己或者自己的分支下的设备的呢?(定义范围) 这实际上是通过Type1型配置空间Header中的Base和Limit寄存器来实现的,这篇文章…

用.NET X64 Native AOT编写的操作系统

https://blog.csdn.net/sd7o95o/article/details/1331911601.前言很多人想学习下.Net前沿技术和核心技术,这里推荐一个适合大家学习的案例,用.NET X64 Native AOT编写一个操作系统。 2.概述MOOS(To Make My Own Operating System Project)是一个采用.NET x64 Native AOT技术…