(一)基本语法与运算符
来源:互联网 发布:人邮学院网络课程 编辑:程序博客网 时间:2024/05/22 02:21
一,基本常识
1.1. 编译相关命令
javac
编译Java文件javac -encoding
编译Java文件,指定编码方式javadoc -d mydoc -author -version 1.java
生成Java Doc
1.2. 关于源文件
- 注释:
//单行注释
/* 多行注释 */
/** 文档注释 @author @version @param */
- 源文件以.java结尾,其中可以有多个class,但只有一个public class 且与文件名相同。
- class中可以有静态main()方法,其格式固定。
- 注意识别关键字(关键字都是小写)
1.3. 关于标识符命名规范
- 标识符(可以自己命名的),对变量,方法,类,接口的命名等。
- 数字不可开头,区分大小写,不可含空格。
- 只能包含 A~Z,a~z,0~9,_,$
- 包名:全小写,xxyyzz
- 类名,接口名:首字母大写 XxYyZz
- 变量,方法名:首字母小写,后面大写,xxYyZz
- 常量名:所有字母大写,且用 ‘_’ 连接,XX_YY_ZZ
二,数据类型及运算
2.1基本数据类型
2.1.1. 基本数据类型说明:
- byte(1byte) , short(2byte) , int(4byte) , long(8byte)(L)
- 二进制表示(0B),十进制表示,八进制表示(0),十六进制表示(0x)
- float(4byte)(F) double(8byte)
- char(2byte)
- boolean(true or false);
2.1.2. 引用数据类型:
class
自定义类interface
自定义接口String
自定义字符串数组
自定义数组
2.1.3. 基本数据类型注意事项
- 字符串与基本数据类型之间的运算只能是连接运算
- 变量格式:数据类型 变量名 = 初始化值
- 隐式转换:byte,short,char==>int==>long==>float==>double,此逆过程需强制转换。
- 不同进制之间的转换方式:2进制,八进制,十进制,16进制。(计算机内部以补码形式存储)
2.2 运算
2.2.1算数运算符及其优先级:
2.2.2 关于运算的几点注意事项
- java中传递机制:值传递
- 如array2=array1//把array1的栈空间地址值传递给栈空间的array2
- 逻辑运算符:&,&&,|,||,!,^
- 位运算符:&,|,~(反码),^(异或),>>,>>>(无符号右移),<<
- 比较运算符:== > < <== instanceof(类关系判定运算)
- 对于“==”符号的使用:
- 对于基本数据类型,为判断值是否相等,两端数据类型可以不同
- 对于引用数据类型,a1.equals(a2)默认判断地址值,等同于a1==a2,如需要判断内容,需要重写equals()方法。
- 像String 包装类 File类Date类,这些类重写了Object类的equals()方法,从而可以直接用来比较实体内容。
三,流程控制
3.1 判断结构
if(){//TODO}else if(){//TODO}else{//TODO}//先判定case,若无break,则从接口处往下执行//switch中可判断:byte short char int 枚举 String(jdk1.7) switch(){case a: //TODO break;case b: //TODO break;default: //TODO break;}
3.2. 循环结构
/*break:结束循环或switchcontinue:在循环中结束当次循环break label:结束lable指定的循环continue label:结束指定当次循环*///变量可以定义在内部for(int i=0;i<len;i++){ //TODO if(){ break;//结束循环 }else if(){ continue;//结束当次循环 }}label_name:for(;;){ for(;;){ if(){ break label_name;//结束label_name指定的循环 }else if(){ continue label_name;//结束label_name指定的当前循环 } }}//变量定义在外部while( ){ //TODO}//判定之前先执行一次循环体do{ //TODO}while();
四,数组:
4.1 数组声明:
String[] name1;//方括号可以放在变量名前int name2[];//方括号可以放在变量名之后int [][] name2d;//定义多维数组
4.2 初始化:
//静态初始化,创建的时候就知道大小及其内容name1=new String[]{"A","B","C"};//一维name2d=new int[][]{{"A","B"},{"B","C"}}//多维//动态初始化,之后为每个数组元素赋值name2=new int[4];//一维name2[0]= ;name2[1]= ;...//动态初始化多维数组//每个次级数组大小相同,类似于矩阵name2d=new int[m][n];//每个次级数组大小也可以不同name2d=new int[m][];name2d[0]=new int[n0];//之后为每个次级数组定义长度name2d[1]=new int[n1];...//数组长度的获取name1.lengthname2d.length//获取最高级数组长度name2d[i].length(第i+1个最高级数组元素索引的次级数组长度)
4.3 关于数组的注意事项
- 对于byte short int long 默认初始化值为0
- 对于float double 默认初始化值为0.0
- 对于char 默认初始化值为空格
- 对于boolean 默认初始化值为false
- 对于引用类型变量,如String,默认初始化值为null
- 一维数组可以使用for循环遍历,二维数组可以使用嵌套for遍历
- 一维或多维数组在内存中的结构:栈(stack)存对象的引用,堆(heap)存对象数据
4.4. 数组常见异常:
- 下标越界:
java.lang.ArrayIndexOutOfBoundsException
int [] a =new int[3]; System.print.out(a[3])//a的最大索引为2,此时会产生下标越界
- 空指针异常:
java.lang.NullPointerException
//1.数组名的栈空间为nullint a=new int[3];a=null;//将a的栈空间地址变为null//2. 数组值为null时调用方法Sring b=new String[3];//此时b[2]的堆空间地址默认为nullb[2].toString(); //3. 在指针无法指向的地方赋值int c=new int[3][];//在堆空间创建三个null,即没定义次级指向地址c[2][0]=2;//直接给次级指向地址赋值,出现异常
- 对于以上的异常,理解数组在栈堆的存放机制便可轻易理解。
4.5 数组的常用算法:
4.5.1 求max,min,avg,sum
略
4.5.2 copy:
int[] array=new int[j.length];for(int i=0;i<array.length;i++){ array[i]=array1[i];}
4.5.3 反转:
//第一种方法:for(int i=0;i<array.length/2;i++){ int temp=array[i]; array[a]=i[array.length-1-i]; array[array.length-1-i]=temp;}//第二种方法:for(int x=0,j=array.length-1;x<y;x++,y--){ int temp=array[x]; array[x]=array[y]; array[y]=temp;}
4.5.4 排序
4.5.4.1 插入排序
- 直接插入排序
- 折半插入排序
- shell排序
4.5.4.2 交换排序
- 冒泡排序(从左到右,两两对比,大(小)的放后面)
for(int i=0;i<array.length-1;i++){ for(int j=0;j<array.length-1-i;j++){ if(array[j]>array[j+1]){ int temp=array[j]; array[j]=array[j+1]; array[j+1]=temp; } }}
- 快速排序(或分区交换排序)
4.5.4.3 选择排序
- 直接选择排序(最左边的数依次跟右边的数对比,一轮后最小(大)的在左边)
for(int i=0;i<array.length-1;i++){ for(int j=i;j<array.length;j++){ //如果发现右边有更小的,互换 if(array[i]>array[j]){ array[i]^=array[j]; array[j]^=array[i]; array[i]^=array[j]; } }}
- 堆排序
4.5.4.4 归并排序
4.5.4.5 基数排序
0 0
- (一)基本语法与运算符
- 黑马程序员——Java基本语法(一):关键字、标识符、常量与变量、运算符
- EL表达式的基本语法 []与.运算符 操作符
- Java基本语法--运算符
- C#笔记(1)--->基本语法 [运算符]
- C#笔记(1)--->基本语法 [运算符]
- C#笔记(1)--->基本语法 [运算符]
- PHP基本语法、变量、数据类型、运算符
- Python基本语法_运算符详解
- 第一章 基本语法-2运算符
- Swift语法_基本运算符
- Java基本语法-----java运算符
- 基本语法1-运算符_练习
- JavaScript 基本语法(运算符,语句,函数)
- Java 基本语法----进制、运算符
- Matlab学习笔记(一)Matlab基本运算及语法
- Matlab入门教程--基本运算与函数(一)
- [java语法]基本语法(2)运算符
- 如何给自定义listview设置监听事件
- 硬链接和软链接的区别(转)
- 阻塞队列
- 《Java编程思想》——初始化与清理(一)读书笔记
- 在编译安装好的php基础上安装php扩展
- (一)基本语法与运算符
- TensorFlow安装指南(Centos 7&Windows)及DCGAN demo测试
- Vim查找替换及正则表达式的使用
- Android科大讯飞语音听写实现
- codeforces 549A Face Detection
- herbinate session 批量插入数据
- 全球年薪最高的这群人,每天只睡4小时!
- MySQL错误号码2003 Cant connect to MySQL server localhost 0
- Android新手入门关于XML的问题积攒