Java是什么?Java到底能干嘛?

我刚开始学习Java的时候,很长一段时间都有这么个疑惑?

Java到底是啥?它能干什么?

自己也看过不少的课程和书,大部分都是从Java的发展史开始讲,总之就是那些什么Java历史悠久,Java很优秀,Java越来越牛,用的人越来越多,什么编程语言排行榜常年第一,大致都是这些,然后再扯些其他的,接着就上起了Hello World!就这样,你Java生涯的第一个代码开始了,意思是“你好,世界!”

我还是想不通,Java是啥,能干嘛,能不能先告诉我?

可能你在刚开始学习Java的时候也有这样的疑惑,那么你会怎么做呢?你不知道啊,怎么办?问别人?不,你应该会想到百度,不是说

百度一下,你就知道吗?

好嘞,我们上百度看看去:

640?wx_fmt=png

看到第一个是百度百科对Java的介绍,点开看看吧,百度百科是这样介绍Java的:

Java是一门面向对象编程语言,不仅吸收了C语言的各种优点,还摒弃了C里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程 [1] 。Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点 [2] 。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等 [3] 。

大眼一看,说的真好,不过总觉得有点官方啊,继续搜索其他的文章,看看别人怎么介绍Java的,随便点开一篇文章,看,这位博主这样说:

Java是一种可以撰写跨平台应用程序的、面向对象的程序设计语言。简单说,Java就是一种语言,不过是一种针对jvm的语言,Java编译后是字节码,而jvm会把这些字节码解释成机器码,然后做出相应的动作。

百度百科那个说到了C和C++,还有什么面向对象,分布式,还有什么静态面向对象编程,觉得有点不懂,看这位博主写的,貌似懂了一些,不过啥是jvm啊?

你看看,刚开始学习个Java,没想到什么是Java都弄不清楚,有点小失落!

庆哥说:很多人刚开始学习Java的时候其实并不会这样仔细的去研究到底什么是Java,大部分都是百度搜一下看一下什么是Java,或者看书看视频,听别人大致讲一下什么是Java就过去了,结果就是突然有人问你什么是Java,你貌似不知道怎么说,大致能想起来,嗯,是个编程语言。

那么怎么去理解Java,该怎么说呢?要的是那种从来没有接触过编程的人也能一听就知道Java是什么了?有吗?

那必须有啊,那啥是Java嘞?

首先嘞,你先记住,Java是语言,啥是语言?汉语,英语,法语和德语,布拉布拉,就这些,对,Java也是一门语言,有啥不同嘞,像汉语,针对的是我们人,我们中国人大部分都是使用汉语来进行沟通,Java也是语言,不过我们人不用Java语言沟通,那Java是谁的沟通语言?

Java是计算机和我们的沟通语言,计算机可以懂Java这门语言。当然,你学会了Java,你也会这门语言,你就可以和计算机沟通啦!

比如说,你对你女朋友说“给我倒洗脚水去!”,然后你女朋友听到了这句话,知道自己该干嘛了,就去给你倒洗脚水了(现实中大部分不是这样,哈哈)。

那么你要是和计算机沟通,想让计算机给我们做一件事情,总不能说“喂,计算机,给我倒洗脚水去”,这个计算机还真听不懂,那咋办?

当然是得使用计算机能够明白的语言与它沟通啦!那是啥,Java就是啊,你使用Java是可以和计算机沟通的,当然这里的沟通是类比我们人与人之间的说法,其实对于计算机而言,准确的应该是我们给计算机下达指令,计算机收到我们的指令去做相应的事情。

怎么样,大致有个印象吧!啥是Java,明白那么一丢丢了吧!

Java是一门语言,记住了吧,这个语言是用于计算机的,我们使用Java可以和计算机进行交流,我们写一段Java代码,计算机就知道我们想干啥,当然前提是你写的是正常的代码,所以Java可以叫做计算机语言。

可能有人又不明白了,啥是计算机语言,这个?不就是计算机之间的语言嘛,我们看看百科怎么介绍计算机语言的:

计算机语言(computer language)指用于人与计算机之间通讯的语言,是人与计算机之间传递信息的介质。但是其概念比通用的编程语言要更广泛。例如,HTML是置标语言,也是计算机语言,但并不是编程语言。

