计算机和编程语言

  • 谷歌pagerank算法:给每一个网页有一个权值

    • 被越多网页引用的网页越重要

    • 被越重要的网页引用越重要

    • 给每一个网页赋予权值,空网页权值为0 (马尔科夫链)

机器语言

汇编语言

高级语言

  • c语言面向过程

  • 面向对象语言java,c++,c#

程序运行的方式

  • 解释:将源程序一句一句的翻译成二进制,然而翻译一句执行一句

  • 编译:一次将整个源代码翻译成二进制,

人工智能(Paython很多的人工智能的算法框架(工具),都是用Paython实现)

Java对于大数据(无与伦比),有很好分布式工具,调参数。

why java

  • 语言使用量最大(Android)

  • 相对简单(简单:相对指针;安全:资源回收;动态代码,虚函数)

  • 用途广

  • 运行设备最多(生产力)

java的优势

  1. java 没有指针; 引用,容易上手

  2. java有自动的资源回收机制(很大程度上规避了此现象:野指针:指针指向了不属于进程的内存空间)

  3. 实现运行时多态的时候,c++必须通过虚函数实现,java中很容易实现

  4. 跨平台,一次编译,多处运行

java版本

  • J2SE

    单机,完成桌面应用程序开发

  • J2ME

    嵌入设备(自动提款机)

  • J2EE(让别人来访问,程序不在客户端本地)网络

Java,一般来讲指代的Java程序,但是严格来讲是一个体系

  1. Java语法

  2. 运行在不同平台上的java虚拟机

  3. class字节码文件格式

  4. java api类库

  5. 三方开源(看到程序的源代码)的优秀的java类库

为什么可以跨平台运行

  • 运行在虚拟机(JVM)上才得以跨平台运行

  • 针对不同平台有windows虚拟机,linux虚拟机,mac os虚拟机

  • java是跨平台的,但是java虚拟机上不跨平台的

Java程序是跨平台的,Java虚拟机不跨平台

"Java之所以能跨平台,本质原因在于jvm不是跨平台的"如何理解?

误区:JVM都不是跨平台的,JAVA依赖于JVM,那JAVA应该就不跨平台了啊

解释:先理解跨平台含义:不依赖于操作系统,也不依赖硬 件环境。不同的系统下有不同的JVM(JVM是C语言写的)所以JVM不是跨平台的,没毛病。JAVA依赖于JVM,JVM给JAV提供了运行环境,所以JAVA是跨平台的。再重新理解这句话...豁然开朗

执行过程:Java编译器将Java源程序编译成与平台无关的字节码文件(class文件),然后由Java虚拟机(JVM)对字节码文件解释执行。该字节码与系统平台无关,是介于源代码和机器指令之间的一种状态。在后续执行时,采取解释机制将Java字节码解释成与系统平台对应的机器指令。这样既减少了编译次数,又增强了程序的可移植性,因此被称为“一次编译,多处运行!”。

JDK(Java Development Kit)与JRE(Java Runtime Environment)

  • JDK包含:Java语法,虚拟机,以及Java类库

  • JRE包含:指java程序运行环境,包含虚拟机和程序运行时核心类库

  • JDK包含JRE

  • JDK的程序交给JRE运行

  • 总结:jdk开发中用,jre运行时用,jvm解决了跨平台:把class文件编译成别的平台认可的文件。

JRE(Java Runtime Environment Java运行环境)

  • 包括Java虚拟机(JVM Java Virtual Machine)和Java程序所需的核心类库等,如果想要运行一个开发好的Java程序,计算机中只需要安装JRE即可。

JDK(Java Development Kit Java开发工具包)

  • JDK是提供给Java开发人员使用的,其中包含了java的开发工具,也包括了JRE。所以安装了JDK,就不用在单独安装JRE了。

  • 其中的开发工具:编译工具(javac.exe) 打包工具(jar.exe)等

  • JDK开发完成Java程序,交给JRE去运行

程序解析

  • 首先编写java源代码程序,扩展名.java

  • 在命令行模式中,输入javac命令对源代码进行编译,生成字节码文件

    • javac 源文件名.java (如:jdk\bin\java HelloWorld.java)

  • 编译完成后,如果没有报错信息,输入java命令对class字解码文件进行解释运行,执行是不需要添加.class扩展名

    • Software\jdk\bin\java HelloWorld

 
工作原理Java源代码/HelloWorld.javaJava源代码/HelloWorld.javaJava字节码文件/HelloWorld.classJava字节码文件/HelloWorld.class运行结果运行结果编译:javac编译,运行javac(HelloWorld.java)JVM(加载字节码文件,到jvm内存运行)(HelloWorld.java)
 

path 环境变量

  • 配置环境变量的作用:告诉操作系统到哪里找命令。给操作系统使用,寻找javac。

  • windows 配置环境:

    1. 我的电脑-右键-属性-高级-环境变量-path-新建javac的jdk/bin/目录

path环境变量配置方法2(提倡方式)

  • path环境变量的参照形配置方法

    • 创建新的变量名称:JAVA_HOME

    • 为JAVA_HOME添加变量值:JDK安装目录

    • 将path环境变量中JDK目录修改:%JAVA_HOME%\bin;

  • path环境变量具有先后顺序

设置JAVA_HOME:

​ (1).为了方便引用,例如,将JDK安装在D\basic\Java\jdk1.8.0目录里,若设置了JAVA_HOME为该目录路径, 那么以后要引用这个路径时, 只需输

