JAVA基础知识笔记

------- android培训java培训、期待与您交流! ----------



JAVA基础部分笔记总结

 

1.  Java开发环境搭建

 1.1环境搭建方法:

     (1):右键计算机选择属性-高级系统设置-计算机系统-高级-环境变量,然后在用户变量中点击新建,在弹出的菜单中变量名中填写path, 

变量值中填写你所安装的jdkjavac.exe路径,然后确定即可

 

 (2):临时用户变量及在dos命令行中设置的.格式为:set path=bin目录路径

如 图:

临时变量只在当前窗口有效,关闭即消失作用

1.2 PathClasspath的作用:

1.2.1 Path:是指java开发工具的文件路径

(1) 没有设置path情况下.开发工具只能在所安装的目录执行 其他路径执行javac则报错.

(2) 安装后path环境变量,系统默认当前目录去找,当前目录不存在会按照path路径中去找

1.2.2 Classpath:是运行字节码文件工具所在的路径

 (2)没有配置classpath环境变量,java虚拟机只在当前目录下查找要运行的类文件。

 (3)配置好classpath环境变量分2种情况:

 第一值的结尾处如果加上分号,那么JVMclasspath目录下没有找到指定的类文件,会在当前目录下在查找一次。

 第二值的结尾出如果没有分号,那么JVMclasspath目录下没有找到要指定的类文件,不会在当前目录下查找,即使当前目录下有,也不会运行。

1.2.3JAVA_HOME的设置方法和作用

作用:  为了不因为jdk的目录或者目录名称的改变,而不断更改path的值,而导致对path变量值的误操作 

设置方法:  新创建一个环境变量 JAVA_HOME 记录住jdk的目录,在path中通过%%动态的获取JAVA_HOME的值即可。

编写一个简单的java程序

 class HelloWorld

{

public static void main(String[] args)

{

System.out.println("传\n智\n播\n客");

System.out.println("传智播客");    

}

}

3 Jdkjre的区别:

Jdk是提供给程序员使用的java开发工具集并且包含jre,安装jdk之后不必在安装jre

Jre是包含了jvm及其java程序所需要的核心类库 

4. 常见错误提示:

4.1 找不到文件

(1) 文件名错误

(2) 扩展名隐藏

4.2 找不到main函数

(1) 没写main函数,编译可以通过,但是无法运行

(2) main函数写错

    4.3 软件包不存在

(1) 软件报名写错,注意大小写

   

5关键字和标识符:

关键字java赋予特殊含义的单词,所有字母都是小写的

标识符有数字1~9,字母a~z,下划线_,美元符号$等组成注意不能以数字开头,不能是java关键字

在一个成员函数调用的外面写一个try语句,在这个成员函数内部写另一个try语句保护其他代码。每当遇到一个try语句,"异常"的框架就放到堆栈上面,直到所有的try语句都完成。如果下一级的try语句没有对某种"异常"进行处理,堆栈就会展开,直到遇到有处理这种"异常"try语句。 

 6.进制类型

二进制:  10组成,逢二进一

八进制:  1~7组成,逢八进一,开头用0表示

十进制:  1~9组成,逢十进一

十六进制:1~9A~F组成 逢十六进一,开头以0x开头

7进制转换:

十进制转二进制2取模

二进制转十进制乘以的幂

十进制转八进制8取模

八进制转二进制:从后往前,三位八进制对应一个二进制.

十六进制转二进制:可以先转成十进制在转成二进制

二进制转十六进制:四位二进制可以转为一位十六进制

负数的二进制表现形式是该数的整数的二进制取反加一

8常量

常量

整型

长整型

单精浮点

双精浮点

布尔

字符型

所占字节

4

8

4

8

1

2

所占位数

32

64

3

64

8

16

整型:4个字节

长整型8个字节

单精度浮点型:4个字节

双精度浮点型 占8个字节

布尔型占一个字节

字符型2个字节

9变量

J ava中的变量只能存储同一种类型的值,是不可以被改变的

10数据类型

  基本数据类型:

   数值型 (byte short int long)

   字符型 (char)

   浮点型 (float double)

   Boolean (true false)

  引用数据类型

接口

数组