看到这里我们又要肯定一个概念,啥嘞?

Java是一门计算机语言,可以用于我们与计算机之间的沟通,我们可以使用Java语言给计算机下达指令。

好,我们继续,我们看上面说到了编程语言,那啥又是编程语言,和计算机语言有什么区别呢?

首先你要知道,你学习Java,以后你就可以说自己是程序员,码农,敲代码的,干编程的!

你看,我们又说到了编程,咱先来说说编程语言吧,上面我们说到,Java是一门计算机语言,那是不是编程语言呢?

必须的啊,Java铁定是编程语言啊,这里要记住:

计算机语言包括的更多,它包括了编程语言,除此之外,计算机语言还包括置标语言,建模语言,你可能又糊涂了,这都是啥啊?其实吧,我也不知道,所以,别管了,你只要记住,计算机语言包括编程语言,Java是一门计算机语言,也是一门编程语言。

到了这里,急需要和大家解释一下,什么是编程语言,百科对他是这样说的:

用来定义计算机程序的形式语言。它是一种被标准化的交流技巧,用来向计算机发出指令。一种计算机语言让程序员能够准确地定义计算机所需要使用的数据,并精确地定义在不同情况下所应当采取的行动。

简单点,大白话一点:

可以写程序,也就是我们可以使用它来让计算机干活

没忘记吧,Java就是一门编程语言啊,当然,编程语言那可有不少嘞,就像各个国家都有自己不同的语言,编程语言也是有很多分类的,来来,看张图吧:

640?wx_fmt=png

你看看,是不是很多啊,不过不用管它,我们的重点是Java。

说到了这里,我们大致知道了Java是个啥,那么这个Java怎么用啊?能不能举个例子啊,好,接下来,我们就让我们的计算机给我们倒洗脚水,走起。

对了,你起码应该知道Java编程语言,是需要你写的吧,也就是需要你敲代码的。

庆哥说:啥是代码啊,代是代表的意思,码嘞,这可不是我们骑得那玩意,这里指的是二进制编码,所以代码就是“代表二进制编码的东西”,这一块,后面也会详细介绍,不着急。

下面我们开始敲代码吧,打开你的记事本,然后写上这些:

public class Hello{	
    public static void main(String[] args){	
        System.out.println("hello,给我倒洗脚水去");	
    }	
}

对了,你知道上面这是干嘛不,我们在给计算机发指令嘞,也就是让它给咱干活,写好之后保存这个文件,对了,文件的格式要改成以“java”结尾的哦,文件名称要叫Hello,也就是“Hello.java”

看,就是它:

640?wx_fmt=png

然后我们打开我们电脑上的cmd命令行,关于cmd有多种打开方式,通常的一种是按下“win+r”会出现这个:

640?wx_fmt=png

在里面输入cmd,然后确定,就会出现“黑窗口”,也就是dos命令窗口。也就是现在这个样子:

640?wx_fmt=png

可能有人说,不一样啊,我的没有那个cd,我也是刚打上的,所以,你也敲上个cd吧,可能有人知道这是干嘛的,接下来我们把刚才创建的“Hello.java”直接拖拽到这个黑窗口,就成了这样:

640?wx_fmt=png

然后注意要把后面的“\Hello.java”删除掉,然后按一下回车键,也就是“Enter”,就出现了这个:

640?wx_fmt=png

ps:到这里可能有人会出错了,我们初学编程的时候总会遇到各种各样的奇葩问题,很多人迷茫的不要不要的,说我明明照着做的,为啥就是不行,初学者出现这样的问题,大部分都是自己的马虎造成的,非说自己的一样,到最后,不是字母写错,就是忘了空格,还有个重要的是标点符号不是英文状态下的,如果你这里出现错误了,看看,有没有出现我说的错误。

接下来,我们继续输入:

javac Hello.java

然后回车,这一回车不要紧,那是会产生一个新物种的:

640?wx_fmt=png

出现了啥新物种呢?你看看,就是它:

640?wx_fmt=png

这个是Java的字节码文件,也叫做class文件,因为命名是以class结尾的,这个你不懂没关系,我们接着往下做:

640?wx_fmt=png

