0. 关键字
abstract | boolean | break | byte | case |
catch | char | class | continue | default |
do | double | else | enum | extends |
final | finally | float | for | if |
implements | import | instanceof | int | interface |
long | native | new | package | private |
protected | public | return | strictfp | short |
static | super | switch | synchronized | this |
throw | throws | transient | try | void |
volatile | while | interface | | |
1. 标识符命名规则: 可以由26个字母大小写, 数字符号, 下划线_, 美元符号$组成. 且数字不能开头,不能使用关键字作为标识符.
2. Java中的名称规范:
- * 包名: 多单词组成时所有字母都小写.
- 类名和接口名: 多单词组成时, 所有单词的首字母大写.
- 变量名和函数名: 多单词组成时, 第一个单词首字母小谢, 第二个开始每个单词首字母大写.
- * 常量名: 所有字母都大写. 多单词是每个单词用下划线连接. 如XXX_YYY_ZZZ
3. 注释形式.
- 单行注释. //注释文字
- 多行注释. /* 注释文字 */
- 文档注释. /** 注释文字 */
4. 注释类型解释.
- 单行和多行注释, 被注释的文字, 不会被JVM解释执行.
- 文档注释是java特有的注释, 注释内容可以被JDK提供的javadoc工具解析, 生成一套网页文件形式存在的说明文档.
5. 变量定义格式: 数据类型 变量名 = 初始化值;
6. Java是强类型语言, 每种数据都定义了明确的具体数据类型, 在内存中分配了不同大小的内存空间.
其中, byte占1字节, short占2字节, int占4字节, long占8字节; float占4字节, double占8字节; char占2字节; boolean占1位.
7. 表达式的数据类型自动提升
- 所有byte型/short型/char型的值将被提升到int型.
- 如果一个操作数是long型, 计算结果就是long型.
- 如果一个操作数是float型, 计算结果就是float型.
- 如果一个操作数是double型, 计算结果就是double型.
8. 取模可以作用于整数也可以作用于浮点数. 取模运算有负数存在时, 所得结果的正负符号与%左侧的相同.
9. 逻辑运算符.
10. 位运算符.
11. if(...), 条件表达式无论写成什么样子,只看最终的结构是否是true或者false. 其他不行.
12. 函数: 函数就是定义在类中的具有特定功能的一段独立小程序. 函数也叫方法.
13. 函数中只能调用函数, 不可以在函数内部定义函数.
14. 函数的重载(Overload): 在同一个类中, 若干个同名函数只要参数个数或者参数类型不同即为重载, 如返回值类型无关.
15. 数组是同一种类型数据的集合(其实数组就是一个容器).
16.* 内存结构: Java程序运行时, 需要在内存中分配空间. 为了提高运行效率, 对空间进行了不同区域的划分, 每片区域都有特定的处理数据方式和内存管理方式.
- 栈内存: 存储局部变量, 当数据使用完, 所占空间自动释放.
- 堆内存: 数组的对象, 通过new建立的实例都存放在堆内存中. 每一个实体都有内存地制值. 实体中的变量都有默认初始化值. 如果实体不再被使用, 会在不确定的时间被垃圾回收器回收.
17. 获取数组中的最大和最小值.
public class Test {
public static int getMax(int[] arr) //获取最大元素
{
int max = arr[0];
for(int x=1; x<arr.length; x++)
{
if(arr[x]>max)
max = arr[x];
}
return max;
}
public static int getMin(int[] arr) //获取最小元素
{
int min = arr[0];
for(int x=1; x<arr.length; x++)
{
if(arr[x]<min)
min = arr[x];
}
return min;
}
public static void main(String[] args)
{
int[] arr = {5,1,6,4,2,8,9};
System.out.println(getMax(arr));
System.out.println(getMin(arr));
}
}
18.选择排序: 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序的序列中继续找到最值, 放到剩余的起始位置, 直至全部排序完成.
public static void selectSort(int[] arr)
{
//升序
for(int x=0; x<arr.length-1; x++)
{
for(int y=x+1; y<arr.length; y++)
{
if(arr[x] > arr[y])
{
int tmp = arr[x];
arr[x] = arr[y];
arr[y] = tmp;
}
}
}
}
19.冒泡排序
: 相邻的两个元素进行比较, 如果符合条件, 换位.
public static void bubbleSort(int[] arr)
{
//升序
for(int x=0; x<arr.length-1; x++)
{
for(int y=0; y<arr.length-x-1; y++)
{
if(arr[y] > arr[y+1])
{
int tmp = arr[y];
arr[y] = arr[y+1];
arr[y+1] = tmp;
}
}
}
}
20. 效率最高的是希尔排序.
21.
折半查找
: 也叫二分查找BinarySearch. 操作有序数组. 将key值与数组最中间的元素比较, >则继续与数组前半部分的最中间的元素比较, 直到比较完毕.
public static int BinarySearch(int[] arr, int key)
{
//操作升序数组
int min = 0;
int max = arr.length-1;
int mid = (min+max)/2;
while(key != arr[mid])
{
if(key<arr[mid])
max = mid-1;
else
min = mid+1;
if(min>max)
return -1;
mid = (max+min)/2;
}
return mid;
}
public static int BinarySearch_2(int[] arr, int key)
{
//操作升序数组
int min = 0;
int max = arr.length-1;
int mid = (min+max)/2;
while(min<=max)
{
if(key<arr[mid])
max = mid-1;
else if(key>arr[mid])
min = mid+1;
else
return mid;
}
return -1;
}
======================================
问题:
System.out.println('a')和System.out.println('a'+1)的区别.
答: 前者输出字符a, 后者对'a'自动类型转换成int型后加1, 输出98.
======================================
老毕说:
* 代码仅仅是思想的一种体现形式而已.
======================================