计算机和编程语言

  • 谷歌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. FJUT16级第一周寒假作业题解G题

    题目链接:http://210.34.193.66:8080/vj/Contest.jsp?cid=160#P6 涨姿势题1 TimeLimit:1000MS  MemoryLimit:128000K ...

  2. kaggle信用卡欺诈看异常检测算法——无监督的方法包括: 基于统计的技术,如BACON *离群检测 多变量异常值检测 基于聚类的技术;监督方法: 神经网络 SVM 逻辑回归

    使用google翻译自:https://software.seek.intel.com/dealing-with-outliers 数据分析中的一项具有挑战性但非常重要的任务是处理异常值.我们通常将异 ...

  3. Binary Analysis Tool安装使用教程

    Binary Analysis Tool(BAT)是一个用于检测二进制文件使用到的开源组件,协助及早发现程序发布后可能会面临的开源协议解执的开源免费检测工具. 一.安装BAT和bat-extratoo ...

  4. UltraEdit取消自动备份(.bak)

    UltraEdit是美国IDM Computer Solutions公司1994年开始开发的文本编缉器,语法高量.自动缩进和编码识别与兼容等编缉器痛点都做得很好. 自动备份能够很好地确实文件误操作后的 ...

  5. HTML(四)Form标签

    <form>…</form>    定义供用户输入的 HTML 表单 例子 <html> <body> <form method="ge ...

  6. 3.4 C++名字隐藏

    参数:http://www.weixueyuan.net/view/6361.html 总结: 如果派生类中新增一个成员变量,该成员变量与基类中的成员变量同名,则新增的成员变量就会遮蔽从基类中继承过来 ...

  7. angular自定义指令

    1.在directive文件下创建指令的js文件 通常自定义指令需要声明模块(注意定义指令时, js内部指令名称需采用 aaAaBb驼峰的命名方式  html中使用的是aa-aa-bb) e.g (f ...

  8. Xilinx SDK编译Microblaze时出错

    reference:http://www.eeboard.com/evaluation/digilent-cmod-a7-fpga/9/ 在vivado 2015.4中创建microblaze软核,l ...

  9. 一个简单的JSP程序示例

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"% ...

  10. Flask源码阅读-第三篇(flask\_compat.py)

    源码 # -*- coding: utf-8 -*-""" flask._compat ~~~~~~~~~~~~~ Some py2/py3 compatibility ...