看到没,我们又输入了以下命令:

java Hello

然后我们看到有个输出:

Hello,给我倒洗脚水去

ps:如果你在跟着我的操作在你的电脑上操作的话,可能你在输入javac那一步就出错了,那是因为你缺少java运行环境,这个我们后面会详细介绍,你可以先看我操作的结果。

有人说,这是啥,有点疑惑啊,我之前不是说了嘛,我们可以使用java语言来给计算机下达指令,让计算机给我们干活,对了,你不会真以为计算机会给咱们倒洗脚水吧。

我们再来看看这段代码:

public class Hello{	
    public static void main(String[] args){	
        System.out.println("hello,给我倒洗脚水去");	
    }	
}

这就是一段最简单的java代码,至于为啥这样写,你先不用管,我们不是说可以用java给计算机下达指令嘛?指令在哪?

System.out.println("hello,给我倒洗脚水去");

这其实就是我们给计算机下达的一个指令,意思是让计算机在屏幕上打印这一句话:

hello,给我倒洗脚水去

我们看刚才的输出,是不是就是打印出了这句话:

640?wx_fmt=png

你看,计算机是不是按照我们给的Java指令做出了相应的动作,当然,这是最基本的,最简单的。

到这里,我相信,你大致懂了什么是Java了,不过接下来还有一个大问题,那就是Java能干嘛啊?

上面我们给出了一个简单的例子,就那么一丢丢代码,不过还可以有很复杂的,代码超级多的,这样就会产生一个有很多功能的东西,比如我们可以用Java写一个计算器,啥计算器,就类似你电脑上自带的计算器那样,再比如我们常用的qq吧,我们也可以用Java写一个,当然,越复杂的应用,写起来难度越大,我们还可以使用Java做出来一个网站,你想在网站上展示啥都行。

不过嘞,Java可能写系统更多一些,就是各种各样的后台,啥是后台,比如你进入淘宝买东西吧,你登陆自己的账户和名称,然后进入首页,然后搜索“好吃的”,然后就会出来一大堆好吃的。

为啥你输入自己的账户和名称就能进去网站,那是因为用Java代码写了一个逻辑,比如说,你的名字是1,密码是2,当你点击登录按钮的时候,Java代码中就会做判断,如果名字是1而且密码是2,那就让你登进去,否则就进不去,这都是Java代码的功劳。

当你选中一个好吃的,然后下单,填写地址,然后你就愉快的购物完成了,接下来商家需要给你发货啊,于是商家就会登上一个网站,在这个里面可以看到你叫啥,买的啥,地址在哪,然后就给你发货了,商家登入的这个网站就可以叫做后台。

懂了嘛,Java就可以完成这样的一个网站。

学到后面你就会发现,语言就是工具,能做的事情有很多,不局限于网站啊,桌面应用啥的!

说了这些,你也能大致知道Java能做些啥了,其实我知道你了解的还是有点模糊,那下面咱再说说。

Java其实有三个版本分类:

  1. JavaSE

  2. JavaME

  3. JavaEE

你可以大致的这样理解,JavaSE是Java的核心基础,包含的就是基础知识,自学Java刚开始都是从这个开始的,JavaME呢?不知道大家之前玩过那种游戏没,就是在安卓手机还没有的时候,我们会下载一些jar结尾的游戏文件来安装,打开之后都会先有这个图标:

640?wx_fmt=png

你可以简单理解这就是JavaME搞出来的,不过后来出来了安卓,就代替了它,所以不用太管它,至于JavaEE,可以称为企业级应用开发,这部分会学各种框架,各种高级玩意儿,也是我们后期主要学习的东西,我们可以利用这部分知识开发各种网站啊,桌面应用啊,一些工具啊,甚至游戏都可以,当然,很多应用都是使用到了java的综合技术来实现的。

现在很多学习编程的人,刚开始会疑惑不知道学哪门编程语言,其实吧“铁打的思想,流水的语言”,语言终归是工具,怎么用,能干嘛,这取决于用的人,如果你足够牛,那么你可以:

用java改变世界!

尾声:这篇文章相当于一个先导课,目的是让大家对java有个初步的认识,后期会有更加详细的介绍,会带着大家一步步揭开java的神秘面纱!

