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+" ");
}
}
}