JavaSE--初识&&开发基础

JDK、JRE、JVM

  • JDK:Java Development Kit

    • java开发环境
  • JRE:Java Runtime Environment

    • java运行时环境
  • JVM:JAVA Virtual Machine

    • java虚拟机

JDK开发环境搭建

JDK下载与安装&卸载

JDK8为主流

  • 卸载

    • 环境变量清理、文件夹删除。
  • 下载

    • JDK8主流 下载需要同意许可协议 下载对应版本

    • 安装时记录安装路径用来配置环境变量

    • 配置环境变量

      • 运行sysdm.cpl命令在高级系统设置页面的环境变量进行配置
      • 在系统变量中新增:变量名=》JAVA_HOME 、路径=》安装时的jdk路径
      • 在Path中新增jdk位置值:%JAVA_HOME%\bin
      • 在Path中新增jre位置值:%JAVA_HOME%\jre(有的版本没有)
      • 运行java -version测试是否安装成功
    • 目录讲解

      • bin:可执行程序
      • include:包含c的头文件因为java是c衍生的
      • jre:运行java的一些文件
      • lib:存放库文件
      • src.zip:存放的java的资源文件类文件

Helloworld初试

  • 新建文件夹 如HelloWorld

  • 新建java类的文件如Hello.java

    • 后缀名要改 确保后缀名没有隐藏
  • 写入代码

    • public class Hello{
      	public static void main(String[] args){
      		System.out.print("Hello,World!");
      	}
      }
      
    • 需要注意的是文件名和和类名要相同也就是 public class Hello此处写的为Hello,文件名就应该是Hello.java,大小写也要相同。
    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GEVpZEHd-1659759344259)(assets/image-20220610144252-gdao1pu.png)]
  • 编译代码

    • cmd运行 javac Hello.java

      • cmd工作环境要在该文件目录下
  • 运行代码

    • cmd 运行 java Hello

      • 注意此处只有Hello没有后缀名

Java运行机制

编译型:相当于把一本英语书直接翻译成汉语,然后读,读取的时候效率高,如果后续内容进行更改了要重新翻译,浪费时间。如C/C++

解释型:相当于一边读一边翻译,运行效率偏低,但是可以保证一直是最新的。Java接近于解释型

Java是两者都有个

先编译为字节码文件,然后放入类装载器中,进行字节码校验(如果这里没有检测出问题),进入解释器,按照解释型的方式,进行输出执行。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QOwqGpPf-1659759344260)(assets/image-20220610145934-6zxrtw6.png)]

JDEA安装

开发基础

注释符

//单行注释
/*
多行注释
 */
/**
 * 文档注释
 * @Author:ks192
 */

关键字&标识

常用关键字

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AdQxkvq1-1659759344260)(assets/image-20220610160057-vboqb93.png)]

标识

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uMuPurwD-1659759344261)(assets/image-20220610160859-gx6mbwq.png)]

注意

  • 所有的标识符都应该以字母(A-Z或者a-z),美元符($)、或者下划线(_)开始
  • 首字符之后可以是字母(A-Z或者-z),美元符($)、下划线(_)或数字的任何字符组合
  • 不能使用关键字作为变量名或方法名。
  • 标识符是大小写敏感的
  • 合法标识符举例:age、$salary、_value、_1_value
  • 非法标识符举例:123abc、-salary、#abc
  • 甚至可以使用汉子作为变量名

数据类型

Java属于强类型语言。

强类型语言:要求变量的使用严格符合规定,所有变量必须先定义
后才能使用,定义后不能转换。

弱类型语言:与强类型语言要求的部分相反

Java数据类型分为两种

  • 基本类型(primitive type)

    • 数值类型

      • 整数类型:

        • byte占1个字节范围:-128-127
        • short占两个字节范围:-32768-32767
        • int占4个字节范围:-2147483648-2147483647
        • long占8个字节范围:-9223372036854775808-9223372036854775807
      • 浮点类型

        • float占4个字节
        • double占8个字节
      • 字符类型:char占2个字节

    • boolean类型:占1位其值只有true和false两个

  • 引用类型(reference type)

    • 接口
    • 数组

进制转换

public class Demo03 {
    public static void main(String[] args){
        //整数拓展: 进制 二进制0b 十进制 八进制0 十六进制 0x
        int i = 10;
        int i1 = 0b10;
        int i2 = 010;
        int i3 = 0x10;
        System.out.println(i);
        System.out.println(i1);
        System.out.println(i2);
        System.out.println(i3);
      
    }
}

扩展

