编程新手(一):java认知及初学者指南(编程java入门)-ag凯发k8国际

编者按:

本文主要为新手或小白而写的java入门认知和学习指南。初步计划写三四篇,以便初学java编程的同学能更好的认知java、掌握java编程中核心备忘清单以及进阶学习中应该了解的热门应用框架。有经验的java人员可略过此篇。也欢迎各位新同学留言咨询。

关于2022年java的预测和假设,请参考:

何为java?

java就是基于面向对象编程系统 (object-oriented programming systems ,oops) 概念的面向对象编程语言(object-oriented programming language)。

java 中的一切都与对象有关。如果你掌握了对象的本质,java 就像吃你最喜欢的食物一样简单和讨人喜欢。

问题来了,既然就像食物,那就有很多的编程语言好的,但是为什么要学习 java呢?

简单来讲,因为java 就像您最喜欢的各种美味(易于编码)和健康(安全且健壮)的食物!

除了 java 是 2021 年的顶级热门编程语言之一,并且可能至少还会保持十年这样的事实之外,java 几乎在您能想到的每个领域都取得了成功!

由于 java 是安全的和多线程的,因此非常适合银行和交易管理服务。电子商务商店和计费软件的逻辑是在基于 core java 的框架中编写的。比如 android 这样的移动操作系统也是使用 java api的;股票市场算法基于 java;最近以来的所有大数据——海量数据都用 java 处理得轻而易举。实际上,hadoop 的 mapreduce 框架是用 java 编写的。 java 与 spring 等其他框架形成了强大的组合,可以对金融和 it 领域的实现依赖项进行有序化处理,并编写相应的服务器端应用程序。

java 是由 sun microsystems 开发的“一次编写、随处运行”的编程语言。它类似于 c 和 c ,但要容易得多。您可以将 java 与许多技术(如 spring、node js、android、hadoop、j2ee 等)结合起来,构建健壮、可扩展、可移植和分布式的成熟应用程序。 java 还使用 selenium 等工具促进持续集成和测试。

java 最初是由 james gosling 和他在 sun microsystems 的同事在 1990 年代初期开发的。最初,它被称为“oak”项目,其实现类似于 c 和 c 。 java 这个名字是经过充分的头脑风暴后选定的,它是来自咖啡豆的名称。 java 1.0,第一个版本于 1995 年发布,标语是“一次编写,随处运行”(write once, run anywhere)。后来,sun microsystems 被甲骨文收购。从那以后,再也没有回头。 java 的最新版本是 2021 年 9 月发布的 java 17(一个长期支持版)。

java 提供了许多吸引人的特性—

  • ø 平台无关语言。
  • ø 丰富的标准库使其易于编码。您可以使用 java 创建一个完整的独立应用程序。
  • ø java 支持自动内存分配和释放(称为垃圾收集)。
  • ø 它提供了出色的性能,因为 java 支持多线程和并发性,从而使其成为一种高度交互和响应性的语言。
  • ø 安全简单。
  • ø ……

要了解有关 java 功能特性的更多信息,请查阅ag凯发k8国际官网的文章。

您一定听说过很多关于 java 作为编程语言的信息。但是,你知道它也是一个“平台”吗? java 平台是一个纯软件平台,与 windows、mac、linux 或 solaris 等传统平台截然不同。前者运行在后者平台的硬件之上。 java 程序通过 java 虚拟机,将字节码转换为本地代码,从而使程序可以在任何设备上运行!这意味着您不需要单独的特定于机器的编译器来运行 java 代码。这就是 java 也被称为平台的原因。 java 编程语言不同于 java 平台。 java 编程语言可帮助您构建应用程序。您用 java 编程语言编写的内容是在现有的程序和工具集合(统称为 java 平台)的帮助下开发和运行的。 java平台由jdk、jvm和jre组成。

java 编程语言有四种 java 平台——

  • ø java se(java 平台,标准版)
  • ø java ee(java 平台,企业版,现在为jakarta ee)
  • ø java fx(可以认为是更高级的swing,但可开发移动应用)
  • ø java me(java平台,微型版,终端电子设备)

