java学习收获
1、java环境以及工具
java的跨平台原理
java源代码(java文件)经过编译器编译为Java字节码(class文件),再通过Java虚拟机(JVM)实现跨平台。
JVM是一个运行java字节码的虚拟计算机系统,他有一个解释器组件,可实现java字节码和计算机操作系统之间的互通,不同的运行平台,有不同的JVM。
java的垃圾回收器(GC)
不在使用的内存空间进行回收,消除了java程序员清理垃圾的责任。
jdk(开发工具集)
包含jre(运行时环境),api(应用程序编程接口);
jre主要有三个功能:加载代码,校验代码,执行代码:
api:java.exe编译器 javac.exe解释器 javadoc.exe文档化工具。
环境变量
配置path环境变量,是为了可以在window下的文件夹内访问并运行jdk,JAVA_HOME的目的是避免版本的更迭带来的修改不变,但本质相同。
2、java基础语法
基本数据类型
变量的分类
成员变量:类对象的属性,位于类内部,方法外部定义的变量;
局部变量:方法或语句块中的变量;
变量调换小练习:
public static void main(String[] args) {
int a=1;
int b=2;
System.out.println("交换前:a="+a+" "+"b="+b);
a=a+b;
b=a-b;
a=a-b;
System.out.println("交换后:a="+a+" "+"b="+b);
}
运算符
算术运算符,赋值运算符,关系运算符,逻辑运算符,三目运算符,字符串连接符。
转义字符
3、流程控制
顺序语句
分支语句
if
if(num<0) {
System.out.println("积分错误!");
}
else if(num<2000) {
System.out.print("打9折,");
money*=0.9;
}
else if(num<4000) {
System.out.print("打8折,");
money*=0.8;
}
else if(num<8000) {
System.out.print("打7.5折,");
money*=0.75;
}
else {
System.out.print("打7折,");
money*=0.7;
}
switch
switch(month) {
case 1:day=31;break;
case 2:day=28;break;
case 3:day=31;break;
case 4:day=30;break;
case 5:day=31;break;
case 6:day=30;break;
case 7:day=31;break;
case 8:day=31;break;
case 9:day=30;break;
case 10:day=31;break;
case 11:day=30;break;
case 12:day=31;break;
}
循环语句
for(初始条件;判断;变量操作){语句块;},先初始化,再判断;
do{语句块} while(t判断条件),先执行一次语句块,再判断;
while(判断条件){语句块},先判断,再执行,可以与for相互转换;
退出一层循环:break与continue
退出多重循环:
示例:
int[] s={1,2,3,4,6};
hh:for(int i:s)
for(int j:s){
System.out.println(i+","+j);
//此时的break退出二重循环
break hh;
}
4、数组
数组定义
int[] nums1=new int[10];
//再赋值
int[] nums2={1,2,3,4);
int[] nums3=new int[]{1,2,3,4};
遍历数组
int[] nums= {1,2,3};
for(int i=0;i<nums.length;i++) {
System.out.println(nums[i]+" ");
}
冒泡排序
算法思想:遍历依次比较前后大小,如果前一个数大于大于后一个数,交换,一次确定一个数的位置;
for(int i=0;i<nums.length;i++) {
for(int j=0;j<nums.length-1;j++) {
if(nums[j]>nums[j+1]) {
int temp=nums[j];
nums[j]=nums[j+1];
nums[j+1]=temp;
}
}
}
二分查找
算法思想:利用顺序表的随机存取,查找中间数,下标由最大下标和最小下标控制;
while(low<=high) {
mid=(high+low)/2;
if(a[mid]>n) {
high=mid-1;
}
else if(a[mid]<n) {
low=mid+1;
}
else if(a[mid]==n)
return mid;
}
//小白进阶中…