GUI
import javax.swing.JOptionPane;
JOptionPane.showMessageDialog(null,消息框内容,消息框头,JOptionPane.INFORMATION_MESSAGE);
//static method
String string=JOpionPane.showInputDialog(null,x,y,JOptionPane.QUESTION_MESSAGE);
int intValue=Integer.parseInt(string);
int option=JOptionPane.showConfirmDialog(null,消息内容);
//option取值:JOptionPane.YES_OPTION(0),JOptionPane.NO_OPTION(1),JOptionPane.CANCEL_OPTION(2)。
System,Math在java.lang包里,不需显式引用。
字符串常量不能跨行。可以分成子串用+号连接。
Console input:
import java.util.Scanner;
Scanner input=new Scanner(System.in);
int num1=input.nextInt();
double num2=input.nextDouble();
//输入可一行或多行
□nextByte(),nextShort(),nextLong(),nextFloat()
□next():空格前。nextLine():读一整行,换行前。且它不能用在其它几个后面。
常量:final double num1=2.5;//final必须声明时赋值
被除数为正时,余数才为正。
星期几问题:今天周二,100天以后周几?(2+100)%7
//周日记0。
浮点数
1、浮点数是粗存储,计算有时会产生误差。1.0-0.9=0.0999999998≠0.1
2、float:10.2f。double:10.2d。
3、5/9=0,5.0/9=0.56。
4、一整数与一浮点数运算,整数自动转为浮点。
现在时间
public static void main(String[] args){
long totalMilliSecond=System.currentTimeMillis();
int offset;//时区偏移量
long totalSecond=totalMilliSecond/1000;
long currentSecond=totalSecond%60;
long totalMinute=totalSecond/60;
long currenteMinute=totalMinute%60;
/*long totalHour=totalMinute/60;
long currentHour=totalHour%24;//格林尼治时间
*/
long totalHour1=totalMinute/60+offset;
long currentHour1=totalHour%24;
System.out.println("Current time:"+currentHour1+":"+currentMinute+":"+currentSecond+"GMT");
}
//eg.北京属于东八时区,时间要在格林尼治时间GMT基础上+8。
Q:用currentTimeMillis显示大写字母。
long second=System.currenTimeMillis()/1000;
int num=(int)(second%26+65);//A-Z为[65,90],加65前为[0,25]即[0,26)才能保证取全。
syso((char)num);
Cast
1、cast不改变本身值。
2、大转小要显式标注。
3、int变char:只留低16位。float先变int再变char。所有数都能cast成char。另一操作数为数字/字符时,当前char将cast为数字。
4、char变数值:存入Unicode值。
5、boolean不能和其它类型任意转换。
‘a'-'A'='b'-'B'=(char)('A'+(ch-'a'))
byte,short,int,long分别占1,2,4,8字节内存。long和float型结尾要加上l,f。char占2字节。
java使用Unicode标准字符集,双字节,可识别65535个字符。Unicode:\u
String后面有数/字符:连成字符串。
随机生成数:Math.random()
|| System.currentTimeMills()%10
if(xxxx);
等价于:if(xxxx){};
结束程序:System.exit(0);
//0表示正常结束
异或:^
逻辑与或是短路的。
控制输出小数位:
eg. System.out.println(int(num*100)/100.0);
or System.out.printf(%b,%c,%d,%5.2f,%7.3e,%s);
//可自动四舍五入
输出%:%%
操作符优先序:
数据类型优先级正比于占用存储空间大小。
a=b+=c=5等价于a=(b+=(c=5))
。令a=b=c=1,赋值后结果:a=6,b=6,c=5。
cmd文件形式输入输出:java Classname < iput.txt > output.txt
循环里声明的变量在loop结束后没法再用。
continue只会出现在loop内。
switch语句表达式的值必须是整型/字符型。
main()是程序开始执行的位置。主方法控制程序流向。
减小误差:先加小的数,后加大的数。
最大公约数:
int gcd=1;
int i=1;
while(i<=num1&&i<=num2){
if(num1%i==0&&num2%i==0) gcd=i;
i++;
}