Java学习笔记1:基础语法概述

JAVA学习笔记(基础语法)

数据类型

基本数据类型
  1. 整数型:byte、short、int、long (1、2、4、8)
  2. 浮点型:float、double【默认】 (4、8)
  3. 字符型:char (2)【可以表示中文的】
  4. 布尔型:boolean (1)
引用数据类型

​ 字符串、数组、类、接口、Lambda

注意事项
  1. 字符串是引用类型;
  2. 浮点数只是一个一个近似值;
  3. 数据范围与字节数不一定相关,float的数据范围比long更广;
  4. 浮点数的默认数据类型是double,如果一定要使用float则需要在后方加上L;

变量

变量的定义格式
/** case 1 **/
数据类型  变量名称 = 数据值;
/** case 2 **/
数据类型 变量名称;
变量名称 = 数据值;
注意:
  1. 赋值的大小不能超出变量范围

  2. 变量的声明不可以重复;

  3. 对于float和long类型的后缀"F" "L"不可以省略;

  4. 没有进行赋值的变量不可以直接使用;

  5. 变量的使用不可以超出变量的使用域;

    【使用域】:从定义变量开始到所属的大括号为止

  6. 可以通过一个语句来声明多个变量【不建议】;

数据类型转换

自动类型转换(隐式)

符合数据范围从小到大的规则,发生自动类型转换。例如:float --> double;int --> long;long --> float;

强制类型转换(显式)
  1. 不符合符合数据范围从小到大的规则会报错;
  2. 特点:代码需要特殊的格式处理,不能自动完成;
  3. 格式:
范围小的类型  变量名1 = (范围小的类型) 变量名2;
注意事项
  1. 一般不推荐使用强制类型转换,因为可能发生精度损失、数据溢出;
  2. byte/short/char这三种类型都可以发生数学运算;
  3. 类型转换不意味着四舍五入;
  4. byte/short/char类型若进行了数学运算,则会被首先转化为int类型;
  5. 不同类型进行计算,会先统一转换为大范围进行计算;

编码表

ASCII码表:American Standard for Information Interchange 美国信息交换标准码

Unicode码表:万国码

算术运算符

  • 运算符:进行特定运算的符号,例如:+;

  • 表达式:用运算符连起来的式子叫表达式。

  • 四则运算:

    • 加:+
    • 减:-
    • 乘:*
    • 除:/
  • 除运算“/”类似于C++,对于整数来说只取商;

  • 加号“+”的用法:

    1. 对于数值来说,就是基本的加法;
    2. 对于字符char类型来说,在计算之前,char会被提升为int,然后进行计算;
    3. 对于字符串String类型的变量,加号表示字符串的连接操作
    4. 任何数据类型和String进行连接操作的结果都会变成String;
  • 自增自减运算符:同C++/C;

  • 赋值运算符:同C++/C;

  • 比较运算符:同C++/C;

  • 逻辑运算符:同C++/C;

  • 三元运算符:同C++/C;

方法入门

  1. 概念引入:让代码变得更加清晰;

  2. 定义方法:

    public static void 方法名称(){
        方法体;
    }
    
    • 方法命名规则和变量一样,使用小驼峰;
    • 方法体:大括号当中可以包含任意条语句;
    • 注意事项:
      1. 方法定义前后顺序无所谓;
      2. 方法的定义不能产生嵌套包含关系;
      3. 方法定义好之后不会执行,必须进行调用;
  3. 方法的调用:

方法名称();

编译器对特殊类型赋值的优化

对于byte/short/char三种类型来说,如果右侧赋值的数值没有超过范围,那么javac编译器将会自动隐含地为我们补上一个(byte)(short)(char)。

  1. 如果没有超过左侧的范围,编译器补上强转。
  2. 如果右侧超过了左侧范围,那么直接编译器报错。

编译器在表达式计算时,会进行”常量优化“。

选择结构

  1. 选择结构ifelseelse if:同C++/C;
  2. 三元运算符? ::同C++/C;
  3. switch语句:同C++/C;
    • 多个case后面的数值不可以重复;
    • switch小括号当中只能是以下数据类型:
      • 基本数据类型:byte/short/char/int
      • 引用数据类型:String字符串、enum枚举;
    • switch语句的格式可以很灵活;前后顺序可以颠倒,而且break语句还可以省略;“匹配到哪一个case就从哪一个位置向下执行,直到遇到了break或者整体结束为止”

