欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java学习笔记基础语法部分1~3章

程序员文章站 2022-06-26 07:54:59
...

JAVA基础知识总结


第一章 语言特点

  • 简单
  • 面向对象
  • 分布式
  • 健壮性
  • 安全
  • 体系结构中立
  • 可移植
  • 解释型
  • 较高性能
  • 多线程
  • 动态性(在程序运行时可以添加方法和实例变量)

要点:JAVA程序执行是将

源代码(.java文件)–>通过JAVA编译器编译–> .class文件 -->通过解释器解释运行

先编译再解释,数据大小和运算格式固定,这些也奠定了多平台、强移植的基础。

第二章 JAVA开发环境

开发体系

  1. java语法基础
  2. 运行java的虚拟机(JVM)
  3. java API类库
  4. javac(编译器)等辅助工具

1、2、3、4合称JDK (Java Development Kit):java编程最小环境

2、3合称JRE(Java Runtime Environment):java运行最小环境

版本(edition)

  • java SE (Standard Edition ):基础功能,桌面级应用以及简单服务器。
  • java EE (Enterprise Edition):企业级服务器。
  • java ME (Micro Edition):移动端。

EE、ME都是以SE为基础。

第三章 基础语法

1、注释

  1. “ // ”
  2. “ /* (注释内容)*/ ”
  3. “ /* (注释内容)**/ ” 自动生成文档

2、数据类型

共四种,数字书写时可以加下划线 如 999_9 编译器仍会按照 9999编译。

数字所占内存在任何平台都相同。

  • 整型

    int (正负20亿)、 数字表示方法:

    short(正负3.2万)、

    long(九百亿亿)、 后缀L(l)如10000000000L 即为long长整型

    byte(-128~127) 前缀 0b (0B) 就可以写二进制数 如 0b1001 就是十进制9

    此外

    前缀0x(0X)十六进制

    前缀单个0 八进制

  • 浮点型

    float(浮点)、double(双精度浮点型)

    NaN(不是一个数字)

    判断一个值是否是一个数用Double.isNaN方法 返回布尔值

    如 :if (x = Double.NaN) 。。。

  • 字符型

    char类型及单个Unicode字符。

    char x = ‘A’;

    或者直接用Unicode表示,一个Unicode编码是char类型,可能占用一个char类型的值也可能是两个。

    Unicode编码会在代码编译前就被被转义

    public static void main(String**\u005B\u00SD** args)是合法的,\u005B \u00SD分别表示[、],在编译前就会被转义为[]。

  • 布尔类型(Boolean)

    boolean x = false;

    布尔值有且只有 true和false两个,不能用数字代替

3、变量、常量

  • 变量声明、定义。

    在Java中不区分变量的声明与定义,二者可以同时进行。

double x = 1.0; // 声明并定义


1. 声明变量最好逐行进行

 ```java
 int x, y; // 可以这样
 // 为了可读性,最好这样。
 int x;
 int y;
  1. 变量开头不允许是数字,变量名中不能有空格。
  • 常量

    final 关键字定义常量。

    public class Constants
    {
        public static void main(String[] args)
        {
            final double PI = 3.14;
        }
    }
    1. 常量一般大写
    2. 定义于main方法外。
    3. 同一类方法可以使用
    4. 若被声明为public,则其它类也能使用。

4、运算

数学函数与数学常量(Math类)

Math.sqrt(x); // x的平方根
Math.pow(x, y); // x的y平方
// 常量
Math.PI;
Math.E;
import  static java.lang.Math.*;// 直接引用

数值类型转换

  • 当多个数进行运算时,运算优先级

    double>float>long>int

    优先转换为高级别类型

  • 强制类型转换

    double x = 9.99;
    int y = (int)x; // x=9,会直接截断

    Math.round方法四舍五入返回为long类型

    int z = (int)Math.round(x);// 用(int)强制将long型转换为int (可能造成数据丢失)

运算符

  • 结合赋值

    x += 1 等价于 x = x + 1

    注意:

    1. 如果得到的值与左侧类型不同,会强制类型转换为左侧。
    2. 右结合, x += y += z等价于 x += (y += z) 最好不要这样做!
  • 增值符 ++ 、–

    n++//先用后加
    ++n;// 先加后用
  • 逻辑判断符

    1、

    ==、!=、<、>、<=、>=…与c相同

    也支持三元操作符号?:

    condition ?expression: expression

    若条件为真,表达式返回第一个expression,否则第二个

    int x = 1;
    int y = 2;
    int n = x > y ? x : y;// 判断x是否大于y,若是则n = 1否则为 2;也可以是
    int n = x > y ? 6 : 9;//若是则n等于第一个值,否则为第二个值

    2、

    关系判断符:&&(且)||(或)

    二者遵循“短路”原则,例如 A & B ,如果A为false,则不再判断B,直接返回false。

    注意 &&的运算优先级大于||

  • 位运算符(TODO)

  • 枚举型

    个人认为是自定义变量类型,及其变量取值

    如下为,变量类型是Size(类比int之类的类型),取值只有三个(而int是正负二十亿整数)

    enum Size { X,XX,XXL };
    //引用
    Size x = Size.X

5、字符串

(仅基础概念,String类将单列学习)

1、Java字符串就是Unicode字符序列。

2、对字符串相关处理由 String这个类来处理。

3、源字符串不可改变,后续操作是构建新字符串。

4、字符串长度

String s= “” 也是s一个字符串,长度为0,里面就是什么也没有,空串也可以用Null填充

String s= “Null”,长度为1。

Java 字符串由char值序列组成,由于可能会有两个char值(代码块)对应一个Unicode值(码点)。实际长度是char值数。

⑪ is the set of octonions ⑪是由两个char值(代码块)标记的Unicode值(码点)

用codePoints方法,可以使码点与整数对应。

6、输入、输出

(仅基础概念,Scanner、PrintWriter类将单列学习)

  1. 标准输出流(控制台)

    对于字符串 System.out.println()

  2. 想要读取信息进入程序,则需要用到Scanner类、

  3. 文件输入

    Scanner in = new Scanner(Paths.get("flle.xxx"), "UTF-8");

    Scanner(路径, 编码)

  4. 文件输出

    PrintWriter out = new PrintWriter("file.xxx", "UTF-8");

7、控制流程

与c基本一样

  • 条件执行

    if (condition) {statement…}

    if (condition) {statement…} else {statement…}

  • 条件循环

    1. while ( condition ) {statement…}
    2. do {statement…} while (condition); 注意最后一个分号!!!
    3. continue可以跳过循环。
  • for循环

    for (int i = 1; i < 10 ; i++)
    {statement...}
    for (value : collection)
    {statement...}
  • switch

    switch(choice)
    {
        case 1:
            statement...
            break;
        ...
        default:
            statement...
            break;
    }

8、数组

(仅基础概念,Arrays类将单列学习)

数组是储存同一类型值的集合

  • 声明数组

    int[] a;

    声明了名字为a,类型都为int 的数组。int与[ ]之间没有空格!

  • 初始化、匿名数组

    int[] a = new int[n]// 创建名为a,储存n个int类型值的数组。
    int[] a = {1, 2}//简化赋值
    new int[] = {1, 2}//匿名数组
    int[] a;
    a = new int[]{1, 2, 3}
    1. 数字数组初始化值均为0

    2. Boolean数组初始化值为false

    3. 对象数组初始化为null

      String[] names = new String[10]//创建包含十个“字符串”类型的数组每个字符串值为null
  • 数组改值

    int[] a = {1, 2};
    a[1] = 3;//从0 开始
    // a 变为{1 ,3}
  • 数组拷贝、排序方法

    1. 拷贝
    int[] a = {1, 2};
    int[] b;
    b = Arrays.copyOF(a ,a.length)//第二个参数是新数组的长度。

    ​ 如果数组是数字,多余长度为0

    ​ 是字符串,多余为null

    ​ 是Boolean,多余是false。

    1. 排序

      Arrays.sort()

  • 命令行参数

    public class Message
    {
    	public static void main(String[] args) 
        {
           for (int i = 1; i < args.length; i ++)
    		System.out.print("第"+ i + "个参数是" + args[i]);
    		System.out.println("!");
        }
    }

    在命令行输入

    java Message I LOVE YOU
    

    将打印 第0个参数是 I 第1个参数是 LOVE 第2个参数是YOU

  • 多维数组

    int[][] array = 
    {
        {4, 8, 6},
        {5, 2, 0},
        {3, 6, 9}
    };
    /*其中
    array[0][0] = 4
    array[1][0] = 5
    array[1][1] = 2
    ...
    */