有道无术,术可成;有术无道,止于术

欢迎大家关注Java之道公众号

640?wx_fmt=png

好文章,我在看❤️

  • 68
    点赞
  • 160
    收藏
  • 10
    评论
1JAVA SE 1.1深入JAVA API 1.1.1Lang包 1.1.1.1String类和StringBuffer类 位于java.lang包中,这个包中的类使用时不用导入 String类一旦初始化就不可以改变,而stringbuffer则可以。它用于封装内容可变的字符串。它可以使用tostring()转换成string字符串。 String x=”a”+4+”c”编译时等效于String x=new StringBuffer().append(“a”).append(4).append(“c”).toString(); 字符串常量是一种特殊的匿名对象,String s1=”hello”;String s2=”hello”;则s1==s2;因为他们指向同一个匿名对象。 如果String s1=new String(“hello”);String s2=new String(“hello”);则s1!=s2; /*逐行读取键盘输入,直到输入为“bye”时,结束程序 注:对于回车换行,在windows下面,有'\r'和'\n'两个,而unix下面只有'\n',但是写程序的时候都要把他区分开*/ public class readline { public static void main(String args[]) { String strInfo=null; int pos=0; byte[] buf=new byte[1024];//定义一个数组,存放换行前的各个字符 int ch=0; //存放读入的字符 system.out.println(“Please input a string:”); while(true) { try { ch=System.in.read(); //该方法每次读入一个字节的内容到ch变量中。 } catch(Exception e) { } switch(ch) { case '\r': //回车时,不进行处理 break; case '\n': //换行时,将数组总的内容放进字符串中 strInfo=new String(buf,0,pos); //该方法将数组中从第0个开始,到第pos个结束存入字符串。 if(strInfo.equals("bye")) //如果该字符串内容为bye,则退出程序。 { return; } else //如果不为bye,则输出,并且竟pos置为0,准备下次存入。 { System.out.println(strInfo); pos=0; break; } default: buf[pos++]=(byte)ch; //如果不是回车,换行,则将读取的数据存入数组中。 } } } } String类的常用成员方法 1、构造方法: String(byte[] byte,int offset,int length);这个在上面已经用到。 2、equalsIgnoreCase:忽略大小写的比较,上例中如果您输入的是BYE,则不会退出,因为大小写不同,但是如果使用这个方法,则会退出。 3、indexOf(int ch);返回字符ch在字符串中首次出现的位置 4、substring(int benginIndex); 5、substring(int beginIndex,int endIndex); 返回字符串的子字符串,4返回从benginindex位置开始到结束的子字符串,5返回beginindex和endindex-1之间的子字符串。 基本数据类型包装类的作用是:将基本的数据类型包装成对象。因为有些方法不可以直接处理基本数据类型,只能处理对象,例如vector的add方法,参数就只能是对象。这时就需要使用他们的包装类将他们包装成对象。 例:在屏幕上打印出一个*组成的矩形,矩形的宽度和高度通过启动程序时传递给main()方法的参数指定。 public class testInteger { public static void main(String[] args) //main()的参数是string类型的数组,用来做为长,宽时,要转换成整型。 { int w=new Integer(args[0]).intValue(); int h=Integer.parseInt(args[1]); //int h=Integer.valueOf(args[1]).intValue(); //以上为三种将字符串转换成整形的方法。 for(int i=0;i<h;i++) { StringBuffer sb=new StringBuffer(); //使用stringbuffer,是因为它是可追加的。 for(int j=0;j<w;j++) { sb.append('*'); } System.out.println(sb.toString()); //在打印之前,要将stringbuffer转化为string类型。 } } } 比较下面两段代码的执行效率: (1)String sb=new String(); For(int j=0;j<w;j++) { Sb=sb+’*’; } (2) StringBuffer sb=new StringBuffer(); For(int j=0;j<w;j++) { Sb.append(‘*’); } (1)和(2)在运行结果上相同,但效率相差很多。 (1)在每一次循环中,都要先将string类型转换为stringbuffer类型,然后将‘*’追加进去,然后再调用tostring()方法,转换为string类型,效率很低。 (2)在没次循环中,都只是调用原来的那个stringbuffer对象,没有创建新的对象,所以效率比较高。 1.1.1.2System类与Runtime类 由于java不支持全局函数和全局变量,所以java设计者将一些与系统相关的重要函数和变量放在system类中。 我们不能直接创建runtime的实例,只能通过runtime.getruntime()静态方法来获得。 编程实例:在java程序中启动一个windows记事本程序的运行实例,并在该运行实例中打开该运行程序的源文件,启动的记事本程序5秒后关闭。 public class Property { public static void main(String[] args) { Process p=null; //java虚拟机启动的进程。 try { p=Runtime.getRuntime().exec("notepad.exe Property.java"); //启动记事本并且打开源文件。 Thread.sleep(5000); //持续5秒 p.destroy(); //关闭该进程 } catch(Exception ex) { ex.printStackTrace(); } } } 1.1.1.3Java语言中两种异常的差别 Java提供了两类主要的异常:runtime exception和checked exception。所有的checked exception是从java.lang.Exception类衍生出来的,而runtime exception则是从java.lang.RuntimeException或java.lang.Error类衍生出来的。    它们的不同之处表现在两方面:机制上和逻辑上。    一、机制上    它们在机制上的不同表现在两点:1.如何定义方法;2. 如何处理抛出的异常。请看下面CheckedException的定义:    public class CheckedException extends Exception    {    public CheckedException() {}    public CheckedException( String message )    {    super( message );    }    }    以及一个使用exception的例子:    public class ExceptionalClass    {    public void method1()    throws CheckedException    {     // ... throw new CheckedException( “...出错了“ );    }    public void method2( String arg )    {     if( arg == null )     {      throw new NullPointerException( “method2的参数arg是null!” );     }    }    public void method3() throws CheckedException    {     method1();    }    }    你可能已经注意到了,两个方法method1()和method2()都会抛出exception,可是只有method1()做了声明。另外,method3()本身并不会抛出exception,可是它却声明会抛出CheckedException。在向你解释之前,让我们先来看看这个类的main()方法:    public static void main( String[] args )    {    ExceptionalClass example = new ExceptionalClass();    try    {    example.method1();    example.method3();    }    catch( CheckedException ex ) { } example.method2( null );    }    在main()方法中,如果要调用method1(),你必须把这个调用放在try/catch程序块当中,因为它会抛出Checked exception。    相比之下,当你调用method2()时,则不需要把它放在try/catch程序块当中,因为它会抛出的exception不是checked exception,而是runtime exception。会抛出runtime exception的方法在定义时不必声明它会抛出exception。    现在,让我们再来看看method3()。它调用了method1()却没有把这个调用放在try/catch程序块当中。它是通过声明它会抛出method1()会抛出的exception来避免这样做的。它没有捕获这个exception,而是把它传递下去。实际上main()方法也可以这样做,通过声明它会抛出Checked exception来避免使用try/catch程序块(当然我们反对这种做法)。    小结一下:    * Runtime exceptions:    在定义方法时不需要声明会抛出runtime exception;    在调用这个方法时不需要捕获这个runtime exception;    runtime exception是从java.lang.RuntimeException或java.lang.Error类衍生出来的。    * Checked exceptions:    定义方法时必须声明所有可能会抛出的checked exception;    在调用这个方法时,必须捕获它的checked exception,不然就得把它的exception传递下去;    checked exception是从java.lang.Exception类衍生出来的。    二、逻辑上    从逻辑的角度来说,checked exceptions和runtime exception是有不同的使用目的的。checked exception用来指示一种调用方能够直接处理的异常情况。而runtime exception则用来指示一种调用方本身无法处理或恢复的程序错误。    checked exception迫使你捕获它并处理这种异常情况。以java.net.URL类的构建器(constructor)为例,它的每一个构建器都会抛出MalformedURLException。MalformedURLException就是一种checked exception。设想一下,你有一个简单的程序,用来提示用户输入一个URL,然后通过这个URL去下载一个网页。如果用户输入的URL有错误,构建器就会抛出一个exception。既然这个exception是checked exception,你的程序就可以捕获它并正确处理:比如说提示用户重新输入。 

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:博客之星2020 设计师:CSDN官方博客 返回首页
评论 10
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值