------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
以下内容为本人观看黑马程序员毕向东老师java基础视频及张孝祥老师java高新技术视频所整理的内容。
一、java语言入门
Java语言的基本组成:关键字,标识符,注释,常量与变量,运算符,语句,函数和数组,这里介绍了java语言里面基础的知识,一些值得注意的地方已用红字标出。
class
{
public static void main(String[] args)
{
//定义变量的格式;
//数据类型 变量名 = 初始化值;
int x = 4;
byte b = 2; //-128~127;
short s = 30000;
long l = 41;
float f = 2.3f;
double d = 34.56;
char ch = '4'; //占两个八位
String s = "4";
boolean b = true;
}
}
class YunSuanFu
{
public static void main(String[] args)
{
int x = 4270;
x = x/1000*1000;
System.out.println(-1%5);
int a = 3,b;
a++;//a = a+1;
b = ++a;
//字符串数据和任何数据使用+都是相连接,最终都会变成字符串。
System.out.println("5+5"+5+5);
}
}
位运算符直接对二进制进行运算
/*
练习:
1,最有效率的方式算出2乘以8等于几?2<<3;
分析:2乘以8,即为二进制是逢2进一,8是2的3次方,所以要进三次,也就是在2的基础上
左移三位,如果不好理解的话可以把2想象成10,10的3次方是1000,需要计算10*1000的值,
是不是需要在10的基础上要左移三位?所以要想到用位运算符计算2*8应该是最有效率的。
2的二进制表现形式 0000-0000 0000-0000 0000-0000 0000-0010
左移三位 0000-0000 0000-0000 0000-0000 0001-0000
其结果为 十进制的 16
2,对两个整数变量的值进行互换(不需要第三方变量)
分析: int x = 6;
int y = 3;
想要把x和y的值调换,除了借助第三方变量以外还可以用到位运算符的异或:相同出0,不同出1
根据此特征可知 x^y^x = y; 可用x或者y其中的一个变量先记录住x^y的值,那么只要知道另一个的值
就可以再异或x^y的值推出另一个值
*/
class WeiYunSuan
{
public static void main(String[] args)
{
System.out.println(2<<3);
int x = 6;
int y = 3;
x = x^y; //x = 6^3 = 110^011 = 101
y = x^y; //y = 101^011 = 110 = 6
x = x^y; //x = 101^110 = 011 = 3
System.out.println("x="+x);
System.out.println("y="+y);
}
}
格式:(条件表达式)?表达式1:表达式2
如果条件为true,运算后结果是表达式1;
如果条件为false,运算后结果是表达式2;
例如:
int x=3,y=4,z;
z = (x>y)?x:y; 先判断x是否大于y,大于,则将x赋值给z,不大于,将y赋值给z,
即z存储的是x和y中的最大值;
if语句特点:
1,每一种格式都是单条语句。
2,第二种格式与三元运算符的区别:三元运算符运算玩要有值的出现
3,条件表达式无论写成什么样子,只看最终结果是true还是false
选择结构特点:
1,switch语句选择的类型只有四种:byte,short,int,char
2,case之间与defult没有顺序,先执行第一个case,没有匹配的case执行defult
3,结束switch语句有两种情况:遇到break,执行到语句结束。
4,如果匹配的case或defult没有对应的break,那么程序会继续向下执行,运行可以执行的语句,直到遇到break或者switch结尾结束
break(跳出),continue(继续)
/*
需求:定义一个功能,可以实现两个整数的加法运算。
分析:
该功能的运算结果是什么?两个数的和,也是一个整数(int)
在实现该功能的过程中是否需要有未知内容参与运算?加数和被加数是不确定的。
(两个参数int,int)
*/
class SumDemo
{
static int getSum(int x,int y)
{
return x+y;
}
public static void main(String[] args)
{
System.out.println(getSum(3,5));
}
}
数组的定义:
数组的内存结构图:
//数组常见操作:遍历
class ArrayDemo3
{
public static void main(String[] args)
{
//数组的操作;
//获取数组中的元素,通常会用到遍历。
int[] arr = new int[3];
//数组中有一个属性可以直接获取到数组的长度,length
//使用方式:数组名称.length =
System.out.println(arr.length);
int sum = 0;
for(int x=0;x
/*
给定一个数组{5,1,6,4,2,8,9}
1,获取数组中的最大值,以及最小值。
*/
class ArrayTest
{
/*
获取数组中的最大值。
思路:
1,获取最值需要进行比较。每一次比较都会有一个较大的值。因为该值不确定。
通过一个变量进行临时存储。
2,让数组中的每一个元素都和这个变量中的值进行比较。
如果大于了变量中的值,就用该变量记录较大值。
3,当所有元素都比较完成,那么该变量中存储的就是数组中的最大值了。
步骤:
1,定义变量,初始化为数组中任意一个元素即可。
2,通过循环语句对数组进行遍历。
3,在便利过程中定义判断条件,如果遍历到的元素大,就赋值给该变量
需要定义一个功能来完成,以便提高复用性
1,明确结果,数组中的最大元素int。
2,未知内容:一个数组。int[]
*/
public static void main(String[] args)
{
int[] arr = {5,1,6,4,2,8,9};
getMax(arr);
}
public static int getMax(int[] arr)
{
int max = arr[0];
for(int x=1;xmax)
max = arr[x];
}
return max;
}
}
/*
选择排序
*/
class XunZePaiXu
{
public static void main(String[] args)
{
int[] arr = {5,4,6,7,9,2,9};
for(int x=0;x
/*
冒泡排序
*/
class MaoPaoPaiXu
{
public static void main(String[] args)
{
int[] arr = {5,4,6,7,9,2,9};
for (int x=0;xarr[y+1])
{
int temp = arr[y];
arr[y] = arr[y+1];
arr[y+1] = temp;
}
}
}
for(int x=0;x
插入排序和希尔排序
/*
数组的查找操作。
*/
class ArrayTest4
{
public static void main(String[] args)
{
int[] arr = {1,2,3,4,5,6,7,8,9};
int index = getIndex(arr,2);
int index1 = halfSearch(arr,8);
System.out.println(index1);
}
/*
折半查找:提高效率,但必须要保证该数组是有序的数组
*/
public static int halfSearch(int[] arr,int value)
{
for (int x=0;xarr[mid])
{
min = mid;
mid = (min + max)/2;
}
else if(value
二维数组就是数组中的数组
格式1:int[][] arr = new int[3][4] :定义了名称为arr的二维数组,二维数组中有3个一维数组,每个一维数组有4个元素
数组的内存结构图:
/*
int[] x,y[];//此种定义方式x为一维数组,y为二维数组
判断:
a,
x[0] = y; 错误
b,
y[0] = x; 正确
c,
y[0][0] = x; 错误
d,
x[0][0] = y; 错误
*/