虽然可以在 java se 平台上构建独立应用程序,但大多数万维网(互联网)都依赖于 java ee。 java me 适用于小型设备(如手机)上的应用程序。

java 有三个主要架构性组件 – jvm、jdk 和 jre。

jdk( java development kit) 即java 开发工具包,是开发人员编写代码并通过 jre(java runtime environment,即 java 运行时环境)来运行它的地方。

代码是如何转译或翻译的?那是通过 java 虚拟机 (jvm)来完成的。使用 jvm,任何用 java(或任何其他语言——支持字节码的)编写的代码都可以转换为 java 字节码。任何机器都可以基于操作系统实现此代码。 jvm 与 java 包(库)一起驻留在 jre 中以为java程序服务。

简而言之:

  • ü jdk:包含jre 开发工具,如解释器(类加载器)、编译器(javac)、jar 文件(打包和存档)以及 javadocs等。
  • ü jvm:执行 java 字节码的抽象机器。由描述 jvm 实现、实际实现程序和 jvm(运行时)实例的规范文档组成,可在其中运行主程序。
  • ü jre:jvm 的物理实现(运行时实例)。它包含 jvm 用于运行程序的库包和支持文件。

如果有电脑,可以在阅读本文时尝试一些事情以为练习:在本地系统上安装 jdk(java 开发工具包)和 jre(java 运行时环境)。要下载最新版本,请到javaag凯发k8国际官网。

然后,您可在系统上安装一个 ide 以处理我们将学习的概念。 eclipse 是我使用的一个很好的 ide,它很容易设置并且不会让你感到麻烦。您可以下载 eclipse 或 easy eclipse。 easy eclipse 是 eclipse 的轻量级版本,功能较少,适合初学者。还有其他更多 ide,如netbeans,jdeveloper、 intellij idea、bluej等——从java 9开始,可以在jshell中开始初步的java编程学习了,为初学者提供了便捷的学习支持。

如果您现在不想做任何这些,而只想阅读 一下关于java,那很好!只需继续阅读,掌握概念,然后随时开始编码!

哦,这里有个很好的 初学者的java 课程,您在学习了基础知识后会喜欢上它!@牛旦it课堂 专栏内有,如《》

在我们开始编码之前,让我们熟悉一些术语——

每个 java 程序都是由类或接口定义的不同类型对象的集合构成。这是基本结构——

class school {//由好几个其它对象和实例变量组成public string schoolname;public int id;teacher[] teachers;student[] students;…..// 以及其它一些方法public int getschoolname(){}}

逻辑都在方法内部,可以像类的 getter 和 setter 方法一样简单,也可以像基于多个条件从数据库中获取某些内容一样复杂!

我们来写一个简单的程序,当我们学习更多 java 概念时,我们会添加扩展它。

请注意,就像任何其他编程语言一样,java 中的每个独立程序都应该由一个 main 方法来执行。

创建一个 test 类,并向其添加一些简单的代码,示例如下:

class test{ public static void main(string args[]){ int rollnumber = 36; string name = “solo”; system.out.println(“my name is ” name “ and my roll number is ” rollnumber); }}

这段代码的每一行都会陆续学习,简要介绍如下:

