JAVA -01(简单知识介绍)

JAVA -01

前期准备

介绍

  1. 1972年C诞生【两大问题:指针;内存管理】
  2. 1982年C++诞生【面向对象;兼容C;图形领域和游戏,但是更复杂】
  3. 1995年JAVA诞生【没有指针没有内存管理;面向对象;类型安全;高质量类库;跨平台(JVM实现);applet图形界面程序】

小碎点

  • 三高问题:高可用、高性能、高并发

Java特性

  1. 简单性【易学】
  2. 面向对象
  3. 可移植性【一次编写多次运行】
  4. 高性能【及时编译】
  5. 分布式【TCP/IP处理、URL调用、远程调用】
  6. 动态性【反射机制】
  7. 多线程【交互、实时】
  8. 安全性【防病毒、防篡改、异常机制】
  9. 健壮性
  10. 既是编译型又是解释型语言
    11. 大小写敏感

Java的三大版本

  • JavaSE:标准版(桌面程序、控制台开发)
  • JavaME:嵌入式开发(手机、小家电)
  • JavaEE: 企业级开发(web端、服务器开发)

JDK、JRE、JVM

1. JDK:Java Development Kit 【Java开发包】
2. JRE:Java Runtime Environment 【Java运行时环境】
3. JVM:Java Virtual Machine 【Java虚拟机】

JDK7和JDK8之间的区别

JDK7

  1. JDK7新特性,数字之间可以用下划线分割

JDK8


JDK卸载

  1. 删除安装目录
  2. 删除环境变量配置JAVA_HOME
  3. 删除path下的关于java的目录
  4. java -version检查

JDK安装

  1. 百度搜索jdk8,找到下载地址
  2. 同意协议、下载对应版本安装包
  3. 双击安装
  4. 安装目录建议找易找到的,并记住安装路径
  5. 配置环境变量
    1. 我的电脑 --->右键 --->属性 --->高级系统设置
    2. 环境变量 --->系统变量 --->新建系统变量--->JAVA_HOME--->安装路径
  6. 配置path变量
    1. 系统变量里面找到path --->新建%JAVA_HOME%\bin --->新建%JAVA_HOME%\jre\bin
    2. 打开cmd ---> java -version 检查,出现安装的版本及成功

控制台输出HelloWorld【第一个java程序】

  1. 新建一个文件【文件名HelloWorld文件名和文件里的class后面的要一致】,将后缀改为.java

  2. 在里面编写代码

  3. public class HelloWorld{    //HelloWorld与文件名一致
    	public static void main(String[] args){
    		System.out.println("Hello,World!");
    	}
    }
    
  4. 控制台进到文件目录,进行编译

  5. javac HelloWorld.java
    
  6. 运行

  7. java HelloWorld
    
  8. image

使用IDEA开发

  1. 下载安装包,安装

  2. 安装时需要根据电脑版本选择是 “.32” 还是 “.64” ,还有勾选 ".java" 。

  3. 破解

使用IDEA快捷键

1、psvm + enter	可以快速补充 
    public static void main(String[] args) {
    }

2、sout + enter	可以快速补充
    System.out.println();

3、Ctrl + d	复制当前行到下一行

Java基础语法

注释

1、//单行注释  //
2、//多行注释  /* 注释 */
3、//JavaDOC /**  文档注释 */

标识符【关键字】

1、所有标识符首字母必须字母(A-Z,a-z)美元符号($),下划线(—)开始
2、首字母之后可以任意
3、大小写敏感
4、不能使用关键字作为变量名和方法名
5、String不是关键字,是一个类

数据类型

1、java是强类型语言【变量使用复合类型且必须先定义再使用】
2、两大类【基本类型、引用类型】
3、primitive type 基本类型 【byte(1B)、short(2B)、int(4B)、long(8B)、float(4B)、double(8B)、char(2B)、boolean(1b)】【long类型要在后面加上L,float要在后面加F】
4、reference type 引用类型 【类、接口、数组】

