JAVA简介

Java是一门伟大的面向对象程序设计语言,Java 诞生于1995年5月目前属于 Oracle 公司, Java 是一种高级语言,你可能听过的其他高级语言还有 Python C C++ 等 有 高级语言 自然也有 低级语言 ,一般计算机世界里把 低级语言 叫做机器语言或者汇编语言,实际上计算机只能运行低级语言,所以高级语言编写的程序必须先被翻译成低级语言才能运行

java语言属于高级语言 java语言是高级语言吗_System

java语言属于高级语言 java语言是高级语言吗_Java_02

java也称c+±-

java语言属于高级语言 java语言是高级语言吗_Java_03

java应用

java语言属于高级语言 java语言是高级语言吗_java_04

java学习路线

java语言属于高级语言 java语言是高级语言吗_System_05

低级语言就是接近硬件的语言

1. 高级语言和低级语言

常见的低级语言有:机器码、汇编语言
高级语言常见如:c,c++,java,python,PHP,c#,Ruby,go,kotlin,swift。

机器码:计算机能够直接识别的二级制编码,无论语言多高级都要转成二级制文件来让计算机识别运行。

汇编:用助记符(Mnemonics)代替机器指令的操作码,用地址符号(Symbol)或标号(Label)代替指令或操作数的地址,在不同的设备中有着不同的指令集

高级语言:为省去编程时候的不必要的操作细节,节省代码量,可读性强,维护性强,更贴近人性化

高级语言与低级语言的区别:高级语言大部分不能直接更硬件打交道,这使得相对来的程序运行速度降低,总之一句话来说那种语言更接近人性化的语言就更高级。

jdk :JAVA Development kit 开发环境

jre : JAVA Runtime Environment 运行环境

jvm:java虚拟机用来屏蔽底层系统的差别

java语言属于高级语言 java语言是高级语言吗_java语言属于高级语言_06

Java环境配置

卸载jdk

删除Java的安装目录

删除Javahome

删除path路径下关于Java的目录

安装jdk

找到下载地址

环境变量添加JAVA_HOME

jdk安装位置

添加path路径

%JAVA_HOME%\bin //bin目录存放了一些Java的可执行文件

%JAVA_HOME%\jre\bin

cmd输入java -version

出现java版本号则安装成功

java语言的执行

Java编译的过程并不生成机器语言而是生成字节码,通过jvm支持了字节码的解释运行,源代码不能被机器运行

java语言属于高级语言 java语言是高级语言吗_java语言属于高级语言_07

java语言属于高级语言 java语言是高级语言吗_System_08

println 是 print new line 的缩写

java大小写敏感

每一行代码结束的地方用;结尾

用记事本写好java代码后命名为HelloWorld.java的文件然后cmd进入文件目录下

输入javac hello.java编译java文件会生成一个class文件

输入java HelloWorld运行class文件

类名与文件名相同

得到控制台输出

java程序运行机制

  • 编译型 一次翻译完成
  • 解释型 一句一句的翻译实时

java是先编译成字节码后一句句解释

java开发环境安装(ide)

使用IDEA

快捷键:

psvm

sout

IDEA使用及优化

详情百度

Java注释

java语言属于高级语言 java语言是高级语言吗_java_09

java语言属于高级语言 java语言是高级语言吗_Java_10

加在类上就是类的注释,加在方法上就是方法的注释

命令行生成java文档

  • 在idea里右键打开文件位置
  • 在资源管理器文件路径之前输入cmd 加空格 回车
  • 进入命令行后 输入javadoc -encoding UTF-8 Doc.java
  • 最后生成完毕之后进入文件夹点击index.html文件
  • 可以看到详细的java文档

java变量

每个变量都需要声明其类型

要素包括变量名,作用域,变量类型

  • 类变量:static
  • 示例变量:方法的外面,类的里面,属于对象,初始值为0,bool值为false
  • 局部变量:必须声明和初始化值

常量

  • 初始后不会被改变的值,他在程序运行中值不会被改变
  • 在类型前面加final

动态类型和静态类型

动态性语言是指在程序运行期间才给变量指定数据的类型,常见于python和Ruby,而静态类型语言则恰好相反,在写程序代码的时候就要指定变量的类型,这种语言有:c,c++,java

Java变量的使用需要先声明

string message="stay hungry,stay foolish";

  • 也就是说所有的变量要先定义再使用

标识符

标识符以字母下划线或者美元符号开头也可以中文命名

基本数据类型

关键字

字符串 数字 布尔 byte(最大127)

小整数 short

整形 int

大整数 long最后加L

小浮点数 float 最后加F

大浮点数 double

float :有限 离散 舍入误差 大约但不等于

最好不要用浮点数进行比较

string 类 不是关键字

引用数据类型

  • 接口
  • 数组

强制类型转化

  • 从高到低转化
  • 注意溢出和精度问题
  • 加减乘除,有long类型结果就是long,有double就是double类型

自动转化

例如:

public class Hello {
    public static void main(String[] args) {

        int a=100_000_000_0;
        int b=20;
        int c=a*b;
        long d =a*b;
        System.out.println(c);
        System.out.println(d);

    }
}

输出:

-1474836480

-1474836480

方法:long e=(long)a*b;

  • java的命名规范

骆驼有个非常明显的特点就是它的驼峰,由于它的这种非常明显的特性,编程语言模仿了这个驼峰特性,具体是啥呢?那就是把每个具体单词的首字母变成大写,这样大写的字母就像驼峰一样 3 比如说:用户名称如果用英文单词来表示的话就是UserName,大家注意看一下,这个大写的 U 和 N 是不是像驼峰一样?这样的例子可以很多,比如说我的文档:MyDocument 密码:Password

