黑马程序员-Java学习笔记之容易让人忽视的环境变量配置和语法基础

------ Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------


这是我第二次学习基础知识了,第一次学习的时候其实并没有做什么详细的笔记,都是跟着视频敲着代码。当时感觉学的很不错,但是当我今天第二次打开基础部分的时候,发现这部分知识对我来说已经有些生疏了。所以真是应了一句老话“好记性不如烂笔头”。所以我觉得黑马强调的博客总结真的很有必要,一方面可以加深自己的理解和记忆,一方面又可以方便自己日后的复习。所我的第一篇Java学习总结来啦,哈哈! Finghting!

一,Java的环境变量配置:

相信很多新手第一次配置环境变量的时候都是查了好久的度娘。其实我也是,黑~而且在配置完以后可能很多人都不会去想为什么要去配置它呢?

其实原因很简单:

我们在编写完一个Java程序是会用到Javac和java命令进行编译和运行。而我们配置环境变量的目的就是要把jdk的bin目录下的工具(也就是javac等)路径告诉系统,当我们使用者些工具的时候,系统就会根据我们配置的环境变量去找这些工具。这样就可以让这些工具在任意目录下运行。

环境变量的配置:
永久配置方式:JAVA_HOME=%安装路径%\jdk

path=%JAVA_HOME%\bin

我们知道path有很多系统级的变量配置,如果我们JDK的路径发生改变,那么就会修改path中的配置。但是这样做是很不安全的,因为修改的时候很可能会把其他的系统配置改掉。所以我们自己建一个变量把JDK的安装路径%安装路径%jdk这一部分单独拿出来,这样当JDK路径发生改变时,我们只要修改自己设置的JAVA_HOME就可以了,提高了安全性。

临时配置方式:

set path=%path%;d:\java\jdk\bin

环境变量的特点:系统会先去当前路径下查找,如果没有再去path中查找。

二,语法基础

1,关键字:就是java语言中赋予了特殊含义的单词。比如:public(权限修饰符).

保留字:就是目前还没有被赋予特殊含义,但是准备日后要使用的单词。比如;const.

2,标识符:就是程序中自定义的名词。比如:类名,变量名,函数名。包含0-9,$, _,a-z.

小贴士:数字不可以用作开头,不可以使用关键字。

3,常量:就是在何处呢个序中不会变化的数据。

★4,变量:其实就是内存中的一个存储空间用于存储常量。

作用:方便于运算。因为有些数据不确定,所以确定该数据的名词和存储空间。

特点:变量空间可以重复使用。

变量空间的格式:变量类型 变量名=初始化值;

变量的作用域:

成员变量:从定义的位置开始到类的大括号结束,也就是在整个类中有效。

局部变量:从定义的位置开始,到变量所在的大括号结束。

变量的生命周期:

从定义的位置开始在内存中存活,到达它所在的作用域的时候在内存中消失。

5,数据类型:

基本数据类型:byte,short ,char,int float,long,double,boolean.

 引用数据类型:类,数组,接口。

基本数据类型级别: byte(8) short(16) char(16) 这三个平级,int(32)-->float(32)-->long(64)-->double(64);

基本数据类型转换:

自动转换:由低级别到高级自动转换。

强制转换: 由高级别到低级别需要强转。

6,运算符号

算数运算符:+ -* / % ++ --.

小贴士:任何整数模2不是0就是1,送一只要改变被模数就可以实现开关运算。

赋值运算符:= += -= *= /= %=

比较运算符:><>=<= 特点:结果是boolean型,不是true就是false.

逻辑运算符:& | ^ ! && ||

&和&&的区别:&两边都进行判断,&&如果左边为false,那么右边不参与运算。

|和||的区别:|两边都进行判断,||如果左边为true,那么右边不参与运算。

位移运算符:& | ^>> << >>>  

小贴士:一个数异或同一个数两次,那么不变,还是原数。

7,语句

if switch while do while for

break:用于循环语句和 Switch,用于跳出。当用于循环嵌套时,只会跳出当前循环,如果要跳出指定循环,需要给循环进行标号。

break单独存在时,后面不可以跟其它语句,因为执行不到。

continue:用于循环语句,结束本次循环,继续下一次循环。continue单独存在时,后面不可以跟其它语句因为执行不到。

8,函数

函数的定义:其实我也说不好,我们知道为了提高代码的复用性,可以把代码封装起来定义一个功能,而这个功能在java中的体现之一就是函数,那么函数就是一个功能一个方法。

函数的定义格式;

修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2...)

{

执行语句;

return 返回值;}

当函数没有具体返回值时,返回值类型可以用关键字void表示。

如果函数的返回值类型是void时,reurn语句可以不写,系统会自动帮你加上。