循环结构

  • 循环结构的基本组成部分,一般可分为四部分:

    1. 初始化语句:在循环开始最初执行,而且只做唯一一次;

    2. 条件判断:如果成立,则循环继续;如果不成立,则循环退出;

    3. 循环体:重复要做的内容,多条语句;

    4. 条件改变;

  • 循环语句:

    1. for语句:同C++/C;
    2. while语句:同C++/C;
    3. do while语句:同C++/C;
    4. break语句:同C++/C;
    5. continue语句:同C++/C;

IJ集成开发环境IDE

Integrated Development Environment, IDE, 集成开发环境;

快捷键功能
Alt+Enter进行代码修复
Ctrl+Y删除光标所在行
Ctrl+D重复光标所在行
Ctrl+Alt+L格式化代码
Ctrl+/添加或取消单行注释
Ctrl+Shift+/添加或取消多行注释
Alt+Ins自动生成代码
Shift+Alt+上下箭头移动代码行

方法

1.定义格式

方法:若干语句的功能集合

参数:传入的数据

返回值:传出的数据(停止方法,将返回值还给调用处)

修饰符 返回值类型 方法名称(参数类型1 参数名称1,...){
    方法体;
    return 返回值;
}
2. 方法的三种调用格式
  1. 单独调用:方法名称(参数);
  2. 打印调用:System.out.println(方法名称(参数));
  3. 赋值调用:数据类型 变量名称 =方法名称(参数);
3.方法的重载(Overload)

特征:多个方法的名称一样,但是参数列表不同;

注意事项

  • 与下列因素有关(满足一个即可)
    1. 参数数量不同
    2. 参数类型不同
    3. 参数的多类型顺序不同
  • 与下列因素无关
    1. 参数名称
    2. 方法返回值类型

数组

1.数组的概念
  1. 数组的概念:是一种容器,可以存放多个数据值;
  2. 数组的特点:
    1. 引用数据类型;
    2. 类型必须统一;
    3. 数组长度在程序运行期间不可以改变;
2. 数组的定义格式
  1. 动态初始化(指定长度)

    数据类型[] 数组名称 = new 数据类型[数组长度];
    
  2. 静态初始化(指定内容)

    数据类型[] 数组名称 = new 数据类型[]{元素1,元素2, ... };
    
  3. 省略格式

    数据类型[] 数组名称 = {元素1,元素2, ... };
    
3. 数组元素的获取和赋值
  • 直接打印数组名称,得到的是数组对于的内存地址哈希值;
  • 下标索引值从0开始;
  • 动态定义的数组会默认如下初始化:
    1. 整数型:0
    2. 浮点型:0.0
    3. 字符型:‘\u0000’
    4. 布尔型:false
    5. 引用型:null
4. Java中的内存划分
  1. (Stack):存放的都是方法中的局部变量,方法的运行在栈中
    • 局部变量:方法的参数,或者是方法{}内部的变量
    • 作用域:一旦超出作用域,立刻从栈内存中释放
  2. (Heap):凡是new出的变量,都存在堆当中。
    • 堆内存里面的东西都有一个地址值:16进制
    • 堆内存中的数据都有默认值,规则:
      1. 整数型:0
      2. 浮点型:0.0
      3. 字符型:‘\u0000’
      4. 布尔型:false
      5. 引用型:null
  3. 方法区(Method Area):存储class相关信息,包含方法的信息
  4. 本地方法栈(Native Method Stack):与操作系统有关
  5. 寄存器(pc Register):与CPU相关
5. 数组的内存图

在这里插入图片描述

6.常见问题
  1. 数组索引越界异常:范围0 ~ 数组长度-1
  2. 空指针异常(NullPointException)
7. 数值长度获取

格式:

数组名称.length;

数组一旦创建,程序运行期间长度不可以改变

8. 数组有关的方法

地方法栈(Native Method Stack):与操作系统有关
5. 寄存器(pc Register):与CPU相关

5. 数组的内存图

[外链图片转存中…(img-424ssjdr-1613583059867)]

6.常见问题
  1. 数组索引越界异常:范围0 ~ 数组长度-1
  2. 空指针异常(NullPointException)
7. 数值长度获取

格式:

数组名称.length;

数组一旦创建,程序运行期间长度不可以改变

8. 数组有关的方法

方法的参数可以选择数组的地址,方法的返回值也可以为数组的地址;

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值