思维导图:
1.偶遇Java:
- 一个Java文件中可以有若干个类,但是只能有一个public修饰的类,并且这个类的类名必须和文件相同
- JDK:Java Developmen Kit。Java开发包,包含了JRE、编译器javac和自带的调试工具。
- JRE:Java Runtime Environment。Java运行时的环境,包含JVM和Java基础类库。
- JVM:Java虚拟机,运行Java代码。
- 运行Java程序:编写Java源程序使用javac.exe编译器生成字节码文件,使用javac xxx.java来操作编译器。字节码文件格式为xxx.class,使用java运行字节码文件的方法是java xxx.java。字节码文件时二进制的数据,一个类有一个不是一个文件,方便随用随取。
- 标识符:用户给类名、方法名和变量名所取的名字。
- 标识符可以包含字母、数字和下划线等符号,但是不能以数字开头。
- 类名:大驼峰,方法名和变量名:小驼峰。
- 标识符不可以是关键字。(main不是关键字)
2.数据类型:
- 数据类型分为基本数据类型和引用数据类型。
- 基本数据类型共有4类8种
数据类型 | 关键字 | 包装类型 | 字节个数 | 大小 |
字节型 | byte | Byte | 1个字节 | -2^7~2^7-1 |
短整型 | short | Short | 2个字节 | -2^15~2^15-1 |
整型 | int | Integer | 4个字节 | -2^31~2^31-1 |
长整型 | long | Long | 8个字节 | -2^63~2^63-1 |
单精度浮点型 | float | Float | 4个字节 | |
双精度浮点型 | double | Double | 8个字节 | |
字符型 | char | Character | 2个字节 | 0~2^16-1 |
布尔类型 | boolean | Boolean | 无规定 | true和false |
3.不论是16位还是32位系统,int都占4个字节
4.Java中没有unsigned(无符号数字),字符串属于引用类型。
5.所赋值不能超过自己使用的类型大小,还有一种情况:
byte a = 127;
byte b = (byte)(a+1);这里b的值为-128
6.类型转换分为俩类,自动类型转换(隐式)和强制类型转换(显示)。自动类型转换的特点是范围小的类型转换成范围大的类型,在编译期间会自动完成。例如:int a = 10;long b = 100L;b = a;编译器会自动将a提升为long类型,然后赋值。强制类型转换的特点是范围大的转换成范围小的,需要自己进行处理才能完成。例如:int c = 10;short d = (short) c;需要将int类型的c强制转换成short类型才可以。
7.类型提升,不同类型的数据相互运算时,数据类型小的会被转换成数据类型大的。例如int和short之间,short会被提升成int。有一种情况,俩个类型的大小都小于4个字节时,例如byte和byte之间,系统会自动将short都提升为int,然后进行计算。
8.字符串和整型数字之间的转换。在Java中字符串不是以\0结尾。若int转String,可以将整数后加上 +" " 或着是String.valueOf(整数)。若String转int,则使用Integer.parseInt(字符串)。有一个比较坑的地方,例如:int a = 10;int b = 20;
System.out.println("a:"+a+b);输出结果是:a:1020
System.out.println(a+b+"sanlian");输出结果是:30sanlian
3.运算符:
- 算术运算符分为基本四则运算符( + - * / % )和增量运算符(+= -= *= /= %=)还有自增自减运算符(++ --)。使用基本四则运算符做除法或是取模时,右操作数不能为0,取模时可以对double类型取模(但是没有意义 ! ),左右操作数为负数时也可以取模。使用增量运算符时,注意一点,例如:short a = 10;a += 1;会发生类型提升如short a = (short) (a+1);
- 关系运算符(< > == != <= >=),其运算结果是true和false。
- 逻辑运算符(&& || !),其运算结果是true和false。语法规则是:布尔表达式&&布尔表达式。这里有一个短路求值的概念!
System.out.println(33>44 && 10%0 == 10);第一个表达式为false,不去第二个表达式
System.out.println(33<44 || 10%0 == 10);第一个表达式为true,不去第二个表达式
1.位运算符(& | ~ ^),位运算符操作的是二进制位。按位与&的特点是若俩个二进制位都是1则是1否则为0。按位或|的特点是若俩个二进制位有一个是1则是1,都是0才是0。按位异或^的特点是找不同,不同的二进制位得1。按位取反~是将1变成0,0变成1。
2.移位运算符(<< >> >>>)。左移<<:左侧不要,右侧补0,右移>>:右侧不要,左侧补(正数补0,负数补1),无符号右移>>>:右侧不要,左侧补0。计算机的移位操作比算术操作效率更高。
3.条件运算符(A>B?A:B),也是Java中唯一的三目运算符。
4.逻辑控制语句:
- 选择语句if和switch,使用时注意括号的位置。
【面试题】不能做switch的参数有哪些?
long、float、double、boolean
2.循环语句while和for,使用时注意括号的位置。
3.输入和输出,使用Scanner来获取数据。scanner...这些容易混淆。例如:next ();读取有效元素,遇
空格停止。nextLine ();返回enter键前的所有字符。hasNext ();用来判断是否有下一个输入项。hasNextLine ()用来判断输入数据是否有下一行。
5.方法:
- 方法的概念,方法就类似于C语言中的函数。定义格式为:修饰符 返回值类型 方法名();常用的修饰符是public static固定搭配。方法名采用小驼峰格式,方法必须写在类当中。
- 实参和形参的关系。在Java中对于基础类型来说,实参的值永远都是拷贝到形参中,形参和实参本质上是俩个实体,对形参的修改不会影响实参。可以通过传引用类型来解决这个问题。
- 方法重载(overload),如果多个方法的名字一样但是参数列表不同,则称这几种方法被重载了。参数列表的不同有这几种:参数的个数不同,参数的类型不同等。方法是否构成重载和返回值的类型是否相同无关。
- 方法签名
- 递归,一个方法在执行过程中调用自身的方法就叫递归。递归有俩个必要的条件,在方法的内部自己调用自己,一定要有一个趋于终止的条件。
6.数组:
- 数组是相同类型元素的集合,在内存中是一块连续的空间。数组的创建有3种方法,其中array2和array3是通过关键字new来创建一个对象,这和array的创建形式不同。在array3中没有指定数组的具体内容,则都默认为0。如果数组是布尔类型,创建时没有初始化则默认都为false。若存储元素是引用类型,则默认为null。
创建方式(3种) | 0下标 | 1下标 | 2下标 | 3下标 | 4下标 | 5下标 |
int[ ] array ={1,2,3,4,5,6}; |
1 | 2 | 3 | 4 | 5 | 6 |
int[ ] array2 =new int[ ]{1,2,3,4,5,6}; |
1 | 2 | 3 | 4 | 5 | 6 |
int[ ] array3 =new int [6]; |
0 | 0 | 0 | 0 | 0 | 0 |
2.数组的使用,遍历数组是非常重要的操作。
遍历数组(已知数组array) | 注意: |
for(int i = 0 ; i < array.length ; i++) | 循环打印 |
for(int x : array) | 比第一种简单点 |
System.out.println(Arrays.toString(array)) ; | 将数组以字符串形式输出 |
3.初始JVM的内存分布
虚拟机栈 | 方法执行时都会创建一个栈帧,存放局部变量 |
堆 | new创建的对象在堆上保存,堆随着程序运行而创建,程序退出而销毁,是JVM管理的最大内存区域 |
程序计数器 | |
本地方法栈 | |
方法区 |
4.基本类型和引用类型的区别。基本数据类型创建的变量,称之为基本变量,该变量存放的是一个值。引用数据类型创建的变量,称之为对象的引用,其存储的是对象所在空间的地址。
5.数组使用。数组拷贝是使用Arrays中copyOf方法完成的,在进行数组拷贝时会创建一个新的数组,这时原数组和拷贝得到的数组不是同一个数组。也可以使用copyOfRange方法来拷贝数组的某个范围。查找有序数组中指定元素的下标,Arrays中binarySearch方法可以实现。将一个数组排成有序可以使用Arrays中的sort方法。
6.二维数组,可以省略列不能省略行。
如果对您有帮助的话,
不要忘记点赞+关注哦,蟹蟹
如果对您有帮助的话,
不要忘记点赞+关注哦,蟹蟹
如果对您有帮助的话,
不要忘记点赞+关注哦,蟹蟹