JAVA入门2

HelloWorld

  1. 后缀名 .java

  2. 编写代码

    public class HelloWorld{
    	public static void main(String[] args){
    		System.out.println("HelloWorld!");
    	}
    }
    
  3. 编译javac java文件 生成class文件

  4. 运行class文件 java class文件 (没有后缀名)

JAVA程序运行机制

  • 编译型

  • 解释型

  • .java文件 -> java编译器 ->.class文件 -> 类加载器 -> 字节码校验器 -> 解释器 -> 操作平台

注释

//单行注释

/*
多行注释
*/

/**
文档注释
*/

标识符和关键字

在这里插入图片描述

数据类型

强类型语言

  • 基本类型

    • 数值类型

      • 整数类型

        • byte 1字节

        • short 2字节

        • int 4字节

        • long 8字节 数字后面加L

      • 浮点类型

        • float 4字节 数字后面加F
        • double 8字节
      • 字符类型 char 2字节

    • boolean类型 true和false 1位

  • 引用类型

    • 类 String类…
    • 接口
    • 数组
  • 什么是字节?

    • 位(bit):内部数据最小存储单位
    • 字节(byte): 数据处理 基本单位 B
    • 1B = 8bit
    • 字符: 字母、数字、字、符号

数据类型扩展问题

  • 整数扩展 (进制)

    • 二进制 0b
    • 八进制 0
    • 十六进制 0x
  • 浮点数数据类型不相等

    • 有限 离散 舍入误差 大约 接近不是等于
    • 最好避免使用浮点数进行比较
  • 字符扩展

    • 所有的字符本质都是数字 Unicode编码 2字节

    • new String对象的地址不同 比较不相同

      String a = new String("Hello");
      String b = new String("Hello");
      a != b
      String c = "Hello";
      String d = "Hello";
      c == d
      
  • 布尔值扩展

    boolean flag = true;
    if (flag){}
    //Less is more
    

类型转换

java是强类型语言,有些运算需要进行类型转换

低--------------------------------------------------------->高

byte,short,char,int,long,float,double

  • 强制类型转换:高到低 (有内存溢出情况)
  • 自由类型转换:低到高
  • 注意

注意:

  1. 布尔值不可以转换

  2. 不转换不相关类型

  3. 高容器到地容器需要强制转换

  4. 转换可能存在溢出,或者精度问题 (先强制转换再运算)

变量

可以变化的量,固定空间存放不同数据(变量名、变量类型、作用域),可以是基本类型和引用类型。

  • 作用域

    • 局部变量:方法内,属于方法
    • 实例变量:方法外,属于对象
    • 类变量:属于类(随着类的存在和消亡) static
  • 常量:有固定值的变量 final 修饰符不区分前后

  • 命名规范

    • 所有变量、方法、类名:见名知意
    • 类成员变量:首字母小写+驼峰规则
    • 局部变量:首字母小写+驼峰规则
    • 常量:大写字母+下划线
    • 类名:首字母大写+驼峰规则
    • 方法名:首字母小写+驼峰规则

运算符

优先级 ()

在这里插入图片描述

  • &&:逻辑与计算,两个都为真结果才为真,第一个为假,不用继续计算

  • ||:逻辑或运算 有一个为真结果为真,第一个为真,不用继续计算

  • &:都为真才真 位运算

  • |: 有真则为真 位运算

  • <<:左移位运算 *2

  • >>:右移位运算 /2

包机制

公司域名倒置 www.baidu.com com.baodu.www

不同包使用类需要导包 import

javadoc 生成文档

用户交互Scanner

Scanner scanner = new Scanner(System.in);
//获取字符串方法
scanner.next();//不可以使用空格
scanner.nextLine();//回车键结束输入
//判断字符串是否还有输入
scanner.hasNext();
scanner.hasNextLine();

流程控制

  • if

    if(条件){
        //语句
    }else{
        //语句
    }
    
    • equals :比较字符串是否相同
    • == :相同地址才为true
  • Switch

    switch(value){
        case value:
            //语句
            break;
    	case value:
            //语句
            break;
    	default :
            //语句
    }
    
    • case 中的值为中文,实际上是一个生成一个hashCode
    • break 不写 会穿透
  • While

    while( 布尔表达式 ){
        //循环语句
    }
    
  • for

    for(初始化; 布尔表达式; 更新){
        //代码语句
    }
    
  • 增强for (数组和集合)

    for(声明语句 : 表达式){
        //代码语句
    }
    

    break用于强制退出循环,continue用于终止循环中的某一次

方法

  • 修饰符

  • 返回值类型

  • 方法名

  • 参数类型

  • 方法体

    修饰符 返回值类型 方法名 (参数类型 参数名){
       ...
       方法体
       ...
       return 返回值 ;
    }
    
  • java是值传递

  • 方法重载

    • 方法名相同
    • 参数列表不同
    • 方法返回值可以相同也可以不同
  • 可变参数 (…)

数组

相同类型的有序集合,通过下标访问

  • 声明数组

    int[] nums ;//通常使用
    int nums[] ;
    nums = new int[10];//开辟空间 
    int[0] = 1;//复制
    nums.length();//长度
    
  • 内存分析

    • 堆:存放new对象和数组,可以被所有线程共享,不会存放别的对象引用
    • 栈:存放基本变量类型(回报看这个基本类型的值) 存放引用对象的变量(会存放这个引用在堆里的具体地址)
    • 方法:可以被所有线程共享,包含了所有class和static变量
  • 初始化

    int[] a = {1,2,3,4,5,6,7,8,9,10};//静态初始化
    int[] b = new int[10];//动态初始化
    //默认初始化空值
    
  • 数组特点

    • 长度确定
    • 相同类型
    • 元素可以是基本类型、引用类型
    • 数组变量属于引用类型,数组对象本身是在堆中
  • 二维数组

    int[][] a = new int[10][10];
    
  • Arrays类

    • toString() 打印数组

    • sort() 升序

    • equals() 元素值是否相等

面向对象

抽象一类事物

  • static 静态变量 和类加载同步

  • 加载顺序:静态代码块(执行一次)>匿名代码块>构造方法

  • 抽象类:abstract

  • 接口:interface

  • 内部类:可以获得外部类的属性和方法

异常

  • 检查性异常
  • 运行时异常
  • 错误
try{
    //抛出异常
    throw
}catch(){
    
}finally{
    
}

throws //方法上抛出异常
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值