Java入门

一、初学程序框架

public class 类名{
	public static void main(String[] args){
	
}

二、输入要加的内容

import	java.util.Scanner;//输出要引的位置
Scanner input = new Scanner(System.in);
int num = input.nextInt();//不同数据类型的输入要用的方法?名不一样
char chara = input.next().charAt(0);//返回输入字符串第0个位置的字符
/*该句也可分为两个语句来写
String str1 = input.next();
char chara = str1.charAt(0)

*/
String stra = input.next();
/*
String next() 
查找并返回此扫描仪的下一个完整令牌。 
double nextDouble() 
将输入的下一个标记扫描为 double 。  
float nextFloat() 
将输入的下一个标记扫描为 float 。  
int nextInt() 
将输入的下一个标记扫描为 int 。  
int nextInt(int radix) 
将输入的下一个标记扫描为 int 。  
String nextLine() 
将此扫描仪推进到当前行并返回跳过的输入。  
long nextLong() 
将输入的下一个标记扫描为 long 。  
long nextLong(int radix) 
将输入的下一个标记扫描为 long 。  
short nextShort() 
将输入的下一个标记扫描为 short 。  
char charAt(int index) 
返回 char指定索引处的值  eg:
*/

三、有符号的右移:补全空位的时候补符号位
eg:负数的符号位是1,补全空位的时候补1;
正数的符号位是0,补全空位的时候补0。
无符号的左右移,补全空位的时候全部补0。
负数的表示:对应正数取反加1 ,即为补码。

四、负数怎么求正数:
1、找出对应的十进制正数:
减一、取反即为对应十进制正数。然后添上负号

五、取随机数:
1、随机数生成方法:
java下有个Math 类,该类里有个方法叫random()。
在这里插入图片描述

int num1 = Math.random();//取0.0-1.0之间的小数随机数
int num2 = Math.random*6;//取0.0-6.0之间的小数随机数
int num3 = (int)Math.random*6;//取0-5之间的整数随机数
int num4 = (int)Math.random*6+1;//取1-6之间的整数随机数
int num5 = (int)Math.random*a+b;//取[b,a+b]之间的整数随机数

六、判断输入的数据是否为所需数据

if(input.hasNextInt()==true);//判断输入的是否为整数
/*
boolean hasNextByte(int radix) 
如果扫描仪输入中的下一个标记可以使用 nextByte()方法解释为指定基数中的字节值,则返回true。  
boolean hasNextDouble() 
如果扫描仪的输入中的下一个标记可以使用 nextDouble()方法将其解释为双重值,则返回true。  
boolean hasNextFloat() 
如果扫描仪输入中的下一个标记可以使用 nextFloat()方法将其解释为浮点值,则返回true。  
boolean hasNextInt() 
如果此扫描仪输入中的下一个标记可以使用 nextInt()方法解释为默认基数中的int值,则返回true。  
boolean hasNextInt(int radix) 
如果此扫描仪输入中的下一个标记可以使用 nextInt()方法解释为指定基数中的int值,则返回true。  

*/

七、break跳出的只有离自己最近的循环
1、

for(i=1;i<5;i+++{
	while(i==3)
		break;//这里的break只会跳出while 不会结束for
}

2、要让break跳出指定循环 需要在循环外面加标签
continue 同理。

	outer1:
	for(i=1;i<5;i++{
		outer2:
		for(j=1;j<5;j++)
		{	
			while(i==5)
				break outer1;//这里的break会结束标签outer1后面的第一个循环
		}
	}

八、方法 和C中函数类似
语法:【修饰符1 修饰符2】 返回值类型 方法名 (形参列表){
方法内容
}
注:java中 一切传递都是值传递。

public static int add(int num1,int num2){
	int sum =0;
	sum= num1+num2;
	return sum;
}

方法的重载:
含义:指一个类中,可以定义多个具有相同方法名,但形参列表不同的方法。
本质:重载的方法,实际确实是不同的方法,只是名称相同。调用时会根据不同的方法名调用不同的方法。
注:1、只有返回值不同的方法不构成方法重载;
2、只有形参的名称不同,不构成方法的重载;
3、形参列表不同指:(1)个数不同,(2)顺序不同,(3)类型不同。

add();add(int num);//个数不同
add(int num1,double num2);add(double num1, int num2);//顺序不同
add(int num1);add(double num2);//类型不同

九、java数组用法
1、声明

int arr[];//int [] arr 两种写法都对
		int arr [] = new int []{12,3,7,4,8,125,9,45};//静态赋值 
		//注:不能写作int arr[]= new int[3]{1,2,3};会报错
		/*
			int arr [] = new int [8];
			arr[0]=12;
			arr[1]=3;
			arr[2]=7;
			arr[3]=4;
			arr[4]=8;
			arr[5]=125;
			arr[6]=9;
			arr[7]=45;  动态赋值
		
		*/

2、创建

arr = new int [10];//创建

注:声明和创建也可以一起写:

int arr[] = new int [10];

3。属性
arr.length 可以直接调用数组的长度;

System.out.println(+arr.length);//输出数组的长度

4、 数组在方法中的调用

	public static int getMaxNum(int arr[]){
		int max=0;
		for(int i=0;i<8;i++){
			if(arr[i]>max)
				max= arr[i];	
		}
		return max;
	public static void main(String[] args){
		int arr [] = new int []{12,3,7,4,8,125,9,45};
		
		int num = getMaxNum(arr);//这里注意arr传的是该数组首地址的地址值 
								 //不能写作int num = getMaxNum(arr[]);
		System.out.println("最大的数是"+ num);
	}
		
	}

十、增强for循环
定义:
for(ElementType element : arrayName){
}

理解为:for each element in arrayName do{…} 注:操作的element 是数组里的值 而非单纯的变量i

eg:

int[ ] num = new int [6] {1,2,3,4,5,6};
for(int i:num){
	System.out.print(i);
}

特点:
1、写起来形式简便
2、遍历集合、数组等容器比较简单
3、无法获取具体数组位置,无法在循环内更改数组长度。

十一、可变参数
定义:
1、提供了一个方法,使参数的个数可变
int…num
double…num
boolean…num
eg:

public static void main(Strint [] args){
	method01(10);				
	method01();					//报错
	method01(20,30,40);			//报错
	method01(new int []{11,12,13,14});//报错
	method02(10);				
	method02();				// 输出-----2
	method02(20,30,40);		// 输出-----2
	method02(new int []{11,12,13,14});// 输出-----2
}
public static void method01(int num){
	System.out.print("-----1");
}
public static void method02(int...num){
	System.out.print("-----2");
}

2、方法内部对可变参数的处理跟数组是一样的
eg:

public static void method1(int ...num){
	for(int i:num){			//num作为数组名进行操作
	System.out.print(i+"\t");//遍历输出数组中的数
}
}

3、可变参数和其他数据一起作为形参的时候 可变参数一定要放在最后
eg:

public static void main(String []args){
	
}
public static void method1(int...num1,int num2){ //报错
	for(int i:num1)
	System.out.print(i+"\t");
	System.out.println();
	System.out.print(num2);
}
public static void method2(int num2,int ...num1){//编译成功
	for(int i:num1)
	System.out.print(i+"\t");
	System.out.println();
	System.out.print(num2);
} //输出一个num2 剩的作为num1数组中的值输出

十二、Arrarys类中提供的对数组的操作方法
注:

import java.util.Arrays;

1、讲数组arr1转换成对应的字符串形式 : Arrays.toString()
在这里插入图片描述

	System.out.print(Arrays.toString(arr1));//将数组arr1转换成对应的字符串形式

控制台输出结果

2、二分搜索指定值的下标/二分搜索指定范围内的值的下标(前提是数组有序):
Arrays.binarySearch(byte[] a, byte key) ;
Arrays.binarySearch(byte[] a, int fromIndex, int toIndex, byte key);

3、数组排序
Arrays.sort(byte[] a) ;
Arrays.sort(byte[] a, int fromIndex, int toIndex) ;

4、数组的复制
int newarr[]=Arrays.copyOf(boolean[] original, int newLength) ; 用newLength长度复制原数组成新的数组,超出的长度用0填充

5、数组的范围复制
int newarr[] =Arrays.copyOfRange(boolean[] original, int from, int to) ;

6、判断两个数组的值是否一样
equals(byte[] a, byte[] a2) ;

7、指定数组复制
System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length) ;
将源数组从 srcPos开始复制length长度到 dest数组 的destPos开始;

十三 二维数组的初始化和遍历
1、静态初始化
除了用new关键字来产生数组以外,还可以直接在定义数组时就位数组元素分配空间并赋值。
eg:

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

2、动态初始化
数组定义与数组元素分配空间并赋值的操作分开进行。
eg:

int [][] arr = new int[3][];//本质上定义了一个一维数组长度为3,每个内存空间中放入的是一个数组
arr[0]={1,2};
arr[1]=[3,4,5,6];
arr[2]={34,35,36};

eg:

int [][]arr = new int [3][2];//本质上定义了一个一维数组,长度为3,每个数组内存中有一个长度为2的数组
arr1[1]= {1,2,3,4};//该定义将上述数组的第二格改成了{1,2,3,4}

3、默认初始化
数组是引用类型,他的元素相当于类的实例变量。因此数组一经分配空间,其中的每个元素也被按照实例变量同样的方法被隐式初始化。

4、二维数组的遍历

int[][] arr = new int[3][];
int [] a1={1,2,3};
arr[0]= a1;
arr[1] =  new int []{4,5,6,7};
arr[2] =  new int []{9,10};
for(int i=0;i<3;i++){//双层for循环 遍历
	for(int j= 0;j<arr[i].length;j++)
		System.out.print(arr[i][j]+"\t");
 }
System.out.println();

forint i=0;i<arr.length;i++{//外层for内存增强for遍历
	for(int num:arr[i]){
	System.out.print(num+"\t");
}
}
System.out.println();
forint []a:arr){//外层增强for 内层普通for遍历
	for(int i=0;i<a.length;i++){
		System.out.print(num+"\t");
}
System.out.print(num+"\t");
}
forint []a: arr){ //外层内层都是增强for循环遍历.对arr进行遍历 遍历出来每一个元素都是一个一维数组
	for(int num:a){
		System.out.print(num+"\t");
	}
System.out.print(num+"\t");
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值