public class Demo01 {
    public static void main(String[] args) {
        //====================================================
        //int型  【int(4B)】
        //====================================================
        int i = 10;
        int i2 = 010;  //八进制0
        int i3 = 0x10;  //十六进制 0x

        System.out.println(i);
        System.out.println(i2);
        System.out.println(i3);
        System.out.println("====================");

        //====================================================
        //float型   &&  double型  【float(4B)、double(8B)】
        //====================================================
        float f = 0.1f;
        double d = 1.0/10;

        System.out.println(f);
        System.out.println(d);
        System.out.println(f==d);
        System.out.println("====================");

        //====================================================
        //浮点数拓展? 银行业务怎么表示?钱
        //BigDecimal  数学工具类
        //====================================================
        //float 有限  离散  舍入误差  大约  接近但不等于
        //最好完全避免使用浮点数标记!!!
        //最好完全避免使用浮点数标记!!!
        //最好完全避免使用浮点数标记!!!
        float d1 = 23169541465661f;
        float d2 = d1 + 1 ;
        System.out.println(d1==d2);
        System.out.println(d1);
        System.out.println(d2);
        System.out.println("====================");

        //====================================================
        //char型   【char(2B)】
        //字符拓展?
        //所有字符本质还是数字  编码 Unicode 2字节  0-65536  Excel  2^16 = 65536
        //====================================================
        char c1 = 'a';
        char c2 = '中';
        System.out.println(c1);
        System.out.println((int)c1);
        System.out.println(c2);
        System.out.println((int)c2);
        System.out.println("====================");

        //转义字符
        // \t   制表符 tab
        // \n   换行
        System.out.println("hello\thello");
        System.out.println("hello\nhello");
        System.out.println("====================");

        //====================================================
        //boolea型  【boolean(1b)】
        //====================================================
        boolean flag = false;
        if(flag == true){ }  //新手
        if(flag){}  //老手
        //上面两个if判断功能一致

        //====================================================
        //String   不是数据类型,它是一个类!!!!!!
        //====================================================
        String s1 = new String("nihao");
        String s2 = new String("nihao");
        String s3 = "nihao";
        String s4 = "nihao";
        System.out.println(s1==s2);
        System.out.println(s3==s4);
        System.out.println("====================");

    }
}

自己找找看有哪些转义符?

  • 位(bit):计算机内部最小存储单位
  • 字节(byte):计算数据处理基本单位,习惯B表示
  • 1B = 8bit

类型转换

注意点:
1、不能对boolean类型进行转换
2、不能将最想类型转换为不相干的类型
3、转换的时候可能存在内存溢出、或者精度问题

强制转换 高到低 (类型)变量名

低--->高:byte , short , char , int ,long , float , double

自动类型转换 低到高【不需要处理】

package base;

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

        //强制转换 高到低     (类型)变量名
        //自动类型转换 低到高
        int i = 128;
        byte b = (byte)i;  //内存溢出
        double d = i;

        System.out.println(i);
        System.out.println(b);
        System.out.println(d);
        System.out.println("===============================");

        System.out.println((int)23.7);
        System.out.println((int)-45.75f);
        System.out.println("===============================");

        char c = 'a';
        int i2 = c+1;
        System.out.println(i2);
        System.out.println((char)i2);
        System.out.println("===============================");

        //操作比较大的数,注意溢出
        //JDK7新特性,数字之间可以用下划线分割
        int money = 10_0000_0000;
        int years = 20;
        int total = money*years;  //负数,计算溢出
        long total2 = money*years;  //负数,计算之后转换为long类型,同样会溢出
        long total3 = money*((long)years);  //先将years强转为long,再计算
        System.out.println(total);
        System.out.println(total2);
        System.out.println(total3);

        /*
        小写的L(即l)也可以,但是在编写软件里,他和1非常相似,为避免认错,代码规范易读都用L来标记long类型
         */

    }
}

变量、常量、作用域

注意点:
1、每个变量都要有类型
2、变量名必须是合法的标识符
3、变量生命是一条完整的语句,所以必须以分号结束
4、不建议一行定义多个变量

  • 类变量:加了static关键字
  • 实例变量:从属于对象,在类中有效,可以不初始化就使用,会有默认值【boolean默认false ,除了基本类型其余的是null】
  • 局部变量:使用之前必须实例化并赋值,作用域只在它声明的方法内部有用(即它所在的{}内有用)
package base;

public class Demo03 {
    //变量  type varName [=value][{varName[=value]}];

    //常量一般用大写  final

    static double salary = 2500;
    String name;
    int age;

    //修饰符不存在先后顺序
    static final double PI = 3.14;

    public static void main(String[] args) {
        int i = 10;
        System.out.println(i);
        Demo03 demo = new Demo03();
        System.out.println(demo.name);
        System.out.println(demo.age);
        System.out.println(salary);

        System.out.println(PI);
    }

    //外部方法
    public  void  add(){
		//***
    }
}

运算符

算数运算符:+ - * / %(取余/模) ++(自增,一元运算符) --(自减,一元运算符)
赋值运算符:=
关系运算符:> < >= <= == != instanceof
逻辑运算符:&& || !        
位运算符:& | ^ ~ >> << >>>(了解!!!)
条件运算符:? :
扩展赋值运算符:+= -= *= /=
package base;

public class Demo04 {