方法名遵守的是小驼峰,和驼峰的区别就是第一个单词是小写的

java语言属于高级语言 java语言是高级语言吗_System_11

运算符

java语言属于高级语言 java语言是高级语言吗_Java_12

自增自减

java语言属于高级语言 java语言是高级语言吗_java_13

位运算

A=0010 1101
B=1011 1100
A&B=0010 1100
A|B=1011 1101
A^B=1001 0001 //相同为0,不同为1
//左移与右移
 System.out.println(2<<3);
//输出16
//原理:左移相当于把数字乘2效率高!!!

字符串连接符

当运算式中出现字符串,+就会把其他转化为字符串拼接

System.out.println(""+2+3); System.out.println(2+3+"");

输出 23 5

Java的包机制

其实就是文件夹

  • 一般用公司域名倒置作为包名
  • package必须放在最上面
  • 导入包 import
  • .*通配符导入这个包下所有的类

Java的流程控制

  • 用户交互输入Scanner类 ctrl+右键访问

import java.util.Scanner

Scanner s = new Scanner(System.in);

next()与nextLine()方法获取输入的字符串

next()不能得到带有空格的字符串

nextLine可以

用hasNext()与hasNextLine()判断 是否还有输入的东西

还有nextFloat() nextInt()

输入:hello world

输出:hello

改用nextLine方法后得到完整输出

package zone.mashiro.base;

import java.util.Scanner;

/**
 * @author yuan
 * @version 1.0
 * @since 1.8
 */
public class Demo {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);//接收键盘输入
        System.out.println("使用next方式接收:");
        //判断用户有没有输入字符串
        if (scanner.hasNext()){
            String str = scanner.next();//程序会等待输入完毕
            System.out.println("输出的类容为:"+str);
        }
        //io流的类如果一直不关闭会一直占用资源,用完就关
        scanner.close();
    }
}
  • 顺序结构:从上到下依次运行,按照顺序依次执行
  • if单/多选择结构
  • switch case break default(可选 )//可以是字符串,通过hashcode比较、
  • while循环结构
  • do while : 与while的区别在于while先判断后执行,dowhile是先执行后判断,所以dowhile会被至少执行一次
  • for ;隔开初始化值,条件判断,迭代
  • 100.for 生成
  • 增强for循环:
  • continue:跳过某次循环
int[] numbers={10,20,30}
fot(int x:number){
    System.out.println(x);//遍历数组元素
}

反编译java文件

  • 字节码文件----反编译

简单的debug

先打一个断点,点小虫的符号

数学函数

public class MathDemo {

  public static void main(String[] args) {
    
    double value = Math.random();
    System.out.println(value);
    // 把随机的结果*10 得到1-10之间的随机数
    int newValue = (int) (value * 10);
    System.out.println(newValue);
    

  }

}

产生0-9的随机数

何谓方法

  • 方法是解决一类问题的步骤的有序集合
  • 方法包含于类或对象中
  • 方法在程序中被创建,在其他地方被引用
  • 一个方法只做一个功能

方法

虽然 main 方法有特殊的含义它是程序执行的入口,如果要执行代码就必须要有 main 方法main函数可以命令行传参

// 固定的方法格式,main方法用于启动程序
public static void main(String[] args){

}
// public(公共的) static(静态) void(空类型)
public static void 方法名称(方法参数){
  代码块
}

方法的参数分为实际参数,和形式参数。

  • 形式参数:定义方法时写的参数。
  • 实际参数:调用方法时写的具体数值。

值传递与引用方法

在数据做为参数传递的时候,基本数据类型(包括包装类,如Integer)是值传递,引用数据类型是引用传递(地址传递)。

在引用传递的时候如果没有更改地址中变量的内容的话,而是把变量指向一个新的地址,则原来的参数变量依旧指向原来地址中的内容。

针对字符串String会存在特殊的地方,因为其是不可变的,因此,在函数中对String变量赋值也是把新的String对象地址赋值给实参,这样原来变量的内容这不会发生变化。

方法的重载

方法名称相同,参数列表同(个数不同,类型不同,参数排列顺序不同)

方法的返回值类型可以形同可以不同

可变参数

public void test(int... i)

test(...i:1,2,3,4,5,6)

递归方法

java语言属于高级语言 java语言是高级语言吗_java_14

package zone.mashiro.base;//计算阶乘

public class Digui {
    public static void main(String[] args) {
        System.out.println(f(5));
    }
    public static int f(int n){
        if(n==1){
            return 1;
        }
        else return n*f(n-1);
    }
}

注意递归的终止条件

数组

  • 利用Java声明数组
int[] nums;//java风格int num[];//c++风格nums=new int[10]

arrays.length

java语言属于高级语言 java语言是高级语言吗_Java_15

  • 数组初始化
  • 静态初始化int[] nums={1,3,4,5};
  • 动态初始化int[]b=new int[10]有默认值

java语言属于高级语言 java语言是高级语言吗_java_16

  • 数组也是对象,数组的元素相当于对象的成员变量
  • 数组的长度不可变
  • 数组作为参数和返回值
  • 二维数组

Java array类

数组的工具类

Arrays.sort()

稀疏数组

当一个数组中大多数元素为同一值时,可以使用稀疏数组来保存该数组,从而缩小程序的规模

先压缩后还原。