JAVA学习笔记.docx
《JAVA学习笔记.docx》由会员分享,可在线阅读,更多相关《JAVA学习笔记.docx(44页珍藏版)》请在冰豆网上搜索。
JAVA学习笔记
Day01o(∩_∩)o
1、环境变量
11、BigInteger不会超过的范围
2、myeclipse新建文件步骤:
new.javaproject——new.package——new.class
3、ocjp->ocjd->
4、publicstaticvoidmain(String[]args){//主入口固定格式只有args能变argument的缩写:
变量名
System.out.println("欢迎赵老师");//输出ln表示换行系统输出流system系统类统输出打印
5、运行:
右键runas——Javaapplication
6、java的标识符day01(包名),myfirst(类名),main三个部分组成
7、Java标识符的命名规定:
1.以字母、$、下划线开头,以第二字符开始可以有数字。
2区分大小写
3不能与Java的关键字冲突(打出后红色字体的一般是关键字)
8、Java标识符的命名规范:
(不遵守也没错,但是在平时应该严格规范,养成良好习惯o(∩_∩)o…)
《1包名所有的字母都必须小写。
如:
myfirst
《2类名、接口名每个单词的首字母大写如:
Myfirst
《3方法名、变量名第一个单词全部小写,从第二个单词开始每个单词的首字母大写。
如myFirst
《4常量名所有的字母都大写,单词与单词之间用下划线连接如:
MY-FIRST
《5建议使用具有实际意义的变量名。
EX1:
下面可以作为Java的标识符的有A.C.E.F
A.Wer
B.3hello(不能以数字开头)
C.学生(被认为中文包含在字母中,可以作为开头!
!
!
但是平时不允许写)
D.–wer#(不能用#)
E.Day01
F.My$first
9、Java中的变量:
1.变量的声明必须指定变量的类型。
如:
(Intb;)
2.在方法中声明的变量称为局部变量。
3.局部变量在使用前必须初始化。
4.初始化:
第一次的赋值操作被称为初始化;第二次就只是赋值了(intb;声明
b=4;初始化)
5.变量不能重复定义
10、Jave的数据类型
一.基本类型
类型位范围
整型:
(有符号,区分正负)
Byte8-128~127-2^7~2^7-1
Short16-32768~32767-2^15~2^15-1
Int32-2G~2G-1
Long64-2^63~2^63-1
注意:
1.整型中默认int类型
2.Long可以加后缀L(或l小写L)如:
longI=231L;
3.short除了考试,实际不会用
浮点型
Float单精度32最高位是符号位8位指数位23位是位数表精度
Double双精度64
注意:
1.float可以加后缀F或f;
2.double可以加后缀D或d;
3.浮点型的默认类型为:
double
4.浮点型的运算是不精确的,所以最好不要用浮点型来比较是否相等,可以用它来比较大小
字符类型:
无符号整数类型
Char160~65535
如Charc=’A’;
转义:
‘\n’‘\r’‘\t’‘\s’‘\\’->\
‘8’-‘0’=8;字符8减去字符0,等于int型的8;
布尔类型:
Boolean
True
Flase
注意:
1.true和flase不是Java的关键字,他们是Java的字面量,但是也不能用作Java的标识符。
2.固定不变的量;如int=3中的3
3.java的关键字绝对是小写;如Int就不是
(不同于C++中,Java只有这两个表示,没有1或者0代表对错的表示)
(会字体变红,是“Java的字面量”。
但是和null一起,也不可以做标识符)
二.引用类型
1,Stringstr=“123”;
2,任何类型和字符串相加都将变成字符串类型
Eg:
Strings=1+2+“3”+4+5//3345Strings=1+2+“3”+(4+5)//339
12、java中的类型转换
1.自动类型转换
《1.小范围到大范围可以自动类型转换;如inta=3;
longl=a;
byte–>short–>int–>long–>float–>double
char–>int–>long–>float–>double
double比long范围大,long精度更高
《2整型到浮点型可以自动转换如floatf2=2.3F;
《3在范围内的字面量可以自动类型转换。
如byteb=12;
2.强制类型转换
《1.byte=128超范围;byteb=(byte)128加括号,写转换的类型来解决;得到的结果是b=-128,正变为负了。
所以强制类型转换要慎用。
《2强制类型转换会造成数据的丢失,所以慎用。
使用:
floatf2=2.3F;
intx=(int)f2;得到结果x=2;省去了小数
13、Java的运算符
1.算术运算符+—*/%
字符串不能相减
《1./5/2=2;表整除2/100=02.0/100=0.022d/100=0.02
《2.%取余取模5%2=1;
2.3%1=0.3
m%n{0,n}
负数的余数还是负数
2.比较运算符><>=<===
3.逻辑运算
与&&(短路与)&
或||(短路或)|
4.自增自减运算符
1.inta=3;intb=a++;//a->4b->3
<1.先将a的值赋给a++这个表达式//a++=3
<2再将a的值自增1//a=4
<3将a++的值赋值给b//b=3
2.inta=3;intb=++a;//a->4,b->4
<1先将a自增1
<2再将a的值赋值给++a这个表达式
<3再将++a的值赋值给b。
EX3:
inta=1;a=a++;//a->1
EX4:
inta=3;intx=a+++++a;//a->5x->8
5.三元运算符
1.语法:
布尔表达式?
为true时的值:
为flase时的值;
Inta=4>3?
5:
6;//a->5
IntpageNum=totalNum%10==0?
totalNum/10:
totalNum/10+1;//分页
6.Scanner
<1importjava.util.scanner;打包
<2Scannersc=newScanner(System.in);创建Scanner对象
<3Stringstr=sc.next();从控制台获取字符串System.out.println(str)
<4inta=sc.nextTnt();//从控制台读取int类型的整数
boola=sc.nextBool();//只有char没有这种格式<
EX5:
从控制台输入你的姓名,年龄。
学校,输出:
xxx你好,欢迎你在xx岁这风华正茂的年纪,在xxxxxx校园里,听着赵老师的课。
Scannersc=newScanner(system..in);
System.out.println(“请输入您的姓名”);
Stringname=sc.next();
System.out.println(“请输入您的年龄”);
System.out.println(“请输入您的学校”);
intage=sc.nextInt();
Stringschool=sc.next();
System.out.println(name+“你好,欢迎你在”+age+“岁这风华正茂的年纪,在”school“校园里,听着赵老师的课。
”);
完整代码:
packageday01;
importjava.util.Scanner;
publicclassDemo{
publicstaticvoidmain(String[]args){
Scannersc=newScanner(System.in);
System.out.println("请输入您的姓名");
Stringname=sc.next();
System.out.println("请输入您的年龄");
intage=sc.nextInt();
System.out.println("请输入您的学校");
Stringschool=sc.next();
System.out.println(name+"你好,欢迎你在"+age+"岁这风华正茂的年纪,在"+school+"校园里,听着赵老师的课。
");
}
}
7.if…else
EX6.从控制台输入5个整数,然后输出最小值
完整代码:
packageday01;
importjava.util.Scanner;
publicclassEX6{
publicstaticvoidmain(String[]args){
Scannersc=newScanner(System.in);
System.out.println("请输入五个整数");
inta=sc.nextInt();
intb=sc.nextInt();
intc=sc.nextInt();
intd=sc.nextInt();
inte=sc.nextInt();
intmin=a;
if(bif(cif(dif(eSystem.out.println("最小值为:
"+min);
}
}
HW1利用强制转换,实现四舍五入
思想:
输入一个浮点型数字a,强制转换为整型数b,舍弃了小数点后的数,如2.3就变成了2。
然后用a-b,如果>0.5,可知a小数点后的数在五入范围,则输出b+1。
否则,在四舍范围,输出b。
自己做的结果:
packagezuoye;
importjava.util.Scanner;
publicclasssishewuru{
publicstaticvoidmain(String[]args){
Scannersc=newScanner(System.in);
System.out.println("请输入一个数");
floata=sc.nextFloat();
intb=(int)a;
if(a-0.5>=b)
{
b++;
System.out.println(a+"四舍五入后"+"得到"+b);
}
else
System.out.println(a+"四舍五入后"+"得到"+b);
}
}
老师讲解:
doubled=2.3;inta=(int)(d+0.5)
HW2计算一下出租车的车费,车费由两部分组成,
公里数和等候时间。
0-3公里,收10元;4-15公里,
每公里2元;15公里以上的部分,每公里3元。
等候时间,
每2分半收1元,不足2分半的不收费。
不足1公里的按1公里计算。
车费是公里数钱+等候时间的钱。
比如:
18公里299秒,应收车费:
44
要求:
输入公里数和秒数,输出车费。
自己分析:
S公里数收费a公里数m等候时间n等候时间收费
0~3s=10;
4~15s=10+(a-3)*2
>15s=10+12*2+(a-15)*3
<150sn=0
>150n=m/150
所以:
n=m/150
a如果不是整数要按照intb=(int)a;if(a-b=0)输出b,否则b++
具体实现:
packageshoufei;
importjava.util.Scanner;
publicclassshoufeiwenti{
publicstaticvoidmain(System[]args){
Scannersc=newScanner(System.in);
System.out.println("请输入乘车公里数");
System.out.println("请输入等候时间");
floata=sc.nextFloat();
intm=sc.nextInt();
intb=(int)a;
ints=0;
intc=0;
if(a-b==0)c=b;
elsec=++b;
if(0if(a>4&&a<15)s=10+(c-3)*2+m/150;
if(a>15)s=10+(15-3)*2+(c-15)*3+m/150;
System.out.println("应该收费"+s);
}
}
老师讲解:
X%1=0?
intx:
intx+1
doublekilo=sc.nextDouble();
intk=kilo%1==0?
(int)kilo:
(int)kilo+1;
Day02
1.for(初始化表达式;布尔表达式;){}//循环最多三重
2.Ex1:
1~100质数(只能被自己和1整除的数,1既不是质数也不是)
完整代码:
packagesw;
publicclasszhishudayin{
publicstaticvoidmain(String[]args){
for(inta=2;a<100;a++){
booleanflag=true;
for(intb=2;b//不超过它的开方,其实直接写b《a也会//得到一样的结果
if(a%b==0){//a除以(2~a的开方),如果除尽,说明有除自己与1外的//其他因子,不是质数
flag=false;
break;
}
}
if(flag)
System.out.println(a);
}
}
}
3.Ex2:
36个人搬36块砖,男人4块每人,女人3块每人,小孩2人搬1块,所有的人一次搬完。
问几个男几个女几个小孩?
分析:
男人最多9个
女人最多12个
小孩最多78个
publicclassbanzhuan{
publicstaticvoidmain(String[]args){
for(inti=1;1<=9;i++){
for(intj=0;j<=12;j++){
intx=36-i-j;
if(4*i+3*j+x/2==36&&x%2==0){
System.out.println("男人"+i+"女人"+j+"小孩"+x);
}
}
}
}
}
1、Random
1.importjava.util.Random;
2.Randomran=newRandom();
3.intx=ran.nextInt(10);//产生0~10之间的随机数
完整代码:
importjava.util.Random;
publicclassRandomDemo{
publicstaticvoidmain(String[]args){
Randomran=newRandom();
intx=ran.nextInt(10);
System.out.println(x);
}
}
Ex3输入随机数,猜数字游戏
完整代码:
packagesw;
importjava.util.Random;
importjava.util.Scanner;
publicclasscaishuziyouxi{
publicstaticvoidmain(String[]args){
Scannersc=newScanner(System.in);
Randomran=newRandom();
intx=ran.nextInt(1000);//随机数0~999
intcount=0;
do{
System.out.println("请输入一个0~999的整数,您还有"+(10-count)+"次机会哦");
intm=sc.nextInt();//猜的数字
if(melseif(m>x)System.out.println("太大了,再小一点");
else{
System.out.println("恭喜你,猜对了!
");
break;
}
count++;
}while(count<=10);
if(count>+10)
System.out.println("你太笨了,下次再来吧!
");
System.out.println("数字是"+x);
}
}
星空:
代码一
packageygr;
importjava.awt.Color;
importjavax.swing.JFrame;
publicclassDay02{
publicstaticvoidmain(String[]args){
JFrameframe=newJFrame();
frame.setBackground(Color.BLACK);
frame.setTitle("星星");
frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
frame.setSize(1024,768);
frame.setLocation(0,0);
MyPanelStarpanel=newMyPanelStar();
frame.add(panel);
frame.setVisible(true);
}
}
代码二(在同一个类中)
packageygr;
importjava.awt.Color;
importjava.awt.Graphics;
importjava.util.Random;
importjavax.swing.JPanel;
publicclassMyPanelStarextendsJPanel{//extends继承
publicvoidpaint(Graphicsg){//画笔
this.setBackground(Color.BLACK);
Randomran=newRandom();
g.setColor(Color.WHITE);
for(inti=0;i<300;i++){
intx=ran.nextInt(1024);
inty=ran.nextInt(768);
g.drawString("*",x,y);
}
g.setColor(Color.YELLOW);
g.fillArc(800,100,80,80,0,360);
g.setColor(Color.BLACK);//可以自己设置不同的颜色
g.fillArc(820,80,80,80,0,360);
}
}
2.java中的方法
一.语法:
【修饰符】返回类型方法名(参数列表){
方法体
}
publicstaticvoidmain(String[]args){
}
Publicintf(){
return6;
}//返回与类型相兼容的类型
如:
publicstaticintf(intx){
byteb=3;
returnb;
}
3、数组
1.数组的声明:
int[]arr;//建议使用
intarr[];//对,C++中的声明方法,一般不用于java中
2,数组的初始化
<1静态初始化
inta[]={1,2,3};//下标012
<2动态
1.int[]arr=newint[]{4,5};//{}中有数组值时,[]中不可以有值
2.int[]arr=newint[4];//长度为四,值为4个0
整型0
浮点型0.0
Booleanflase
char‘\u0000’//16位\u空白符在liux下是截止符
引用类型null
3.静态初始化和动态初始化的区别:
《1.inta;a=4//对
《2.int[]arr;arr={1,2,3}//错误,静态初始化必须在声明的同时初始化
《3.int[]arr={1,2,3}//修改正确
《4.int[]arr;arr=newint[]{4,5};//对动态
4.长度:
arr.length;//后面没有括号
5.数组元素的初始化操作:
<1int[]arr=newint[4];
arr[1]=3;//0300
for(inti=0;iarr[i]=i+1;
}//1234
6.打印数组:
int[]arr={4,5,6}//错误
java.util.Arrays;
System.out.println(Arrays.toString(arr));//打印数组的较快捷的方法
完整代码:
packagesw;
importjava.util.Arrays;
publicclassshuzu1{
publicstaticvoidmain(String[]args){
intarr[]=newint[]{2,3,4};
System.out.println(Arrays.toString(arr));
}
}
EX4:
双色球:
红球33选6(不能重复,用数组保存)
篮球16选1
完整代码:
packagesw;
importjava.util.Arrays;
importjava.util.Random;
publicclassshuangseqiu{
publicstaticvoidmain(String[]args){
Randomran=newRandom();
intblue=ran.nextInt(16)+1;//0~15变成1~16,产生一个随机数
int[]red=newint[6];/