  • l class – 此关键字用于创建 java 类。当你运行程序时,你会用命令 javac test.java 来编译代码,然后 java test.java 来执行程序。如果您使用的是 ide,则只需右键单击该类并选择“运行”。
  • l public – public 是指示可见性的访问修饰符。 main 方法不能将访问修饰符设为私有(访问修饰符)。私有方法只能在类内调用,而公共方法对所有人可见。
  • l static – 变量和方法可以使用 static 关键字修饰。为什么 main 方法是静态的?对于静态方法,我们不必创建对象就可使用。因此,我们不必创建 test 对象来调用 main 方法。
  • l void – 如果方法不返回任何值,则其类型设置为 void。
  • l int, string – 这是 java 使用的众多数据类型中的两种。因为它也使用原始类型,所以 java 不被视为完全面向对象的语言。
  • l system.out.println – out 是 system 类的静态字段。该字段存储 printstream 类的实例。 println() 是此类的方法,它将所需的输出打印到控制台。

让我们稍微修改一下这个程序,以获取用户输入的名称和卷号。有很多方法可以做到这一点。对于这段代码,让我们使用最常用的方法——scanner 类。要使用这个类,我们需要先将类进行导入: import java.util.scanner;

在之前的代码中,在 system.out.println (…) 之前,让我们添加以下几行代码——

scanner scaninput = new scanner(system.in);system.out.println("enter name: ");name = scaninput.nextline();system.out.println("enter roll number: ");rollnumber = scaninput.nextint();

运行此程序时,系统会提示您"enter name:",然后"enter roll number:"。

另一种方法是通过 bufferedreader,这是传统的方法,但它有太多难以记住的包装。

我们来了解更多学生的信息——他们的姓名、登记号和科目。科目将在数组中,对于该程序,假设一名学生将修读 3 个科目。

将数组定义为 :

string[] subjects = new string[3];//获取学生的所有科目信息for(int j=0; j

这里我们使用 for 循环从用户那里获取科目并将其存储在 string 数组中。最新的java版本中for循环的语法已经改变,但这种语法更容易使用。 ‘j’是一个从0开始的临时计数器。注意j的变化。

subject.length 获取数组的长度,在本例中为 3。

要查看数组的内容,可通过 arrays.tostring(subjects)来查看,或输出到控制台。

如我们所见,我们有三个变量 name、rollnumber 和 subject,它们都属于一个公共实体 student。那么,为什么不创建一个类并将所有 3 个变量作为该类的成员呢?当我们将它们用作对象时,添加、修改和删除数据会更容易!所以,我们来创建一个类 student.java,如下所示:

public class student { int rollnumber = 0; string name = ""; string[] subjects = new string[3];}

我们将不得不更改代码以创建此类的对象,并通过 getter 和 setter 方法访问变量。 getter 和 setter 方法的一个例子如下:

public int getrollnumber() { return rollnumber;}public void setrollnumber(int rollnumber) { this.rollnumber = rollnumber;}

在使用ide时 ,ide可以为您创建所有这些内容提供快捷方式,但对于初学练习来讲,最好还是自己完成。

现在,让我们回到我们的主程序。

我们已经拥有一个学生的所有数据,为什么不获取更多学生的详细信息!我们可以创建一个 student 对象数组,并将每个学生的详细信息存储在该数组中的一个对象中。

让我们从用户那里得到学生的数量:

int numberofstudents = scaninput.nextint();

现在,让我们开始另一个 for 循环,它将从所有学生那里获取详细信息——

for(int i=0;i

我们现在要做的就是将数据设置为学生对象。为此,创建一个大小与 numberofstudents 相同的 student 对象数组。代码如下:

student[] student = new student[numberofstudents];for(int i=0;i

  • l 当我们创建 student[] 数组时,单个 student 对象仍然为空。这就是为什么在 for 循环中,我们要创建新的 student 对象。不这样做,试图使用 student[i]..就会抛出 nullpointerexception,。 我们将在本文后面讨论异常。
  • l 我们对 string 使用 next() 而不是 nextline()。 nextline() 将跳过当前行并转到下一行。最好使用 next()。
  • l 假设用户将 numberofstudents 设为 2。外部 for 循环将执行两次。主题数组的大小为 3,因此内部 for 循环将为每个外部循环执行 3 次,因此总共执行 6 次。
  • l 请注意 java 中的命名约定。变量名和方法名以小写开头,但我们将每个单词的第一个字母大写,而类名则以大写字母开头。

现在,我们拥有 student 数组中的所有数据。我们可以使用 java 构造函数来改进代码,这是一种比 setter 方法更有效的在对象中存储事物的方法。当你有很多数据时,你可以一次设置构造函数中的所有值,而不是使用 10 次 set 方法。让我们在 student 类中创建一个构造函数。如下所示:

public student(string name, int rollnumber, string[] subjects){ this.name = name; this.rollnumber = rollnumber; this.subjects = subjects;}

现在,让我们修改我们的 test 类以使用这个构造函数。请注意,现在该行:

student[i] = new student();

此行不会起作用,因为我们没有在我们的类中创建一个无参数的构造函数。当没有定义其他构造函数时,java编译器默认创建no-arg构造函数,否则,我们应该使用我们在代码中创建的构造函数。

我们的代码现在将变成——

system.out.println("enter name and roll number: ");student[i] = new student(scaninput.next(), scaninput.nextint(), subjects);

这为我们减少了大约 3-4 行代码。想象一下,当有更多的对象和成员变量时,它会有多有用。请注意,subjects 数组是空的,因为我们正在获取科目的 name 和 rollnumber 之后才轮到subjects的值。

下一个问题是我们在哪里存储这些学生对象,以便我们以后可以检索它们并进行一些修改或显示列表的内容?简单的答案是 arraylist。创建一个 arraylist 并向其添加对象非常简单。

arraylist 的一些重要特性须知:

  • l arraylist 是动态的。我们可以随时扩展arraylist,大小不固定,不像数组。
  • l arraylist 是 java 集合框架的重要组成部分。
  • l 我们可以随机访问列表中的任何对象。
  • l 我们只能在 arraylist 中存储对象。如果我们必须创建一个整数的 arraylist,我们需要将原始 int 类型包装到 integer 对象中。

回到我们的代码,来创建arraylist为 :

arraylist studentlist = new arraylist();

要将对象添加到列表中,在获取所有详细信息后,只需将完整对象添加到列表中。这样添加:

studentlist.add(student[i]);

与其混淆数组循环并将每个对象寻址为 student[0]、student[1] 等……让我们使用 iterator 来获取和显示数据。

可将迭代器视为一个游标,它遍历集合的元素。您可以使用迭代器从集合中获取或删除任何元素。类似如下:

iterator itr = studentlist.iterator();system.out.println("所有学生的输入信息为---");while(itr.hasnext()){ system.out.println(itr.next().tostring());}

  • l 我们不创建 iterator() 的新对象,而是使用列表的迭代器方法指向 itr。
  • l while 循环使用 hasnext() 方法检查列表中是否还有更多对象。当 hasnext() 返回 false 时,while 循环将结束。
  • l itr.next() 获取列表中的下一项。

您希望输出的应该是整洁的输入信息。不对头啊?java 给的类似下面的东西——

student@e7b241

因为要单独打印对象的成员,我们还需要覆盖 student 类中的 tostring() 方法。

public string tostring(){ string studentdetails = null; studentdetails = "student name: " this.name ", student roll number: " this.rollnumber " , chosen subjects: " arrays.tostring(this.subjects) "n"; return studentdetails;}

  • l this 关键字是一个引用变量,指向当前类的实例变量。
  • l 要从数组中获取值,我们使用实用程序类 arrays 的 tostring() 方法。请注意,arrays包含静态方法,因此我们不需要创建对象来使用这些方法。我们直接使用类名和方法名。

看见没,现在会得到你想要的结果了!

但是,有一个问题……

我们没有处理用户输入错误的场景!例如,如果有人为 rollnumber 输入一个字符串会怎样?我们不会向用户抛出异常的整个堆栈跟踪。相反,我们可以向用户发送一条好消息。

尝试为 rollnumber 输入一个字符串,您将在线程“main”中得到异常 java.util.inputmismatchexception。

try{ rollnumber = scaninput.nextint();}catch (inputmismatchexception ime){ system.out.println("please enter a valid number");}

为了确保不会发生这种情况,我们需要确保用户输入正确的值。但是,怎样实现?让我们放置一个 try/catch 块来捕获异常并在出现错误时向用户显示一条友好的消息。

我们也可以对 numberofstudents 应用相同的方法。最好的做法是将整个代码放在 try 块中,这样任何异常都可以在 catch 块中捕获。

这在 java 中称为异常处理。在实际应用程序中,类可以抛出异常,最后某个类将捕获并向用户显示适当的消息。 java 中有更多的运行时异常,最常见的是 nullpointerexception、classcastexception、arithmeticexception、illegalargumentexception、arrayindexoutofboundsexception 等……

在本文中,我接触了 java 的基础知识,只是让您知道什么是编程语言,若之前使用过其他语言,就可以很快开始使用 java 进行编码。通过本文,要了解以下基本概念——

  • l 类和对象
  • l 构造函数
  • l 输入/输出流
  • l for 和 while 循环
  • l 基本和非基本数据类型
  • l tostring() 方法
  • l 集合(arraylist)和迭代器
  • l 异常处理基础

这里只是通过一个简单的程序来认知这些。还有许多高级概念不在本文的范围内,但请继续关注本头条号,这里将或已经推出更多关于线程、内部类、接口、垃圾收集等高级概念的文章。

赶快从的专栏开始学java编程吧:


下一篇,将为java编程学习的同学提供一份核心基础知识备忘清单,以供随时翻阅。本篇就到这里了,分享出去吧。再见!

ag凯发k8国际的版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2023年3月23日 上午9:03
下一篇 2023年3月23日 上午9:12

相关推荐

  • 信托公司信托业务分类调整迎来新进展。 中国证券报·中证金牛座记者10月10日获悉,日前已有信托公司收到监管部门下发的关于调整信托公司信托业务分类有关事项的通知(以下简称“通知”),…

    科研百科 2022年11月12日
    256
  • 日前,上汽集团宣布成立“上汽集团创新研究开发总院”,将全面整合旗下五大信息技术中心、乘用车技术中心、海外创新中心等优势资源,组建超万人规模自主研发人才队伍。 通过在创新机制体制上的…

    2022年6月13日
    113
  •   中国张掖网肃南讯:肃南县紧紧围绕建设“绿色畜牧名县”的总体要求,以促进畜牧业增效、农牧民增收、农牧村发展为目标,全面深化改革,激发全县农牧村内在发展活力…

    科研百科 2022年5月30日
    114
  • 今天,为大家推荐两款运行在windows系统上的免费、绿色下载软件(迅雷极速版、idm下载器)。 一、迅雷极速版 迅雷极速版是一款非常好用的下载工具,具有下载速度快、运行稳定、占电…

    科研百科 2023年3月16日
    49
  • 来源:海报新闻 大众网·海报新闻记者 崔雅伦 报道 9月29日上午,青岛市行政审批服务局与中国工商银行股份有限公司青岛市分行举行青岛市工程建设项目审批管理平台2.0启动仪式,签署战…

    科研百科 2022年7月13日
    123
  • 养牛夫妻轻信他人 40万积蓄打水漂

    42p 牛农网配图42p   呼和浩特晚报讯(记者 徐达明)我市某村一对养牛致富的夫妇,因为轻信一名六旬男子的谎言,不但没有发财,反而把积攒多年的40多万元被对方骗走。昨日,呼和浩…

    2022年5月25日
    163
  • 1、 设计团队的组织协调管理; 1.1 负责组建项目设计总监和项目后台设计团队, 1.2. 对项目的全过程设计进行统筹协调管理。 1.3 明确项目负责人、各专业负责人权责界面及协同…

    科研百科 2022年9月12日
    115
  • 直播app开发不仅要注重功能,更加需要注重视频的自动处理,及服务器cdn,还有并发的处理,直播app开发费用一般在3至15万,但是直播app对服务器及流量要求高,很多公司可以开发起…

    科研百科 2023年3月27日
    15
  • 怎样开发一个自己的淘客app系统 开发一个自己的淘客app系统,完全属于自己所有,不怕被别的平台抢走,可留存客户,提高客户的佣金,增加客户粘性等,应该怎样开发呢? 在找淘宝客软件开…

    科研百科 2023年5月10日
    57
  • 分享职场干货,提升能力! 为职场精英打造个人知识体系,升职加薪! 精益生产5s管理培训课件 如何拿到分享的源文件:请您关注、转发,然后私信本头条号“文米”2个字,按照操作流程,专人…

    2022年6月23日
    121
网站地图