public class Demo03 {
    public static void main(String[] args){
	//============================
        //浮点扩展?银行业务怎么表示?钱
        //BigDecimal  数学工具类  不能用浮点
        //==============================
        //float   有限  离散 舍入误差  大约 接近 但不等于
        //double
        //最好完全使用浮点数进行比较
        float f = 0.1f;
        double d = 1.0/10;
        double c = f;
        System.out.println(f==d);//输出的是False  也就是float类型转换为double的过程中会发生变化
        System.out.println(f);
        System.out.println(d);
        System.out.println(c);

        float d1 = 2131231212321332f;
        float d2 = d1+1;
        System.out.println(d1==d2);//超出float、double也一样定义的范围采取四舍五入记录
        System.out.println(d1);
        System.out.println(d2);
        //==============================
        //字符拓展?
        //==============================
        char c1 = 'a';
        char c2 = '中';
        System.out.println(c1);
        System.out.println((int)c1);//强制转换
        System.out.println(c2);
        System.out.println((int)c2);//强制转换

        //所有字符本质还是数字
        //编码  Unicode编码表:97-a  2字节 65536 Excel文件早期最多65536行
        char c3 = '\u0061';
        System.out.println(c3);//a
        //制表符 \t制表符 \n换行
        System.out.println("hello\tworld");
    }
}

类型转换

不能转换布尔类型,只能从高到低转换(如果从低到高强制转换可能会出现内存溢出或者精度的情况)。不能把类型转换为不相干的类型。

public class Demo05 {
    public static void main(String[] args){
        int i = 200;
        byte b =(byte) i;
        System.out.println(i);//200
        System.out.println(b);//-56
        float num1 = 323.123f;
        int num2 = (int)num1;
        System.out.println(num1);//323.123
        System.out.println(num2);//323
    }
}

JDK7以后定义int类型的数据可以用下划线(_)进行分割。

变量

变量作用域

  • 类变量
  • 实例变量
  • 局部变量

示例如下:

public class Demo05 {
    //类变量 static
    static double salary = 25000;

    //实例变量
    //属性变量:从属于该对象;如果不进行初始化,这个变量的值为默认值
    //除了基本类型,其余的默认都是null;布尔类型是false
    String name;
    int age;

    //main方法
    public static void main(String[] args) {
        //局部变量只存在于这个方法中
        int i = 10;//局部变量 如果不初始化 则不会被输出
        System.out.println(i);
        //变量类型  变量名字 = new Demo5()
        Demo05 demo05 = new Demo05();
        System.out.println(demo05.name);
        System.out.println(demo05.age);
    }

    //add方法
    public void add(){
        System.out.println(salary);
    }
}

命名规范

◆所有变量、方法、类名:见名知意
◆类成员变量:首字母小写和驼峰原则:monthSalary除了第一个单词以外,后面的单词首字母大写lastname 如:lastName
◆局部变量:首字母小少小写和驼峰原则
◆常量:大写字母和下划线:MAX VALUE
◆类名:首字母大写和驼峰原则:Man,GoodMan
◆方法名:首字母小写和驼峰原则:run0,runRun(O

常量

用final定义

运算符

  • 算术运算符:+,-,* ,/,%,+,
  • 赋值运算符=
  • 关系运算符:>,<,>=,<=,=,!= ,instanceof
  • 逻辑运算符:&&,‖,! 与、或、非。
  • 位运算符:&,|,^,~,>>,<<,>>>(了解!!!)
  • 条件运算符 ?:
  • 扩展赋值运算符:+=,-=,*=,/=。

二元运算符&&关系运算符&&模运算符

示例

public class Demo01 {
    public static void main(String[] args){
        int a = 10;
        int b = 20;
	//二元运算符
        System.out.println(a+b);
        System.out.println(a-b);
        System.out.println(a*b);
        System.out.println(a/(double)b);
	//关系运算符
	System.out.println(a>b);
	System.out.println(a<b);
	System.out.println(a=b);
	System.out.println(a!=b);
	//模运算
	System.out.println(b%a);表示b除以a取余数
    }
}

如果运算过程中类型不同,那么会按照包含范围最大的类型进行转换。

一元运算符

++,–,

public class Demo02 {
    public static void main(String[] args){
        int a = 1;
        int b = a++; //a++=>a = a+1 先赋值后自增
        int c = ++a; //++a=>a = a+1 先自增后赋值
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
    }
}

逻辑运算符

  • &&

    • 同真才为true,否则就是false
  • ||

    • 有一个true,结果就是true,全为false才为false
  • !

    • 就是取反
public class Demo03 {
    public static void main(String[] args){
        boolean a = true;
        boolean b = false;
        System.out.println(a&&b);    //false
        System.out.println(a||b);    //true
        System.out.println(!(a&&b)); //true
    }
}

位运算符

<<:左移,每左移一位就相当于乘以2,和*乘号的区别在于运行效率较高
>>:右移,与左移相反

字符串连接符

+在使用字符串连接符时,如果在加号左边或者右边有一个字符串类型,则结果就是字符串类型,但是,要遵循运算顺序

如下所示(“+”在不同的位置结果是不同的):

public class Demo03 {
    public static void main(String[] args){
        int num1 = 2;
        int num2 = 3;
        System.out.println(""+num1+num2); //23
        System.out.println(num1+num2+""); //5
    }
}

三元运算符

x ? y : z 如果x为真结果为y,如果x为假,结果为z。

posted @ 2022-08-06 12:18  苦蛇  阅读(7)  评论(0编辑  收藏  举报  来源