Java基础知识集

一、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)。

相对路径:从形式上看,相对路径一定不会以盘符开始的,是相对于当前所在“'位置'而言的。 <C:\User\Adminstrator>cd Boot 此时得到<C:\User\Adminstrator\Boot>;<C:\User\Adminstrator>cd C:\User\Adminstrator\ Boot 此写法可行

绝对路径:在windows操作系统中凡是路径起点是盘符的都是绝对路径,如:C:\User\Adminstrator;<C:\User\Adminstrator>cd C:\windows\system32 (得到<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)

位运算最大的特点是可以进行位移的处理:>>,<<(例:int a=2;a<<2;结果为8(00000010->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);
}
欢迎转载学习,只需注明文章出处即可(https://www.cnblogs.com/gyunf/) ,谢谢!
原文地址:https://www.cnblogs.com/gyunf/p/12391621.html