一、java基础
1.1、java程序实现原理
编译源代码文件,将其形成*.class文件:javac Hello.java(控制台输入的指令),会形成“ Hello.class”文件(二进制的字节码文件);
解释java程序:控制台输入java Hello,控制台打印出Hello World!
放源码的文件扩展名必须是:xxx.java
编译生成的字节码文件扩展名是:xxx.class
字节码不是二进制文件,字节码由java虚拟机(JVM,用c++语言实现的虚拟的计算机)处理成二进制,然后操作系统再执行二进制指令和硬件平台进行交互。不同操作系统上相同的java程序编译生成的字节码是相同(编译器编译机制是相同的)从而实现在windows系统编写的程序可以在Linux系统上运行。
java虚拟机(JVM)是在JDK中的,有windows版JDK,Linux版JDK等等。
一个java文件可以有多个class文件
java程序从开发到最终运行:
编译期:(可以在windows上)
第一步:在硬盘上新建一个xxx.java文件
第二步:在xxx.java文件中编写源代码
第三步:使用编译器(javac (JDK安装后自带的))对xxx.java文件进行编译
第四步:如果编译不通过,编译器报错不会生成class文件,通过才会生成class字节码文件,一个java文件可以生成多个class文件。(编译实质上是检查语法)
运行期(JRE在起作用):(可以在windows上或其他操作系统上(os))
第五步:如果是在Linux上运行,需要将windows上生成的class文件拷贝过去不需要拷贝源代码,真正运行的是字节码。
第六步:使用JDK自带的一个命令/工具:java(负责运行的命令/工具)执行字节码
第七步:JVM会将字节码文件进行解释(解释器负责将字节码解释为二进制)
第八步:JVM将字节码交给操作系统,操作系统会执行二进制码和硬件进行交互。
path环境变量的作用
path环境变量的作用就是给windows操作系统指路的,告诉操作系统去哪里找这个命令文件。路径与路径之间用半角分号(英文的)分隔。
path环境变量本质上是属于windows系统的。
Dos命令
可以通过Dos命令窗口完成文件的新建、编辑删除等操作。
1、mkdir ab(创建一个文件夹ab),mkdir:make directory;del ab(删除文件);cls (清屏);dir (查看当前目录下有什么)
2、在窗口复制内容
win7:选中内容,点击右键,标记
win10:选中内容,右键单击一下。
3、切换盘符
直接输入盘符然后回车(例,d:回车)
4、切换目录
使用cd 路径命令完成目录切换,cd(change directory)。
相对路径:从形式上看,相对路径一定不会以盘符开始的,是相对于当前所在“'位置'而言的。 cd Boot 此时得到;cd C:\User\Adminstrator\ Boot 此写法可行
绝对路径:在windows操作系统中凡是路径起点是盘符的都是绝对路径,如:C:\User\Adminstrator;cd C:\windows\system32 (得到)
1.2、程序类的定义
类是java中的基本单位,所有的java程序都是以类的形式存在的,在java中有两种定义类的方式。
类的名称首字母要大写
public class 类名称{}:文件名称必须与类名称保持一致(Hello.java文件中的类名称必须为Hello);
class 类名称{}::文件名称可以与类名称不同,生成的字节码文件就是“类名称.class”(Hello.java文件中的类为class Demo{}生成的字节码文件是“Demo.class”),在一个 *.java” 文件里面可以使用class定义多个类,并且编译后会形成不同的 *.class文件。
实际一个 *.java” 文件只会定义一个类
1.3、运算符
1、三目运算
int x=10;
int y=20;
int result=0;//声明一个变量就要赋一个值
result=x>y?x:y;
//等价于
if(x>y){
result=x;
}else{
result=y;
}
2、关系运算符
如:>,=,<=,!=,==
关系运算操作返回的结果是布尔型(boolean)
注意:
'a'==97;//ture
'0'==0;//false
3、逻辑运算符
与(&&),或(||),非(!)
在逻辑运算之中最为麻烦的部分就是与和或,因为其各有两种写法:
与操作:&,&&,当使用&的时候明确表示多个条件都需要判断;当使用&&如果说前面已经有条件返回了false,则后面的判断不需要继续执行,返回false;&&(短路与,比&性能好)
或操作:|,||(短路或),(同与操作)
4、位运算符
可以按照二进制、八进制、十六进制进行数据处理,位运算中数据移位的处理方式实现一些数据的内容变化。关键在于十进制和二进制的转换(除二取余)。
位与运算:
int A=19;
int B=5;
system.out.println(A & B);
结果为:1(19的二进制是00010011,5的二进制是00000101,从左至右1与0得0,依次运算得二进制为00000001对应十进制1)
位或运算:
int A=19;
int B=5;
system.out.println(A | B);
结果为:23(19的二进制是00010011,5的二进制是0000101,从左至右1与0得0,依次运算得二进制为00010111对应十进制23)
位运算最大的特点是可以进行位移的处理:>>,<00000100))
1.4同一个域中变量名不能重名
在同一个域中,变量名不能重名,不能重复声明
public static void main(String[] args){
//声明一个整数型的变量起名age,存储值为20
int age=20; //1
System.out.println(age);
//int age=20; //2 若1语句没有则会报错找不到变量,代码按从上至下的顺序执行
//给变量重新赋值
age=30;
System.out.println(age);
//这个不行
//错误信息:已存在方法main(String[])中定义了变量age
int age=100;
System.out.println(age);
}