JavaBasic_01
计算机和编程语言
谷歌pagerank算法:给每一个网页有一个权值
被越多网页引用的网页越重要
被越重要的网页引用越重要
给每一个网页赋予权值,空网页权值为0 (马尔科夫链)
机器语言
汇编语言
高级语言
c语言面向过程
面向对象语言java,c++,c#
程序运行的方式
解释:将源程序一句一句的翻译成二进制,然而翻译一句执行一句
编译:一次将整个源代码翻译成二进制,
人工智能(Paython很多的人工智能的算法框架(工具),都是用Paython实现)
Java对于大数据(无与伦比),有很好分布式工具,调参数。
why java
语言使用量最大(Android)
相对简单(简单:相对指针;安全:资源回收;动态代码,虚函数)
用途广
运行设备最多(生产力)
java的优势
java 没有指针; 引用,容易上手
java有自动的资源回收机制(很大程度上规避了此现象:野指针:指针指向了不属于进程的内存空间)
实现运行时多态的时候,c++必须通过虚函数实现,java中很容易实现
跨平台,一次编译,多处运行
java版本
J2SE
单机,完成桌面应用程序开发
J2ME
嵌入设备(自动提款机)
J2EE(让别人来访问,程序不在客户端本地)网络
Java,一般来讲指代的Java程序,但是严格来讲是一个体系
Java语法
运行在不同平台上的java虚拟机
class字节码文件格式
java api类库
三方开源(看到程序的源代码)的优秀的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
path 环境变量
配置环境变量的作用:告诉操作系统到哪里找命令。给操作系统使用,寻找javac。
windows 配置环境:
我的电脑-右键-属性-高级-环境变量-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
一、两者之间的区别如下:
参数有区别:System.out.println() 可以不写参数System.out.print(参数) 参数不能为空.必须有
效果有区别println :会在输出完信息后进行换行,产生一个新行print: 不会产生新行
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的更多相关文章
随机推荐
- ORA-01034: ORACLE not available ORA-27101
出现ORA-01034和ORA-27101的原因是多方面的:主要是oracle当前的服务不可用,shared memory realm does not exist,是因为oracle没有启动或没有正 ...
- mac ci框架安装使用 memcached存session
mac 安装memcached brew info memcached brew install memcached brew install memcached 安装过程具体不详细多讲 memcac ...
- 线性回归决定系数之Why SST=SSE+SSR
线性最小二乘法的原则是使得误差的平方和最小,即 为了使S最小,令其对参数的偏导数为零: 即 即 根据方程1和方程2,得 又∵ ∴ 参考链接:https://math.stackexchange.com ...
- linux操作系统及命令Part 2
cat 命令 cat .txt .txt .txt > Ta.txt 将左边三个文件纵向合并为Ta文件 cat .txt>> Ta.txt 将左边文件的内容添加到Ta文件中 tar ...
- Git的基本使用(github)
关于Git的基本使用: 上传本地文件到github仓库中 首先要有自己的github账号,新建仓库: saiku-3.9 其次 本地安装好 git , 在本地任意目录下新建目录 saiku-3.9, ...
- linux 系统监控、诊断工具之 lsof 用法简介
1.lsof 简介 lsof 是 Linux 下的一个非常实用的系统级的监控.诊断工具. 它的意思是 List Open Files,很容易你就记住了它是 "ls + of"的组合 ...
- transiton,transform,animation,border-image
animation,transition,transform三者联系与区别: https://www.jianshu.com/p/0e0e1903b80d transform: 使用小技巧: tran ...
- SQL-25 获取员工其当前的薪水比其manager当前薪水还高的相关信息
题目描述 获取员工其当前的薪水比其manager当前薪水还高的相关信息,当前表示to_date='9999-01-01',结果第一列给出员工的emp_no,第二列给出其manager的manager_ ...
- Spring-data-JPA详细介绍
Spring-data-JPA学习: 1. https://blog.csdn.net/liujianwd/article/details/75411009 2.http://www.cnblogs. ...
- matlab中的reshape快速理解,卷积和乘积之间的转换
reshape: THe convertion between convolution and multiplication: