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); } }
包,类,变量,方法...
只要是起名字的地方,那个名字就是标识符
标识符的定义规则:
java中常用final来定义一个常量,常量一旦被初始化之后不能修改值
整型常量 123
实型常量 123.123
字符常量 'a'
逻辑常量 true false
字符串常量 "hello"
一个变量被final修饰,这个变量就变成一个常量,这个常量的值就不可变了。
字符常量常定义为大写
变量本质上就是代表一个“可操作的存储空间”,通过变量名来访问“对应的存储空间”,从而操纵这个存储空间存储的值。java是一种强类型的语言,每个变量都必须要声明其数据类型,变量的数据类型决定了变量占用存储空间的大小,int a=3;表示a变量空间大小为4个字节,变量作为程序中最基本的存储单元,包括变量名、变量类型、作用域。必须在使用前对变量声明,才能为其分配相应长度的存储空间。
变量声明的格式
type varName[=value][,varName[=value]...]; 数据类型 变量名[=初始值][,变量名[=初始值]...];
作用域:指的就是作用范围,变量在什么范围中有效,作用范围就是离它最近的{}
基本数据类型
引用数据类型(除了基本数据类型都属于引用数据类型)
类型 | 占用存储空间 | 表示范围 |
---|---|---|
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表示十六进制
十进制数: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位左右 |
注意最好不要进行浮点类型的比较
编码和字符集:
什么是编码
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会查看当前操作系统的编码,使用操作系统的编码
boolean类型有两个常量,true和false,在内存中占一位,不可以使用0或者非0的整数代替true和false。
常用来判断逻辑条件,一般用于程序流程控制。
在赋值或者算数运算的时候,要求数据类型一致,就要进行类型的转换
存在两种转换的种类:自动转换和强制转换
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;
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
条件运算符:三目运算符
格式a?b:c
如果a的结果为true,表达式的结果为b,a的结果为false,表达式的结果为c
位运算符:左右连接的都是数字
在底层是按照位进行操作的
>>>是无符号右移
~表示按位取反
运算符的优先级:
控制语句的执行顺序,控制语句分为三种:顺序结构、条件判断结构、循环结构
条件判断结构
随机数的生成
分支的练习题目:
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("你还太小了"); } }
循环结构:
流程控制的三个重要关键字
break的作用:停止最近的循环
continue的作用:结束本次最近的循环,进入下一次循环
return的作用:遇到return结束当前正在执行的方法,跟循环无关
使用:
数组的内存分析:
数组的遍历:
Arrays工具类
在System中也存在copy数组的方法
二维数组:
手动传入实际参数:
方法内部对可变参数的处理和数组一样,当和其他参数使用时,可变参数放最后。
常用代码模版:
调试: