Java - 第一天

java的基本组成单元是类,每一个应用程序都必须包含一个main()方法,含有main方法的类成为主类。每一个类可以有一个main方法。这是一个常用于对类进行单元测试的技巧。

文件名必须与public类的名字相匹配,在一个文件中,只能有一个公共类,但可以有任意数目的非公共类。

package Number;
public class First{
    String s="你好";//实例变量
    static String s1 = "你好";//静态变量
    public static void main(String[] args){
        String s2 = "Java";
        System.out.println(s1);
        System.out.println(s2);
     }
}

 

全局变量(成员变量)定义在类体中,局部变量定义在方法体中。

 

成员变量分为静态变量和实例变量,静态变量的有效范围可以跨类,甚至可以达到整个应用程序之内,“类名.静态变量”在其他类使用。

局部变量只在当前代码块中有效,当与成员变量同名时,成员变量暂时失效。

十进制不能以0开头,八进制必须以0开头,十六进制必须以0X或0x开头,小数默认为double型。

常量的声明:

final 数据类型 常量名称(大写)[=值]

逻辑运算:逻辑非(!)

逻辑与 “&&”(短路)、“&”(非短路) 真真真

逻辑或 “||” 假假假

位运算:按位取反(~)、按位与(&)、按位或(|)、按位异或(^)同假异真。

移位操作:“<<”(左移,空位补零,相当于乘2)、“>>”(右移,补最高位,相当于除以2)、“>>>”(无符号右移,没有“<<<”运算符)

三元运算符:

boolean b = 20<45?true:false;//格式(条件式?值1:值2)

运算符优先级(由高到低):增量和减量运算、算术运算、比较运算、逻辑运算、赋值运算。

数据类型转换:可以将任意数据类型转换为String类型

                        隐式类型转换(由低级到高级):byte<short<int<long<float<double

                        显式类型转换

代码注释://(单行注释),/* */(多行注释),/** */(文档注释)

注:Java语言的基本数据类型中并没有String类型。

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

格式化输出:

System.out.printf("Hello,%s,you are %d" , name , old);

读取输入:

package lin;
import java.util.*;
public class han{
	public static void main(String[] args){
		Scanner in = new Scanner(System.in);
		System.out.println("what name?");
		String name=in.nextLine();
		System.out.println("how old?");
		int old = in.nextInt();
		System.out.println("...");
	}
}

当时输入密码时引入Console类报错如下:

http://blog.chinaunix.net/uid-24386107-id-3394236.html

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

switch多分支语句中表达式的值必须是整型、字符型或字符串型。

foreach语句都可改写为for语句,foreach并不是一个关键字。

格式:
    for(元素变量x:遍历对象 obj){
        引用了x的java语句;
}

break 只能跳出一层循环,但java提供了“标签”功能:

标签名:循环体{
    break 标签名;
}

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

字符串(只能初始化后才能使用):

String s = new String("good");

字符串的连接(“+”运算符):连接其他类型时会自动转换。

获取字符串长度:str.length();

字符串查找(若找到均返回首字母索引,否则返回-1):indexOf(String s)(若为空字符,则返回0)、lastIndexOf(String s)(若为空字符,则为字符串长度)。

获取指定索引位置的字符:str.charAt(int index)

字符串操作:

    获取子字符串:str.substring(int beginIndex)

                            str.substring(int beginIndex,int endIndex)

    去除空格:str.trim()

    字符串替换:str.replace(char oldChar,char newChar)

    判断字符串的开始与结尾:str.startswith(String prefix)

                                            str.endswith(String suffix)

    判断字符串是否相等:比较运算符“==”比较的是两个字符串的地址是否相同。

String tom = new String("I am a student");
String jerry = new String("I am a student");
boolean b = (tom==jerry);//结果为false

                                    equals()方法比较的是两个字符串是否具有相同的字符和长度:

str.equals(String oterstr)
str.equalsIgnoreCase(String oterstr)//忽略大小写

    按字母顺序比较两个字符串:

str.compareTo(String otherstr)//返回值,小于返回-1、大于返回1、等于返回0

    字母大小写转换:str.toLowerCase()、str.toUpperCase

    字符串分割:

str.split(String sign)//如果想定义多个分隔符,使用符号“|”
str.split(String sign,int limit)
public static void main(String[] args){
        String str = "196.3246.6652";
        String[] firstArray = str.split("\\.");//转义
        String[] secondArray = str.split("\\.", 2);
        System.out.println("str的原值为["+str+"]");
        for (String a:firstArray) {
        	System.out.println("["+a+"]");
        }
        for (String b:secondArray) {
        	System.out.println("["+b+"]");
        }
     }

    格式化字符串:

str.format(String format,Object…args)

    日期和时间字符串格式化

    正则表达式

    字符串生成器(如果在程序中频繁地附加字符串,如果附加的字符超过可容纳的长度时自动增加长度):

StringBuilder bf = new StringBuilder("StringBuilder")
bf.append(content);
bf.insert(int offset arg);
bf.delete(int start,int end);
System.out.println(bf.toString())//转化为字符串输出

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

数组(每个元素具有相同的数据类型,基本类型不是对象,但由基本数据类型构成的数组是对象):