11运算符

  算术:  +  -  * /   %

   赋值 : = , += , -=, *=, %=

   比较: > ,  < ,   >=, <=

   逻辑: &, &&, |, ||

   位运算符: ^ | & ,<< ,>> ,>>>(无符号右移,前面补零)

一个数被别的数异或2,等于这个数本身

12判断语句

If(条件表达式){System/out.println();//输出语句}

----------------------------------------------------------------

If(条件表达式){System/out.println();//条件为真执行这条语句

else{System/out.println();//条件为家执行这条语句}

----------------------------------------------------------------

If(){} 

else if(){} 

else{}

//先判断第一个if 语句,不符合再判断第二个else if,都为假执行最后一条else

例子程序:

class IfDemo 

{

public static void main(String[] args) 

{

int x= 8;

/*

//双或方式判断月份是什么季节

if(x==3||x==4||x==5) 

{

System.out.println("春天");

}

   

else if(x==6||x==7||x==8) 

        {

System.out.println("夏天");

}

else

{

System.out.println("秋天");

}

   */

//双与形式判断月份属于什么季节

  if(x<1&&x>=12)

  {

System.out.println("非法输入");

  }

 

  else if(x>=3&&x<=5)

   {

   System.out.println("春天");

   }

   else if(x>=6&&x<=8)

   {

   System.out.println("夏天");

   }

   else if(x>=9&&x<=12)

   {

   System.out.println("秋天");

   }

  else 

  { 

  System.out.println("冬天");

  }

}

注意:Byte-short-char-int- float-long-double 从小到大排序

-----------------------------------------------------------------

13小练习

1. 用最有效的方法算出2*8的代码

  2<<3  (因为计算机直接能计算二进制数据)

2. 2个变量的值进行互换(三种方法)

  (1)第一种方法使用第三方变量

class demo

{  public static void main(String[] args)

{

    Int X = 3, Y= 6;

   Int temp;

   Temp= x;

   X=y;

       Y=temp;

System.out.println(”X=”+x+”y=”+y)

  }

}

(2)第二种方法位运算 (一个数异或2次还等于这个数本身)

Int a=6 ,b=3;

X = x^y;

Y=x^y;

X=x^y;

(3)第三种方法和方式

Int x=6 ,y=3;

X= x+y; //x= 6+3=9;

Y=x-y; //y =9-3=6;

X=x-y; //;x=9-6=3

14 循环语句:

  14.1 选择结构

Switch()

Case  1:{}

Case  2:{}

Default{}

14.2 While循环

(1)While(条件表达式){条件为真执行此方法体}

(2)Do{无论条件是否为真,都先执行一处}

      While()

14.3For循环

(1)For(;;){}//条件符合一直循环执行

(2)For(;;){for(;;){}} 外边先判定是否满足条件,满足之后进入里面的for循环,内循环执行 完之后在跳出内循环 进入外循环

13.4 Break和 continue

 break : 是结束本次循环

 Continue: 是结束本次循环进行下一次循环

----------------------------------------------------------------------------------------------------------------------

15小练习:

第一题:

    考试成绩分等级。

90~100 A等。

80-89 B等。

70-79 C等。

60-69 D等。

60以下 E等。

   请根据给定成绩,输出对应的等级。

class TestDemo 

{

public static void main(String[] args) 

{

 

   int x= 80;

   if (x>=90&&x<=100)

   {

   System.out.println("分成绩为A");

   }

   

   else if (x>=80&&x<=89)

   {

   System.out.println(x+"分成绩为B");

   }

   else if (x>=70&&x<=79)

   {

   System.out.println(x+"分成绩为C");

   }

   else if (x>=60&&x<=69)

   {

   System.out.println(x+"分成绩为D");

   }

   else if(x<60)

   {

   System.out.println(x+"分成绩为E");

   }

   

   else

   {

System.out.println("输入不合法");

   }

}

}

---------------------------------------------------------------------------------------------------------------------- 

  第二题:

  打印出所有的"水仙花数"

  所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。 

  提示:

  1:采用循环取得所有的三位数。(三位数指的是100-999之间的数)

  2:把每个三位数的个位,十位,百位进行分解。

  

 

for (int x=99; x<1000 ;x++ )

{

//获取百位,十位,个位上的数字

int a = x/100;

int b = x/10%10;

int c = x%10;

    //获取到的三个数字立方和等于这个三位数

if (x==a*a*a+b*b*b+c*c*c)

//if(x==(Math.pow(a,3)+Math.pow(b,3)+Math.pow(c,3)))

 

System.out.println(x);

}

//System.out.println(a);

//System.out.println(b);

//System.out.println(c);

------------------------------------------------------------------------------------------------------------------- 

第三题:

5的阶乘。

提示:5的阶乘就是:5*4*3*2*1

  

int sum=1;

for (int a =1; a<=5; a++)

{

     sum *=a;

//System.out.println(sum);

}

System.out.println(sum);

 ----------------------------------------------------------------------------------------------------------------------

第四题:

韩信点兵。

刘邦和韩信的故事,这个大家都知道把。

刘邦当时问了韩信一句,如果带兵,我可以带多少人,你可以带多少人。

韩信答曰:大王最多十万,而韩信则是多多益善。

从此以后啊,刘邦就对韩信怀恨在心,有一次,刘邦和韩信聊天,看到面前有一大队士兵,刘邦就问:你能准确的说出这里有多少士兵吗?韩信想了想:说,可以。

接着,他就让士兵每3个人一排,结果余下2人;每5个人一排,结果余下3人;每7个人一排,结果也是余下2人。

然后,他微笑的告诉了刘邦士兵的人数。刘邦大为震惊。

请问如果这群士兵人数在0-1000之间,那么,这群士兵可能有多少人呢?

提示:这个故事纯属杜撰,不用去查,做题即可。

看红色部分,想想什么意思。想明白了题目就非常简答了。

 

for (int x=0;x<1000 ;x++ )

{

if(x%3==2&&x%5==2&&x%7==2)

   System.out.println(x);

}

----------------------------------------------------------------------------------------------------------------------

第五题:

我国最高山峰是珠穆朗玛峰,8848米。现在我有一张足够大的纸,它的厚度是0.01米。请问,我折叠多少次,可以折成珠穆朗玛峰的高度。(思考题)

 int count=0;//折叠次数

 for(double x=0.01;x<8848;x*=2)

 {

  count++;

  }

System.out.println(count);

 

16. 选择排序:

----------选择排序就是第一个数字一次与后面数字比较,在第一位上可以得出最大数或者最小数,然后在从第二位数字依次与后面的数比较....知道比较完成位置 即可完成数组排序

示例小程序:

class SelectDemo 

{

public static void main(String[] args) 

{

int[] arr = {12,3,8,5,2,32,11,23,15};//定义一个数组

select(arr)//调用比较大小的函数

select(arr);// 专门封转一个比较函数,直接调用即可,方便复用

print(arr);

   

}

public static void select(int[] arr)

{
//for循环特点:外圈取值一次,内循环跑一圈

for (int x=0;x<arr.length ;x++ )

{

for (int y=x+1;y<arr.length ;y++ )

{

if (arr[x]>arr[y])

{

//x角标对应的元素比y角标对应的元素值大,那么就换位

int temp = arr[x];

arr[x] = arr[y];

arr[y] = temp;

}

}

//System.out.print(arr[x]+",");

}

}

  public static void swap(int[] arr,int a,int b)

{

int temp = arr[a];

arr[a] = arr[b];

arr[b] = temp;

}

//此函数作用是加前后中括号,元素之间的逗号 并且最后一个元素后面不能跟逗号,还有一个功能是遍历排好序的数组,并打印

   public static void print(int[] arr)

   {

System.out.print("[");

for(int x =0;x<arr.length;x++)

   {

if(x==arr.length-1)//若是最后一个元素,那么就直接打印不需要逗号,否则打印逗号

System.out.print(arr[x]);

else

System.out.print(arr[x]+",");

   }

       System.out.print("]");

   }

  

}

     

   

17. 冒泡排序

  //冒泡排序 “其实是相邻的2个数字比较,取大数或者最小值往后放,每次得出一个最值,取得的值不必在比较,前面的数组直到比较完成即完成了排序

public static void main(String[] args) 

{

int[] arr = {4,71,31,2,8,5,9,11};

bubbleSort(arr);

printArr(arr);

}

 

public static void bubbleSort(int[] arr)

{

   for(int x = 0 ; x < arr.length - 1 ;x ++)

{

        for(int y=0; y < arr.length-1 ;y++)

{

//若前一个元素比后面一个元素大,那么交换位置,

if(arr[y] > arr[y+1])

{

  int temp = arr[y];

          arr[y] = arr[y+1];

          arr[y+1] = temp;

}

}

    }

}

public static void printArr(int[] arr)

{

System.out.print("[");

for(int x = 0 ; x < arr.length ;x++)// 0 1 2 3 length = 4

{

//当循环变量 到达数组最大索引,不打印逗号

   if(x == arr.length - 1)  /

   System.out.print(arr[x]);

   else

   System.out.print(arr[x]+"");

}

System.out.println("]");

}

 

18. 反转

   //反转就是把原数组倒着打印出来,不必排序

public static void main(String[] args) 

{

 int[] arr = {8,5,3,4,56,6,13,43,25};

 fanzhuan(arr);

 printArr(arr);

}

public static void fanzhuan(int[] arr)

for (int start=0,end=arr.length-1;start<end ;start++,end--)

{

if (arr[start]<arr[end])

{

int temp=arr[start];

arr[start]=arr[end];

arr[end]=temp;

}

}

}

public static void printArr(int[] arr)

{

System.out.print("[");

for (int x=0;x<arr.length;x++ )

{

if (x==arr.length-1)

System.out.print(arr[x]);

else

System.out.print(arr[x]+",");

}

System.out.println("]");

}

*/

19  折半查找

//折半查找是取中间值进行与要查询的元素比较,比此元素大,那么取数组后一半,比元素小,取数组前一半,等于每次把数组砍掉一半,提高了查询的效率,注意,数组需要是有序的才可以使用这个方法,否则是不准确的 

public static void main(String[] args) 

{

 int[] arr = {1,2,3,4,5,6,7,8};

 

// printArr(arr);

int index = search(arr,6);

System.out.println("index="+index);

}

public static int search(int[] arr,int key)

//定义数组开始 中间 最后指针

 int min=0;

 int max=arr.length-1;

 int mid=(min+max)/2;

 //如中间值不等于要查询的数值,那么进入while循环继续查找

 while (arr[mid]!=key)

 {

  if (key>arr[mid])//如果要找的值大于数组中间的值,那么就看数组后面的一半,从中间值后面一位开始,mid+1

 

 min= mid+1;

 

 else if (key<arr[mid])//如果要查询的值小于了数组中的中间值,那么就看数组前面一半,最大指针等于中间mid-1

 

 max = mid-1;

 

 

    if (min>max)//如果小指针大于了大指针,即说明数组中没有这个元素,直接返回-1

     return -1;

2mid=(min+max)/2;//否则直接中间值就是要查询的元素 返回即可

 }

 

return mid;

}

public static void printArr(int[] arr)

{

System.out.print("[");

for (int x=0;x<arr.length;x++ )

{

if (x==arr.length-1)

System.out.print(arr[x]);

else

System.out.print(arr[x]+",");

}

System.out.println("]");

}

20. 查表法

   public static void main(String[] args)

{

//制作表

toBin(60);

 

}

 

public static void toBin(int num)

{

    //制作一个表

char[] chs = {'0','1'};

//定义一个存储容器

char[] arr= new char[32];

//定义一个指针

int pos=arr.length;

 while (num!=0)

 {

 int temp = num&1;

 arr[--pos]=chs[temp];

 num = num>>>1;

 }

 

//for循环遍历数组

 

 for (int x=pos;x<arr.length ;x++)

 {

 System.out.print(arr[x]);

 }



21. 维数组

 

 数组中的每一个元素都是数组,这样的数组就是多维数组。

int[][] arr = { { 1, 2, 3 }, { 4, 5 }, { 6, 7, 8, 9 } };

定义二维数组arr, 其中有三个元素都是数组第一个数组3个元素第二个2个元素第三个4个元素.


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值