320 次浏览
  • Java简介
    1.  三个版本
      • Java SE:Standard Edition // 标准版
        • 包含:
          • JVM
          • 标准库
      • Java EE:Enterprise Edition //企业版 ,在SE上添加API和库 (和SE一个虚拟机)
      • Java ME:Micro Edition //嵌入式设备 (虚拟机也是简版)
    2. 相关名词
      • JDK:Java Development Kit //编译源码
        • 包含:
          • 编译器
          • 调试器
          • etc.
      • JRE:Java Runtime Environment //运行字节码
        • 包含:
          • JVM
          • Runtime Library
      • JSR规范:Java Speecification Request
        • 发布时需要:
          • 参考实现 RI:Reference Implementation
          • 兼容性测试套件TCK:Technology Compatibility Kit
      • JCP组织:Java Community Process //审核JSR
    3. //第一个Java程序
      public class Hello { 
          public static void main(String[] args){ 
              System.out.println("Hello,World!"); 
          }
      }

      class类:大小写敏感;//存为文件时应当保证文件名和类名保持完全一致 ,一个源码只能定义一个public类型的class

      • public class static void 都为关键字:必须小写 ;
      • 方法名main:参数args,类型String [] ;//Java程序的固定入口
        • public 公开
        • static 静态
        • void 返回值类型
        • {}花括号中间是方法的代码
      • 如何运行:
        • .java→javac编译成.class  //javac编译器 :javac Hello.java
        • .class→java执行//java虚拟机:java Hello
    4. IDE集成开发环境:Integrated Development Environment //将编写代码、组织项目、编译、运行、调试等放到一个环境中,提高效率
      • 自动提示
      • 代码修改后可以自动重新编译,直接运行
      • 方便进行断点调试
  • Java程序基础
    • Java程序基本结构
      • /* 注释 */
        public class Hello{
            //向屏幕输出文本:
            System.out.println("Hello,world!");
            /*多行注释开始
             *可注释区域
             *注释结束/
        }//class定义结束
        

        Java为面向对象语言,程序基本单位为:class,class是关键字,类名:Hello

        • class:类名要求
          • 英文字母开头,后接字母、数字、下划线
          • 习惯上以大写字母开头(驼峰命名法
        • public:访问修饰符//表示类是公开的,不写也可以编译,但从命令行无法执行
        • method:class内部,可以定义若干方法
          public class Hello {
              public static void main(String[] args){
                  //方法代码.. }//方法定义结束 }

          方法定义一组执行语句,内部代码会依次顺序执行

          • main方法名
          • void返回值//没有任何返回值
          • static静态方法//java程序入口方法必须为静态 名为main,括号内参数必为String数组
    • 变量和数据类型
      • 变量//必须先定义后使用
        • 分类
          • 基本类型变量
            • 整数类型:byte,short,int,long
            • 浮点数类型:float,double
            • 字符类型:char
            • 布尔类型:boolean
          • 引用类型变量
        • 定义时可以
          • 赋初始值
            int x = 1;
          • 可以不赋//默认为0
          • 变量可以重新赋值,如
            int x = 100;
            System.out.println(x);
            x = 200;//重新赋值
            System.out.println(x);
          • 但不可重复定义
          • 变量也可以 赋值给其他变量
    • 整数运算
      • 整数运算遵循初等数学四则运算规则
      • 整数运算结果精确//两个整数相除只能得到整数部分
      • 整数除法对于除数为0,运行时会报错,但编译不会

      • 溢出
        • 整数存在范围限制:计算记过超出范围会溢出//把int改成long
      • 自增/自减
        • n++ //n=n+1
        • ++n  先加1再引用n
        • n++ 先引用n再加1
      • 移位运算
        • << 左移 //  *2
        • >>右移  //  /2
        • 对负数右移 最高位1是不动的
        • >>>不带符号的右移 //符号位跟着动
        • 对byte和short进行移位运算,先换位int再位移 //前面补0
      • 位运算
        • 按位 与、或、非和异或
          • 与:同1 为1
          • 或:任意1 为1
          • 非:0 1 互换
          • 异或:两数不同为1 ,否则为0
        • 两个整数位运算:按位对齐,依次对每一位进行运算 //应用:与运算判断ip是否在给定网段
      • 运算优先级 ,由高到低是:
        • ( )
        • ! 、~ 、++、 –
        • * 、/ 、%
        • + 、-
        • <<、>>、 >>>
        • &
        • |
        • +=、-=、*=、/=
      • 数值类型自动提升与强制转型
        • 自动:两数类型不同,结果位较大类型整型
        • 强制:使用(类型)强制转换,超出范围,高位会被直接扔掉
    • 浮点数运算
      • 可以 + – * / ,不可位运算和移位运算(浮点数不可精确表示)
      • 类型提升:参与运算的两个数,其中一个是整型,整型可自动提升为浮点型
      • 溢出
        • 整数运算除数为0报错
        • 浮点数运算除数为0,返回特殊值
          • NaN //not a number
          • Infinity
          • -Infinity //-∞
      • 强制转型:浮点数可强制转int,但超出范围后始终返回整型最大值
    • 布尔运算//只有true和false两个值
      • 关系运算
        • 种类
          • 比较运算符:>,>=,<,<=,==,!=
          • 与运算&&
          • 或运算||
          • 非运算!
        • 优先级
          • >,>=,<,<=
          • ==,!=
          • &&
          • ||
      • 短路运算//布尔表达式能提前确定结果,后续计算不再执行,直接返回结果 eg:
        /*示例 */
        boolean b = 5 < 3;
        boolean result = b && (5 / 0 > 0);
        System.out.println(result);//输出:false,如果没有短路运算&&,/0会报错,
        
      • 三元运算符:b ? x : y//根据第一个表达式的结果,分别返回后续两个表达式的计算结果
        /* 根据b的真假,返回x或y式 */
        int n = -100;
        int x = n > 0 ? n : -n;
        System.out.println(x); //输出: 100
    • 字符和字符串
      • 字符类型:char(character)  //保存一个Unicode字符
        • 一个英文字符和一个中文字符都用一个char表示
        • int n = ‘A’,//直接获取A的Unicode编码(十进制)
        • char c = ‘u0041’//转义字符‘n’ +Unicode码表示 一个字符(十六进制)
      • 字符串类型:String //引用类型,用”…”表示字符串
        • 一个字符串可以存储0到任意个字符
        • 字符串以”开始 ,以”结束,如果其中包含” 则借助转义字符表示 ,””中两个\表示 ,
          • 常见转义字符
            • ” :
            • ‘ : ‘
            • \ :
            • n : 换行
            • r : 回车
            • t  : tab
            • u####:一个Unicode编码的字符
      • 字符串连接 :用+
        • 用+ 连接字符串和其他数据类型,会将其他数据类型先自动转换为字符串,再连接
      • 多行字符串
        • 要表示多行字符串,用””” … “””表示(Java 13)
          String s = """ 
                     SELECT * FROM
                       users
                     WHERE id > 100
                     """;
      • 不可变特性
        •  Java字符串除了引用类型外,还有重要特点,字符串不可变(内容不可变,变的是指向jvm创建的不同字符串)
      • 空值null //表示不存在,变量不指向任何对象
        • null不等同于空
    • 数组类型:引用类型
      • 定义:类型[]  name= new 类型[size];eg:
        int[] ns = new int[5] 
        
        //默认赋值0,浮点0.0,布尔false
        /数组创建,大小不可变
      • 字符串数组
        • 字符串数组的每一项都是对某一字符的引用

发布内容参考:bookstack.cn 廖雪峰Java教程,感谢分享,欢迎交流。

One thought on “JavaSE(一)——Java程序基础”

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注