一维数组

I.创建一维数组:

    1.先声明,再用new运算符进行内存分配(使用new时初始值均为零):

数组名字 = new 数组元素的类型[数组元素的个数]
arr = new int[5];

    2,声明的同时为数组分配内存(常用):

数组元素的类型 数组名字 = new 数组元素的类型[数组元素的个数]
int month[] = new int[5]

II.初始化一维数组:

int arr[]=new int[]{1,2,3,4,5}

int arr2[] = {1,2,3,4,5}//常用

二维数组

    1.二维数组的创建

a=new int[2][4];

a=new int[2][];
a[0] = new int[2];
a[1] = new int[3];

    2.二维数组的初始化(对于整型自动赋值为零)

type arrayname[][]={value1,value2...};

    3.二维数组的使用

public static void main(String[] args){
        int a[][]=new int[3][4];
        for(int i=0;i<a.length;i++) {
        	for(int j=0;j<a[i].length;j++) {
        		System.out.print(a[i][j]);
        	}
        	System.out.println();//换行
        }
     }

数组操作

用foreach遍历数组:

public static void main(String[] args){
        int a[][]= {{4,3},{1,2}};
        System.out.println("数组中的元素是:");
        int i=0;
        for (int x[]:a) {
        	i++;
        	int j=0;
        	for(int e:x) {
        		j++;
        		if(i == a.length && j==x.length) {
        			System.out.print(e);
        		}else {
        			System.out.print(e+"、");
        		}
        	}
        }
     }

填充替换数组元素:

fill(int[] a,int value)
fill(int[] a,int fromIndex(包括),int toIndex(不包括),int value)
package first;
import java.util.Arrays;//导入类

public class tt {
	static String s1 = "你好";
    public static void main(String[] args){
        int arr[]=new int[] {45,12,10};
        Arrays.fill(arr,1,2,8);
        for(int i:arr) {
        	System.out.println(i);
        }
     }
}

对数组进行排序:

Arrays.sort(object)//根据升序排序

复制数组:

copyOf(arr,int newlength)
copyOfRange(arr,int fromIndex(包括),int toIndex(不包括))

数组查询:

binarySearch(Object[],Object key)
binarySearch(Object[],int fromIndex,int toIndex,Object key)

数组排序算法(冒泡、选择、快速):

    1.冒泡排序:

package first;

public class tt {
	public static void main(String[] args){
        int[] array= {63,4,24,1,3};
        tt sorter = new tt();//创建冒泡排序类的对象
        sorter.sort(array);
     }
	
	public void sort(int[] array) {
		for(int i=1;i<array.length;i++) {
			for(int j=0;j<array.length-i;j++) {
				if(array[j]>array[j+1]) {
					int temp=array[j];
					array[j]=array[j+1];
					array[j+1]=temp;
				}
			}
		}
		showArray(array);	
	}
	
	public void showArray(int[] array) {
		for(int i:array) {
			System.out.print("<"+i);
		}
	}
}

    2.直接选择排序:

package first;

public class tt {
	public static void main(String[] args){
        int[] array= {63,4,24,1,3};
        tt sorter = new tt();
        sorter.sort(array);
     }
	
	public void sort(int[] array) {
		int index;
		for(int i=1;i<array.length;i++) {
			index=0;
			for(int j=1;j<=array.length-i;j++) {
				if(array[j]>array[index])
				{
					index=j;
				}
			}
			int temp=array[array.length-i];
			array[array.length-i]=array[index];
			array[index]=temp;
		}
		showArray(array);	
	}
	
	public void showArray(int[] array) {
		for(int i:array) {
			System.out.print("<"+i);
		}
	}
}

3.反转排序(只需循环数组长度的一半)

package first;

public class tt {
	public static void main(String[] args){
        int[] array= {10,20,30,40,50,60};
        tt sorter = new tt();
        sorter.sort(array);
     }
	public void sort(int[] array) {
		System.out.println("数组原有内容:");
		showArray(array);
		int temp;
		int len=array.length;
		for(int i=0;i<len/2;i++) {
			temp=array[i];
			array[i]=array[len-1-i];
			array[len-1-i]=temp;
		}
		System.out.println("数组反转后内容为:");
		showArray(array);
	}
	public void showArray(int[] array) {
		for(int i:array) {
			System.out.print("\t"+i);
		}
		System.out.println();
	}
}

从n个数中随机选出k个数:

package lin;
import java.util.*;
public class han{
	public static void main(String[] args){
		Scanner in = new Scanner(System.in);
		
		System.out.print("how many ?");
		int k = in.nextInt();
		
		System.out.print("what highest ?");
		int h = in.nextInt();
		
		int[] numbers = new int[h];
		for(int i=0;i<numbers.length;i++) {
			numbers[i]=i+1;
		}
		int[] result = new int[k];
		for(int i=0;i<result.length;i++) {
			int r=(int)(Math.random()*h);
			result[i]=numbers[r];
			numbers[r]=numbers[h-1];//避免重复筛选
			h--;
		}
		
		Arrays.sort(result);
		System.out.println("Bet the fowllowing combination. It'll make you rich !");
		for(int i:result) {
			System.out.print(i+" ");
		}
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值