入%JAVA_HOME%即可, 避免每次引用都需输入很长的路径字符串;

​ (2).归一原则, 如果设置classpath或path等其它环境变量时,引用的路径不是D\basic\Java\jdk1.8.0...,而是%java_home%....,那么当你JDK安装的路径改变时, 只要改一下JAVA_HOME变量的值即可, 否则,你就要更改所有用绝对路径引用JDK目录的环境变量的值, 如果漏了某个没有修改, 将导致某个程序找不到JDK, 无法运行

​ (3).第三方软件会引用约定好的JAVA_HOME变量, 不然, 你将不能正常使用该软件, 要是某个软件不能正常使用, 不妨想想是不是这个问题

Classpath 环境变量

  • 配置classpath:找到java源文件编译;给jvm使用, 加载字节码文件

    • 创建新的变量名称:classpath

    • 值设定为制定的还有class文件的目录,多个目录间使用分号分割

    • 作用:使用classpath目录中的.class文件可以在任意目录运行

    • 技巧:通常将配置的目录最前面添加配置,即便当前目录,使.class文件搜索时首先搜索当前目录,然后根据目录配置的顺序依次查找,找到后运行

path和classpath的区别

  • path环境变量里面记录的是可执行文件,如.exe文件,对可执行文件先在当前路径去找,如果没找到就去path环境变量中配置的路径去找

  • classpath环境变量里记录的是java类的运行文件所在的目录

JAVA中System.out.println和System.out.print有什么区别

java里常用的控制台输出语句有System.out.println和System.out.print

一、两者之间的区别如下:

  1. 参数有区别:System.out.println() 可以不写参数System.out.print(参数) 参数不能为空.必须有

  2. 效果有区别println :会在输出完信息后进行换行,产生一个新行print: 不会产生新行

  3. println更简洁, print更灵活print可以后面跟"\n"来达到和println一样的效果也可以跟"\t" 制表符, 等.

二、通过阅读java源代码来理解

System.out.println(字符串参数); 源代码如下:

   public void println(String x) {
           synchronized (this) {
               print(x);//先调用print(x)来打印信息
               newLine();//然后换行
           }
       }

System.out.print(字符串参数); 源代码 如下

  public void print(String s) {
          if (s == null) {
              s = "null";
          }
          write(s);
      } 

三、注意事项: 虽然有略微的区别,但是两个方法经常一起搭配使用,更加灵活和方便.

  public class OutDemo {
      public static void main(String[] args) {
          String[] name = {"tom","jack","jerry","lucy"};
          System.out.println("-------输出信息------");//输出完信息后换行
          for (int i = 0; i < name.length; i++) {
              System.out.print(name[i]+" ");//输出元素,并且追加1个空白,用于隔开元素
          }
          System.out.println("\n-------------------");// "\n"先输出换行,然后输出信息,最后再换行
      }
  }
 

四、参考实例和注释我们对数组元素进行输出时,往往并不希望每输出1个就换行1次,一般我们会在输出数组前换行,输出完毕后才再次换行.

JavaBasic_01的更多相关文章

随机推荐

  1. Linux tar压缩命令 排除某个目录 (根据man tar 总结)

    一般直接用tar命令打包很简单,直接使用 tar -zcvf test.tar.gz test 即可. 在很多时候,我们要对某一个目录打包,而这个目录下有几十个子目录和子文件,我们需要在打包的时候排除 ...

  2. 数组Array.sort()排序的方法

    数组sort排序 sort比较次数,sort用法,sort常用 描述 方法sort()将在原数组上对数组元素进行排序,即排序时不创建新的数组副本.如果调用方法sort()时没有使用参数,将按字母顺序( ...

  3. JS时钟--星期 年 月 日 时 分

    var clock = function(clockName){ var mydate = new Date(); var hours = mydate.getHours(); var minutes ...

  4. free结果解释

    free用于查询内存使用情况,不过其多个数值经常让人感到迷惑,下边对其结果各值进行解释. Mem 1862--总内存/1770--已使用内存/92--未使用内存/199--输出缓存/637--输入缓存 ...

  5. xshellDoc_1base

    1◆ 到根目录 cd /     2◆ 创建文件夹 mkdir test   3◆ 到目录 cd /root/test/~~   4◆修改文件名 mv test testbak   5◆ 查看 ls ...

  6. ASP.Net MVC(4) 之js css引用与压缩

    资源引用 可以用即可以直接使用“~”来表示根目录. 引入js <script src="~/Areas/OrderManage/JS/Form.js"></scr ...

  7. bzoj2055

    题解: 似乎是放在费用流里的 然而是有上下界的网络流QAQ 代码: #include<bits/stdc++.h> using namespace std; ; int n,m,x,min ...

  8. Delphi I/O error 103 错误

    http://stackoverflow.com/questions/634587/delphi-why-do-i-sometimes-get-an-i-o-error-103-with-this-c ...

  9. Java 如何抛出异常、自定义异常

    Java错误与异常的基本概念: 1.java中异常均继承自Throwable,其有两个重要的直接子类error与exception. 2.java错误error,大部分是由虚拟机爆出来的错误,是程序无 ...

  10. 2.6 C++通过引用来传递和返回类对象

    参考:http://www.weixueyuan.net/view/6338.html 总结: C++语言中,由类声明的对象,和其它类型声明的变量一样,同样可以通过传值.引用和指针的方式作为函数的参数 ...