Java学习笔记 第二章 java基础

JAVA学习笔记第二章

2.JAVA基础

2.1输出输入

System.out.print 将双引号中的内容原样输出,不换行

System.out.println 将双引号中的内容原样输出,换行

转移字符:

\就是转移字符:作用将后面普通的字母转换为特殊含义

\n 换行

\t 制表符tab

输入:

import java.util.Scanner; //在java.util下将Scanner拿过来用
public class Test{
  public static void main(String[] args){
    //创建一个扫描器
    Scanner sc = new Scanner(System.in);
    //让扫描器扫描键盘录入的int类型数据
    int r = sc.nextInt();
  }
} 

import java.util.Scanner;
public class Test{
  public static void main(String[] args){
    Scanner sc = new Scanner(System.in);
    System.out.println("name:"); 
    String name = sc.next();
    System.out.println("age:");
    int age = sc.nextInt();
    System.out.println("height:");
    double height = sc.nextDouble();
    //没有nextChar()
    String sexStr = sc.next();
    char sex = sexStr.charAt(0);
    //char sex = sc.next().charAt(0);
  }
}

2.2数据类型

2.2.1标识符

包,类,变量,方法...

只要是起名字的地方,那个名字就是标识符

标识符的定义规则:

  • 可以是数字、字母、下划线、美元符号
  • 不可以以数字开头
  • 不可以使用java中的关键字
    • 数据类型的关键字:class interface enum byte short int long float double char boolean void
    • 定义流程控制的关键字:if else switch case default while do for break continue return
    • 定义访问权限修饰符的关键字:public protected private
    • 定义类,函数,变量修饰符的关键字:abstract final static synchronized
    • 定义类与类之间的关系的关键字:extends implements
    • 定义建立实例及引用实例,判断实例的关键字:new this super instanceof
    • 用于异常处理的关键字:try catch finally throw throws
    • 用于包的关键字:package import
    • 其他修饰符的关键字:native strictfp transient volatitle assert
  • 见名知义
  • 大小写敏感
  • 驼峰命名
    • 类名 首字母大写,其余遵循驼峰命名
    • 方法名,变量名:首字母小写,其余遵循驼峰 命名
    • 包名:全部小写,不遵循驼峰命名
  • 长度无限制,但是不建议太长

2.2.2常量

java中常用final来定义一个常量,常量一旦被初始化之后不能修改值

整型常量 123

实型常量 123.123

字符常量 'a'

逻辑常量 true false

字符串常量 "hello"

一个变量被final修饰,这个变量就变成一个常量,这个常量的值就不可变了。

字符常量常定义为大写

2.2.3变量

变量本质上就是代表一个“可操作的存储空间”,通过变量名来访问“对应的存储空间”,从而操纵这个存储空间存储的值。java是一种强类型的语言,每个变量都必须要声明其数据类型,变量的数据类型决定了变量占用存储空间的大小,int a=3;表示a变量空间大小为4个字节,变量作为程序中最基本的存储单元,包括变量名、变量类型、作用域。必须在使用前对变量声明,才能为其分配相应长度的存储空间。

变量声明的格式

type varName[=value][,varName[=value]...];
数据类型 变量名[=初始值][,变量名[=初始值]...];

作用域:指的就是作用范围,变量在什么范围中有效,作用范围就是离它最近的{}

2.2.4数据类型分类

基本数据类型

  • 数值型:bytes, short, int, long, float, double
  • 字符型:char
  • 布尔型:boolean

引用数据类型(除了基本数据类型都属于引用数据类型)

  • 类class
  • 接口interface
  • 数组
2.2.4.1整型数据类型
类型 占用存储空间 表示范围
byte 1字节 -128 ~ 127
short 2字节 -32768 ~ 32767 (-2^15 ~ 2^15 - 1)
int 4字节 -2147483648 ~ 2147483647
long 8字节 -2^63 ~ (2^63)-1

注意:超出范围的赋值会报错

long num = 12345678910;
//整数类型默认是int类型的,所以12345678910时一个int类型的数,对于int类型来说,它超出范围
//要想把一个数给long类型变量,那么后面加上L或者l即可
long num1 = 12345678910L;
//只有这个整数超出int类型的范围了,后面才需要加上L,否则无需加L也可以赋值给long类型。

进制:逢几进位

二进制:B 前面加上0b

八进制:Q 前面加上0表示八进制

十进制:D 一般表示就是十进制

十六进制:H 前面加上0x表示十六进制

2.2.4.2浮点数

十进制数:3.14 314.0 0.314

科学计数法: 314e-2 ----> 314 * 10 ^ (-2)

float类型又称为单精度类型,尾数可以精确到7位有效数字,很多情况下float不够,double则是float类型精度的两倍,float类型的数值后缀F或者f,没有后缀F/f的浮点数值默认为double类型,也可以在浮点数值后添加后缀D或者d,明确其为double类型。

有效位数指的是从左开始第一个不为0的数到最后一个数

类型 占用存储空间 表示范围
float 4个字节 大约+-3.40282347E+38F(有效位数6-7位左右)
double 8个字节 大约游戏哦啊位数为15-16位左右

注意最好不要进行浮点类型的比较

2.2.4.3字符类型

编码和字符集:

什么是编码

ascii 英文字符集 用一个字节的7位表示

IOS8859-1 西欧字符集 用一个字节的8位表示

GB2312 简体中文字符集 最多使用两个字节编码

GBK 升级版GB2312,加入繁体字,最多使用两个字节编码

Unicode 国际通用字符集,融合目前人类使用的所有字符,为每个字符分配唯一的字符码,兼容ascii,前128个位置ascii

utf-8

常使用单引号表示字符常量,字符型在内存中占用两个字节

char类型用来表示在unicode编码表中的字符,unicode编码被设计用来处理各种语言文字,占用2个字节,可允许65536个字符。

转义字符

转义符 含义 unicode值
\b 退格 \u0008
\n 换行 \u000a
\r 回车 \u000d
\t 制表符 \u0009
\" 双引号 \u0022
\' 单引号 \u0027
\\ 反斜杠 \u005c
char c1 = 'A'
//char类型我们看到的样子就是它本身的字面常量,但是底层在计算的时候实际上是按照ascii码进行计算的
//ascii表记住 A-65  Z-90 a-97 z-122

记事本编码一般使用ANSI或者UTF-8编码,ANSI会查看当前操作系统的编码,使用操作系统的编码

2.2.4.4布尔值

boolean类型有两个常量,true和false,在内存中占一位,不可以使用0或者非0的整数代替true和false。

常用来判断逻辑条件,一般用于程序流程控制。

2.2.4.5强制类型转换

在赋值或者算数运算的时候,要求数据类型一致,就要进行类型的转换

存在两种转换的种类:自动转换和强制转换

double d = 6; //int --> double 自动转换
int i = int(6.5); // double --> int 强制转换

//多种数据类型参与运算的时候,整数类型,浮点类型,字符类型都能参与运算,唯独布尔类型不可以参与运算
//类型级别从低到高:byte, short, char, int, long, float, double
//找到级别最高的数据类型,其余的类型都转换为当前表达式中的级别最高的类型进行计算
//左>右 自动转换 左<右 强制类型转换 左=右 直接赋值
  
//特殊情况 对于byte, short, char类型来说,只要在他们的表示范围中,赋值的时候不需要进行强制转换
byte b = 12;

2.3运算符

java支持的运算符:

算数运算符: + - * / % ++ --

赋值运算符: ==

扩展赋值运算符: += -= *= /=

关系运算符:> < >= <= == !=

逻辑运算符: && || ! & | ^

位运算: & | ^ ~ >> << >>>

条件运算符:? :

运算符Operator

表达式expression

操作数Operand

语句Sentence

++和--规则:在前面,先加1或者减1再进行计算,在后面,先计算之后再加1或者减1