    public static void main(String[] args) {

        //二元运算符
        int a = 10;
        int b = 20;
        int c = 25;
        int d = 25;

        System.out.println(a+b);
        System.out.println(a-b);
        System.out.println(a*b);
        System.out.println(a/(double)b);
        System.out.println("================================");

        long aa = 123123123123L;
        int bb = 123;
        short cc = 10;
        byte dd = 8;

        System.out.println(aa+bb+cc+dd);  //long  最高
        System.out.println(bb+cc+dd);   //int
        System.out.println(cc+dd);  //int
        System.out.println("================================");

        //关系运算符返回结果 true false
        int a2 = 10;
        int b2 = 20;
        int c2 = 21;

        System.out.println(a2>b2);
        System.out.println(a2<b2);
        System.out.println(a2==b2);
        System.out.println(a2!=b2);
        System.out.println(c2%b2);
        System.out.println("================================");

        //一元运算符  ++ --
        int x = 1;                  //x=1
        int y = x++;                //y=1,x=2【先将x赋给y,在x+1】
        System.out.println(x);      //x=2
        int z = ++x;                //x=3【先x+1,再将x赋给z】

        System.out.println(x);
        System.out.println(y);
        System.out.println(z);
        System.out.println("================================");

        //幂运算 2^3 = 8  很多运算,需要使用工具类
        double m = Math.pow(2,3);
        System.out.println(m);
        System.out.println("================================");

        //逻辑运算符
        boolean f1 = true;
        boolean f2 = false;

        System.out.println(f1&&f2);
        System.out.println(f1||f2);
        System.out.println(!(f1&&f2));
        System.out.println("================================");

		扩展赋值运算符
        int xy = 10;
    	int xz = 20;
   		a+=b;   //a=a+b
    	a-=b;   //a=a-b
    	System.out.println(a+b);

        //三元运算符
        //xx ? yy : zz  如果xx为真则结果为yy,否则结果为zz
        int score = 80;
        String type = score < 60 ? "不及格" : "及格";
        System.out.println(type);

        /*
        运算符的优先级,一元运算符最优
         */

    }
}

运算符优先级

短路原则

    boolean f1 = true;
    boolean f2 = false;
    //短路原则
    System.out.println(f2&&f1);     //因为逻辑与是全为真则结果为真,所以在判断法等于false时,就不会再执行f1的判断了
    //验证短路原则
    int flag = 5;
    boolean f3 = (flag < 4)&&(flag++ < 4);
    System.out.println(f3);
    System.out.println(flag);
    System.out.println("================================");

位运算 效率高【跟底层二级制打交道】

<< **左移 ** 相当于*2

>> **右移 ** 相当于/2

        /*
        A = 0011 1100
        B = 0000 1101
        A&B = 0000 1100            全为1,则为1
        A|B = 0011 1101            都为0,则为0
        A^B = 0011 0001      异或  相同则为0,否则为1
         ~B = 1111 0010      取反
    
        2*8 = 16  = 2*2*2*2
        <<      左移   相当于*2
        >>      右移   相当于/2
    
        0000 0001   1
        0000 0010   2
        0000 0011   3
        0000 0100   4
        0000 0101   5
        0000 0110   6
        0000 0111   7
        0000 1000   8
        0001 0000   16
         */
    
        System.out.println(2 << 3);
        System.out.println("===============================");

面试题

  • new对象,判断是否相等
		String s1 = new String("nihao");
        String s2 = new String("nihao");
        String s3 = "nihao";
        String s4 = "nihao";
        System.out.println(s1==s2);
        System.out.println(s3==s4);

输出结果:

flash

true


  • 字符串连接符 + ,String
    System.out.println(" "+a+b);和System.out.println(a+b+" ");输出区别
    前者输出1020,后面的a+b中的+变成了连接符
    后者输出30,a+b里面的+是运算符
int a = 10;
int b = 20;
System.out.print("\" \"+a+b:");
System.out.println(" "+a+b);
System.out.print("a+b+\" \"
System.out.println(a+b+" ");

输出结果:
" "+a+b:1020
a+b+" ":30


  • ++位置

​ y = x++;和z = ++x;输出区别(各自结果)

int x = 1;                  //x=1
int y = x++;                //y=1,x=2【先将x赋给y,在x+1】
System.out.println(x);      //x=2
int z = ++x;                //x=3【先x+1,再将x赋给z】

System.out.println(x);	//3
System.out.println(y);	//1
System.out.println(z);	//3

输出结果:

3

1

3

命名规范

  1. 见名知意
  2. 类名:首字母大写和驼峰原则
  3. 常量:全部大写,单词之间下划线
  4. 类成员变量:首字母小写和驼峰原则(除首字母外,之后的单词首字母大写)
  5. 局部变量:首字母小写和驼峰原则
  6. 方法名:首字母大写和驼峰原则

包机制

JavaDOC

  • Javadoc命令是用来生成自己的API文档

  • 可用的参数信息:

    1. @author 作者名
    2. @version 版本号
    3. @since 知名需要最早使用的jdk版本
    4. @param 参数名
    5. @return 返回值情况
    6. @throws 异常声明情况
  • cmd输出API帮组文件方式

  进到文件位置(namespace位置)
  javadoc -encoding UTF-8 -charset UTF-8 文件名.java【要生成API的java类名】
posted @ 2023-03-19 21:49    阅读(126)  评论(0编辑  收藏  举报