unit1 Java基础
1.Java语言跨平台性:面向对象+跨平台
JDK:程序开发工具包,开发 = JRE+使用的工具
JRE:运行环境,运行 = JVM+核心类库
JVM:虚拟机,翻译,jvm是各自的
JDK》 JRE》 JVM
2.JDK下载:JDK安装-》配置环境变量-》
javac就是编译:javac S.java java就是系统程序:java S
3.命名:类HelloWorld 变量名:helloWorld 方法名:同变量名
关键字:硬定义,完全小写,颜色花色
标志符:自定义,英文,数字,$,_ 不可以数字开头
常量:字符串,整数,浮点数,字符,布尔(true,false),空(null)
String""中间可以为空也可以什么都没有,char‘ ’中间可以是空格但是不能什么都没,并且有且只能有一个
空常量不可以直接打印输出:sout(null);
变量:int a = 10; 先赋值(=)再使用,byte和short的右边数值不可超过左边数据类型范围,float=F,long=L,可以通过一个语句创建多个变量但是不推荐(int a,b,c; a=1; b=2; c=3; int q=1,b=2,c=3; )
数据类型:基本数据类型:(整数)byte1 -short2 -int4 -long8 (浮点) -float4 -double8 (字符) -char2 (布尔) -boolean1
引用数据类型:String 类,数组,接口
数据类型转换:隐式转换,自动类型转换,低到高,数据范围从小到大:byte1 -short2 -int4 -long8 -float4 -double8
显式转换,强制类型转换,反之,数据范围从大到小:int num = (int) 100L;// (强转的类型)long->int
意外:数据溢出整数,精度损失小数;数据范围与字节数不一定相关
ASCII编码:byte, short, int, 都可以数据运算的,但是运算时先提升成为int类型,再运算
如果没有超过左侧范围,编译器补上强转 如果超过,编译器报错 编译器javac,编译器的常量优化
运算符:算术运算符(类型不统一时自动跟大,一般默认int类型。+, -, *, /, %(mod) 。++a,先加再用。a++,先用再加。)
赋值运算符(=,+=,-=,*=,/=,%=)其中隐含了强转,只可以用于变量 三元运算符(条件,二选一,if-else,A ? a : b)
比较运算符(==相等 =赋值 。结果一定是boolean类型,一步只判断一个,不可以连着写 1<X<3)
逻辑运算符(&与 ||或 !非 ,只有它是一元运算符 短路??)
优先级:增量减量》算术》比较》逻辑》赋值
对于String字符串,+代表连接;自增自减只可以用在变量;
4.方法:主方法:public static void main(String args[]){ } 定义方法后,先调用再执行 方法不可以嵌套或者包含!
定义:public static void run(){} 调用:run(); 执行:
流程控制:顺序结构:
选择结构:if(布尔类型) if-else(可以和三元运算符替换) if-else if-else if-else(执行n+1) switch(){case: break;....;default:break;}
default就是收尾,最后一个break最好不要省略;case:XX后面不可以重复 ;switch(byte,short,char,int,String,enmu)
循环结构:for( 初始化表达式;布尔表达式;步进表达式 )
while(条件表达式) do-while(先执行再判断,二次执行)
foreach()????? 循环嵌套
break打断,continue跳过当前 死循环(Ctrl+C,强制停止)-------while(true){...}
for循环:for(初始化表达式;布尔表达式;步进表达式) for(int i = 1; i <= 100; i ++){ ... }
while循环:初始化表达式; //初始化语句 int i = 1;
while(布尔表达式){ //条件判断 while(i <=100){
循环体; //循环体 ....
步进表达式; //步进语句 i++;
} //类似于for循环 }
do-while循环:初始化表达式; int i = 1;
do { do {
循环体; ....
步进表达式; i ++;
} while (条件判断); } while (i <=100) ;
三者区别:从未满足时,for,while,0次 do-while,至少1次
使用:次数确定用for 反之用while
5.集成开发环境IDE介绍,IntelliJ IDEA:Module--src---package---class
psvm sout Alt+F4=Run Alt+Enter=mix Ctrl+/=单行注释
6.方法回顾详解:例子:
* 三要素:
* 返回值类型:不用返回值,用void就行
* 方法名称:sum
* 参数列表:打印的次数,用int count
有参无参:(String args[]) ()
有返回值无返回值:有的话有return无void,反之。。无参只能单独调用就是void
调用:单独调用:方法名称(参数);void只能进行单独调用
打印调用:sout(方法名称(参数));
赋值调用:数据类型 变量名称 = 方法名称(参数);
找到方法----参数传递----执行方法体-----带着返回值回到方法的调用处(return)
7.方法重载:Overlord,功能类似的方法,可以进行同名方法,参数个数/或者类型/或者次序/不同
8.数组:Array,引用数据类型,类型统一,长度不能随意改变
数组初始化:动态给长度,静态给内容,且动态初始化有自动的默认值
创建数组:int[] arrayA = new int[3]; //动态定义 int[] arrayB = new int[] {1,2,3,4}; //静态定义===int[] arrayC = {1,2,3,4};
静态初始化:(array)直接打印数组名称,得到的是数组内存 的hash值 (array[3])数组索引值从0开始,打印第四个
动态初始化:其中元素将会自动拥有一个默认值
内存划分:栈stack 堆heap 方法区method
问题:数组索引越界异常:ArrayIndexOutOfBoundsException
空指针异常:NullPointerException,原因是忘了new
长度:A.length 数组一旦创建,程序运行期间,长度不可以改变
遍历:for循环遍历数组 for(..) { sout (array[i]); } 快捷键:array.fori
最值:max min
元素反转:交换
作为方法参数传递:printArray(int[] array){}
作为方法返回值:return array;
9. 补充:
进制转换,,,,,,,,存储单元(1Byte==8bit)
命令提示符cmd:cd ..返回上一级 cd 返回根 dir查看文件夹 cls清空 exit退出
打开文件拓展名,,,,,,,,,方便修改