int a = 5;
int m = a++ + 7;  // m = a + 7; a = a + 1;
int n = ++a + 7;  // a = a + 1; n = a + 7;
int a = 5;
System.out.println(a++ + a++); //运算符优先级: ++ > +
//5 + 6 = 11; a = 7;

System.out.println(a++ + ++a);
//7 + 9 = 16; a = 9;

System.out.println(++a + a++);
//10 + 10 = 20; a = 12;

System.out.println(++a + ++a);
//12 + 13 = 25; a = 14;

逻辑运算符:左右都是布尔值

逻辑与&:规律只要有一个操作数是false,结果一定为false

短路与&&:效率更高一些,只要第一个为false,后面的表达式不用再计算,结果一定为false

逻辑或|:只要有一个操作数是true,结果一定为true

短路或||:效率跟高一些,只要第一个为true,后面的表达式不用再计算,结果一定为true

逻辑非!:与表达式的结果相反

逻辑异或^:两个表达式结果相同,结果为false,表达式结果不相同,结果为true

image-20210513180800293

条件运算符:三目运算符

格式a?b:c

如果a的结果为true,表达式的结果为b,a的结果为false,表达式的结果为c

位运算符:左右连接的都是数字

在底层是按照位进行操作的

>>>是无符号右移

~表示按位取反

image-20210513210945103

image-20210513211018093

image-20210513211049277

运算符的优先级:

image-20210513211133313

2.4流程控制

控制语句的执行顺序,控制语句分为三种:顺序结构、条件判断结构、循环结构

条件判断结构

  • if

image-20210513211702681

image-20210513211841831

image-20210513212004068

image-20210513212113276

随机数的生成

image-20210513223702274

分支的练习题目:

image-20210513224751482

package code;
import java.util.*;

public class RemoveDesk {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入性别");
        char sex = sc.next().charAt(0);
        System.out.println("清输入年龄");
        int age = sc.nextInt();
        if (age > 7) System.out.println("可以搬桌子");
        else if ( age > 5 && sex == '男') System.out.println("可以搬桌子");
        else System.out.println("你还太小了");

    }
}

  • switch

image-20210513225912045

image-20210513230113049

image-20210513230136116

image-20210513230206854

循环结构:

  • while

image-20210513230250267

image-20210513230506358

  • do while

image-20210513230619128

image-20210513230719859

  • for

image-20210513230816713

image-20210513230853444

流程控制的三个重要关键字

image-20210513230954074

break的作用:停止最近的循环

continue的作用:结束本次最近的循环,进入下一次循环

return的作用:遇到return结束当前正在执行的方法,跟循环无关

2.5方法

image-20210514003908332

image-20210514004134147

image-20210514004227679

image-20210514004552027

image-20210514004526327

image-20210514004938220

image-20210514005113243

image-20210514005442079

image-20210514005557099

image-20210514005645136

2.6数组

image-20210514010649910

image-20210514010342417

使用:

image-20210514010506990

数组的内存分析:

image-20210514010216567

数组的遍历:

image-20210514011036259

image-20210514011226582

image-20210514011240649

image-20210514011501653

image-20210514011753983

image-20210514011948729

Arrays工具类

image-20210514013635050

image-20210514013754993

image-20210514013929117

image-20210514014020386

在System中也存在copy数组的方法

image-20210514014301916

image-20210514014235561

二维数组:

image-20210514014617577

image-20210514014807739

image-20210514014928274

image-20210514014951189

image-20210514015016420

2.7main方法

image-20210514012454282

image-20210514012857857

手动传入实际参数:

image-20210514012928739

2.8可变参数

image-20210514013131133

方法内部对可变参数的处理和数组一样,当和其他参数使用时,可变参数放最后。

2.9IDEA

image-20210514015128855

image-20210514193429155

image-20210514193511543

image-20210514193527785

image-20210514193626388

image-20210514200231489

常用代码模版:

image-20210514201114958

调试:

image-20210514201649967

posted @ 2021-05-14 21:20  wrrr  阅读(109)  评论(0编辑  收藏  举报