return作用:结束功能,结束函数。

如何定义一个函数?

1,首先要明确函数执行完后的结果,也就是在明确函数的返回值类型。

2,在实现该功能的过程中是否有未知内容参与了运算,也就是在明确函数的参数列表(参数类型 参数个数)。

函数的作用:定义功能,提高代码的复用性。

小贴士:函数中只能调用函数,不能定义函数。

主函数:

1,它是程序执行的入口。

2,保证该类的独立运行。

3,它被jvm调用。

函数定义名称的作用:

1,对该功能进行标示,方便调用。

2,明确该函数的功能,提高代码的阅读性。

重载:在一个类中如果出现了两个或者两个以上的同名函数,只要它们的参数个数或者参数类型不同,就可以称之为该函数重载了。

重载只看参数列表,与返回值类型无关。

9,数组

引用数据类型,用于存储同一类型数据的容器,好处在于可以给该容器中的数据进行标号,从0开始。

数组的两种表现形式:

动态:元素类型[] 变量名=new 元素类型[元素个数];

静态:元素类型[] 变量名={元素1,元素2,...}

元素类型[] 变量名=new元素类型{元素1,元素2,...};

二维同理。

数组长度的获取:

int [] arr1={,2,3,4,5,};

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

int len1=arr1.length;//这里不要和字符串混淆,length是数组的属性。字符串中是用的length()方法。

int len2=arr2.length;//二维数组的长度。

int len3=arr[0].length;//二维数组中第一个一维数组的长度。

数组的遍历:

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

{

System.out.println(arr[x]);}//打印数组还有一种就是Arrays中的Arrays.toString(arr1)。二维:Arrays.deepToString(arr2);

}

数组重要的方法:

排序:选择排序,冒泡排序。

Example:选择排序。


import java.util.*;
class PaiXuDemo
{
	public static void main(String[] args)
	{
		int[] arr={8,9,6,7,4,2,3,5,1};
		xuanZe(arr);
		System.out.println(Arrays.toString(arr));//打印数组。
	}
	public static void xuanZe(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])//如果大于则交换两个元素的位置
					swap(arr,x,y);

			}
		}
	}
	//定义一个方法用于交换数组中两个元素的位置。
	public static void swap(int[] arr,int x,int y)
	{
		int num=0;
		num=arr[x];
		arr[x]=arr[y];
		arr[y]=num;
	}

}



Example:冒泡排序。


import java.util.*;
class PaiXuDemo
{
	public static void main(String[] args)
	{
		int[] arr={8,9,6,7,4,2,3,5,1};
		maoPao(arr);
		System.out.println(Arrays.toString(arr));//打印数组。
	}
	public static void maoPao(int[] arr)
	{
		//对数组进行排序。
		for(int x=0;x<arr.length-1;x++)
		{
			for(int y=0;y<arr.length-1-x;y++)
			{
				if(arr[y]>arr[y+1])//如果大于则交换两个元素的位置
					swap(arr,y,y+1);

			}
		}
	}
	//定义一个方法用于交换数组中两个元素的位置。
	public static void swap(int[] arr,int x,int y)
	{
		int num=0;
		num=arr[x];
		arr[x]=arr[y];
		arr[y]=num;
	}

}




查找:折半查找。

Example:

class HalfSearchDemo
{
	public static void main(String[] args)
	{
		int[] arr={1,2,3,4,5,6,7,8,9,};
		int index=halfSearch_1(arr,8);
		System.out.println(index);
		System.out.println("Hello world");
	}
	//注释:(1):折半查找
	public static int halfSearch(int[] arr,int key)
	{
		int min=0;
		int max=arr.length-1;
		int mid=(min+max)/2;
		while(arr[mid]!=key)
		{
			if(key>arr[mid])
				min=min+1;
			else
				max=mid-1;
			if(min>max)
				return -1;

			     mid=(min+max)/2;
		}
		return mid;
	}
	//注释;(2):折半查找;
	public static int halfSearch_1(int[] arr,int key)
	{
		int min=0,max=arr.length-1,mid;
		while(min<=max)
		{
			mid=(min+max)>>1;
			if(key>arr[mid])
				min=min+1;
			else
				if(key<arr[mid])
				max=min-1;
			else
				return mid;

		}
		return -1;
	}
	//插入位置
	public static int halfSearch_2(int[] arr,int key)
	{
		int min=0,max=arr.length-1,mid;
		while(min<=max)
		{
			mid=(min+max)>>1;
			if(key>arr[mid])
				min=min+1;
			else
				if(key<arr[mid])
				max=min-1;
			else
				return mid;

		}
		return min;
	}
}








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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值