框架
//import *** //调用库
public class Example{
public static void main(String args[]){
//在此编码;
}
}
输入
Scanner是JDK1.5新增的一个类,可以使用该类创建一个对象:
import java.util.Scanner; //调用库
Scanner reader = new Scanner(System.in); //创建类对象
然后就可以用reader对象调用方法,读取用户在命令行输入的基本类型数据:
nextBoolean()
nextByte()
nextShort()
nextInt()
nextLong()
nextFloat()
nextDouble()
字符与字符串的输入
next().charAt(0); //字符输入,这个是最简单的字符输入了
next(); //字符串输入,遇到空格或者换行结束
nextLine(); //输入一行字符串,可以包括空格
示例:
import java.util.Scanner;
public class Example_1{
public static void main(String args[]){
Scanner reader = new Scanner(System.in);
int num = reader.nextInt(); //int型输入
String s = reader.next(); //字符串输入,遇到空格或换行结束,
char c = reader.next().charAt(0); //字符输入
输出
System.out.println(); //换行
System.out.print(); //输出后不换行
输出格式跟C++一样,用+连接
示例:
int num = 3;
System.out.println("数值:" + num);
//>>数值:3
还有格式输出用%占位符,例:
int num = 1;
float f1 =2.1f;
System.out.println("整数:%d\n小数:%f",num,f1);
标识符
标识符:在程序中自定义的一些名称。
标识符的组成:标识符由26个英文字母大小写,数字:0-9,符号:_$组成。
在使用标识符的时候有四点规则需要你遵守:
1. 标识符可以由字母、数字、下划线(_)、美元符($)组成,但不能包含 @、%、空格等其它特殊字符,不能以数字开头。如:123name就是不合法的。
2. 标识符不能是 Java关键字和保留字,但可以包含关键字和保留字。如:不可以使用 int作为标识符,但是 myint可以。
3. 标识符是严格区分大小写的。
4. 标识符的命名最好能反映出其作用,不然名字多了会混肴,推荐用下划线_
字符与字符串
字符用单引号’ ’
字符串用双引号" "
用关键字char声明char型(字符型)变量;
对于char型变量,分配2个字节内存,占16位,取值范围:0~65535(Unicode个数);
转义字符:
\n(换行),\b(退格),\t(水平制表),\'(单引号),\"(双引号),\\(反斜线)等。
字符串声明用String
对于字符串可用charAt() 方法可返回指定位置的字符,如
String str;
str = reader.next();
for(int i=0;i<str.lenght();i++){
System.out.println(str.charAt(i));
}
运算符
注:Java里^不是乘方的意思,而 ^ 是按位 异或运算。
还有个注意的是三目条件运算,示例:
int a = 4;
int b = 8;
int c;
a > b ? c=a : c=b;
//(关系表达式) ? (true语句) : (flase语句);
数组
int a[]; //声明数组
a = new int[4]; //创建数组,给a分配空间,长度为4的int型数组
//int a[4]; //不能这样,Java不允许在声明数组中的方括号内指定数组元素的个数。
int a[] = new int[4] //声明与创建可一块
int item[] = {1,2,3,9,22}; //在声明的时候赋上初值,用大括号{}
int [] a,b,c[]; //一次声明多个数组,其为a[],b[],c[][]
//int[] a;与int [] a;与int[]a;一样没差别,空格无关
int size = 20;
float num[] = new float[size]; //java允许用int变量值指定数组长度
String s[] = {"ab", "abc", "cd"}; //字符串数组
//注:数组索引还是从0开始,跟C语言一样
length使用
float a[] = new float[13];
//数组a每个元素初始为0.0
float b[][] = new float[3][6];
System.out.println(a.length);
//>>13
System.out.println(b.length+","+b[].length);
//>>3,6
转换数据类型
整数可以跟浮点数、char型转换,但浮点数不能跟char转换;
用括号把类型括住放在数据前,示例:
int n1 = 3;
System.out.println((float)n1);
//>>3.0
float n2 = 7.7F;
//float n2 = (float)7.7;
//定义float型浮点数时要在数后面加上F或f,或者上面注释那个也可以,两者等价
//一般写个浮点数都要考虑这个是float(带上F或(float)),还是double型
System.out.println((int)n2);
//>>7
int a = 1.1; //有的编译会出错,不兼容类型
int a = (int)1.1; //这样就没问题了
int b = '9'; //没问题!,每个字符在Unicode中都有个位置与之对应
初始值
类中成员变量定义后会有初始值;数组new(创建)后也有初始值
数组初始化
创建数组后,系统会给数组的每个元素一个默认的值,
float型是0.0
int型是0
char型什么都没有,空(对应编号:0)
String型时null
boolean型是false
main函数变量无默认值
main函数定义的变量系统不会给默认值,在使用变量之前,必须保证变量有具体的值
不然就会出错:
在类中局部变量也是一样道理
为对象分配空间
如果成员变量在声明时没有指定初值,构造方法中也没有对成员变量进行初始化操作,那在创建对象时,系统会给其成员变量默认值:
float型是0.0
int型是0
boolean型是false
引用型(相当于指针地址),默认初始:null
构造方法
类中构造方法的名字必须与它所在的类的名字完全相同,而且没有类型。允许在一个类中编写若干个构造方法。
class Point(){
int a;
int b;
Point(){ //是构造方法
a = 1;
b = 3;
}
Point(int x, int y){ //是构造方法
a = x;
b = y;
}
void Point(int n1,int n2){ //不是构造方法(该方法类型是void)
a = n1;
b = n2;
}
//使用:
Point p1 = Point();
//使用Point类中Point()构造方法,即p1.a=1,p1.b=3
Point p2 = Point(2,5);
//p2.a=2
//p2.b=5
p2.Point(10,12); //使用实例方法
//p2.a=10
//p2.b=12
如果类中没有编写构造方法,系统会默认该类只有一个无参数的构造方法;
如果类中定义一个或多个构造方法,那Java不提供默认的构造方法。
类变量与类方法
用static声明的是类东西(静态),不然就是实例东西(实例变量、实例方法);
还有个构造方法:
名字必须与类名相同;
可多个(重载);
构造方法没有返回值;
类变量和类方法可以用类名和对象调用;
类变量的值共享;
类方法的入口被所以对象共享(对象名调用类方法)
实例方法中可以操作类变量;
实例方法不能通过类名调用,只能通过对象调用;
类方法不可以操作实例变量;(因为在对象创建之前,实例变量还没有分配空间。
在类被创建时类变量和类方法就被分配了空间,故在没创建对象之前都可以用类名调用类变量和类方法(有默认值)
对于静态方法块,在类被加载的时候运行且只运行一次