版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2Java编程基础2.1标识符与关键字2.2数据类型2.3运算符和表达式2.4包装类2.5控制台输入输出2.6控制语句2.7编程练习2.1标识符与关键字Java标识符是以字母、下划线(_)或美元符号($)开头;随后跟随字母、下划线(_)、美元符号($)或数字。标识符是大小写区别对待的。标识符未规定最大长度。下列标识符是有效的:identifier、userName、User_name、_sys_varl、$change、_3_、OK。下面的标识符是非法的:#name,25name,class,&time,if标识符不能是关键字,例如:this是一个关键字不能作为标识符。Java关键字注意:关键字和保留字都是小写,如true、false。所有类型的长度和表示是固定的,不依赖执行。无sizeof运算符。保留字2个:goto和const【Return】2.2数据类型8个true、false基本类型用法注意整数类型:
byte、short、int和long用法与C/C++相同。 如:17(十),017(八),0x17(十六),17L(长整型)浮点数:
float和double用法与C/C++相同。 如:3.14、3.02E23、2.718F、123.4D 注意:
floata=3.4F;('F'不能丢:floata=3.4;×)
正确用法:doublea=3.4;√数据输出格式的控制方法1:String.format("格式串",数值数据)方法2:System.out.printf("格式串",数值数据)示例:intn1=100;doubled1=123.456;System.out.println(String.format("%-5d,%.2f",n1,d1));System.out.printf("%05d,%.2f\n",n1,d1);boolean类型:boolean有两个文字值,即true和false(小写)。注意:数字值不能自动转换为boolean。例如:
intflag=1; if(flag)//JavaError!butC/C++Correct
if(flag!=0)//OK,显示写出条件
booleanflag=true; if(flag)//OK,条件使用布尔值char类型:一个char代表一个16bit无符号的Unicode字符。一般用法:charch1='a',
ch2='\n';Unicode写法:charch='\u0041';→字母“A”4个16进制数字以\u开头Unicode编码查询://code/unicode/class/Unicode(统一码)是一种在计算机上使用的字符编码。它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。字符检测的方法已知charch='a';Character.isLetter(ch)--ch是否是字母Character.isDigit(ch)--ch是否是数字Character.isLetterOrDigit(ch)--ch是否是字母或数字Character.isWhitespace(ch)--ch是否是空格Character.isLowerCase(ch)--ch是否是小写字母Character.isUpperCase(ch)--ch是否是大写字母Character类符号常量:自定义符号常量:finaldoublePI=3.14159;系统提供的符号常量,如:Integer.MIN_VALUEInteger.MAX_VALUE变量初始化任何变量都必须经初始化后才能被使用。...
intx=(int)(Math.random()*100);inty,z;if(x>50){y=9;}z=y+x;…ymaynothavebeeninitializeds注意当一个对象被创建时,在方法外定义的变量(属性)将被自动初始化。publicclasstest{
privateinti=100,j;privatebooleanf;publicvoiddisplay(){System.out.println("j="+(j=j+1));System.out.println("f="+f);}publicstaticvoidmain(Stringargs[]){
testt=newtest();t.display();}}输出结果:j=1f=false实例变量在分配存储单元的同时被下列值初始化:byte、short、int:0long:0L float:0.0f double:0.0dchar:'\u0000'(即Null)boolean:false所有引用类型:Null实例化后会自动初始化String类型String不是原始类型,而是一个类(class),它被用来表示字符序列(字符串)。字符本身符合Unicode标准。与C和C++不同,String不用'\0'作为结束。基本用法:直接赋值:Strings1="Hello",s2="Java";或者new一个String:Strings1=newString("Hello");字符串连接操作:Strings3=s1+s2;//字符串连接s3="HelloJava"inti=10;Stringstr="i="+i;//str的值为"i=10"说明:如果字符串与其他类型变量进行“+”运算,系统将自动将其他类型转换为字符串。示例inta=1,b=2;Stringstr="hello";System.out.println(str+a+b);System.out.println(a+b+str);输出结果:hello123helloString类常用方法创建新StringStringsubstring(intstart,intend):返回一个新串,它是原串中从start到end-1的一部分。StringtoLowerCase():返回一个新串,它将原串中的大写字母变成小写。StringtoUpperCase():返回一个新串,它将原串中的小写字母变成大写。Strings="Nowisthetimefordinner";则s.substring(1,3)="ow"注:字符串序号值从0开始。查找方法booleanendsWith(Strings):如原串以s串为结尾,则返回true。booleanstartsWith(Strings):如原串以s串为开始,则返回indexOf(Strings):返回串中第一次出现s串的序号值。intlastIndexOf(Strings):返回串中s串最后出现的序号值。如果没有找到则返回-1Strings="Iamastudent";s.indexOf("stu")=7s.indexOf("you")=-1s.lastIndexOf("a")=5s.endsWith("ent")=true注:字符串序号值从0开设。比较方法booleanequals(Strings):如果原串与s串相等,则返回compareTo(Strings):进行字典序比较,如果原串小于s串则返回负数;如果原串大于s串则返回正数;如果原串等于s串则返回零。其它方法charcharAt(intindex):返回index处的字符。intlength():返回串的长度。特别提醒:字符串内容的比较不能用==Strings="student";则s.length=7s.charAt(2)='u'Strings1="abc";Strings2="xyz";则pareTo(s2)=-23字符串equals和==操作以下输出结果是什么?Strings1="abc";Strings2="abc";Strings3=newString("abc");Strings4=newString("abc");System.out.println(s1==s2);System.out.println(s1.equals(s2));System.out.println(s3==s4);System.out.println(s3.equals(s4));输出结果:truetruefalsetrue字符串数值的转换字符串→数值方法1:√parse方法常用 inti=Integer.parseInt("123"); doubled=Double.parseDouble("1.23");方法2:
inti=Integer.valueOf("123").intValue();
注意:字符串转换成数值时对数据格式要求严格inti=Integer.parseInt("123.4");×intI=Integer.valueOf("123.4").intValue();×字符串数值的转换(续)数值→字符串方法1: Strings=String.valueOf(value);
其中value为任一种数字类型。方法2:
Strings=Integer.toString(123);
方法3:最直接
Strings=""+
value;其中value为任意一种数字类型。
字符数组字符串的转换字符数组→字符串
例如:char[]c={'a','b','c'};
Stringstr=newString(c);√字符串→字符数组
例如:Stringstr="abc";
char[]
c=str.toCharArray();√System.out.print(c[1]);能用str[1]吗示例publicclasstest{ publicstaticvoidmain(Stringargs[]) {Strings1=newString("youareastudent");Strings2=newString("howareyou");if(【1】){//判断s1与s2是否相同System.out.println("s1与s2相同");}else{System.out.println("s1与s2不相同");}Strings3=newString("22030219851022024");if(【2】){//判断s3的前缀是否是“220302”System.out.println("吉林省的身份证");}
示例publicclasstest{ publicstaticvoidmain(Stringargs[]) {Strings1=newString("youareastudent");Strings2=newString("howareyou");if(【1】){//判断s1与s2是否相同System.out.println("s1与s2相同");}else{System.out.println("s1与s2不相同");}Strings3=newString("22030219851022024");if(【2】){//判断s3的前缀是否是“220302”System.out.println("吉林省的身份证");}
示例(续)Strings4=newString("cat"); Strings5=newString("dog"); if(【3】){//按字典序比较s4、s5
System.out.println("按字典序s4>=s5");
} else{ System.out.println("按字典序s4<s5");
} intposition=0; Stringpath="c:\\java\\jsp\\A.java"; //获取path中最后出现目录分隔符号的位置position=【4】;
System.out.println("c:\\java\\jsp\\A.java中最后出现\\的位置:"+position);示例(续) StringfileName=【5】;//获取path中“A.java”子字符串
System.out.println("c:\\java\\jsp\\A.java中含有的文件名:"+fileName); Strings6=newString("100"); Strings7=newString("123.678"); intn1=【6】;//将s6转化成int型数据
doublen2=【7】;//将s7转化成double型数据
doublen=n1+n2; System.out.println(【8】);//输出n,保留2位小数 Strings8=newString("ABCDEF"); System.out.println(【9】);//将s8转化为小写输出System.out.println(【10】);//输出s8的最后一个字符
}//endmain}//endclass【Return】2.3运算符和表达式运算符使用注意算术运算两个整数类型的数据做除法时,结果只保留整数部分.如:3/2=1,
但是3.0/2=1.5自增与自减运算符只适用于变量.如10++;×%运算不仅能用于整型,也能用于浮点类型.如:
9%2=19.5%2=1.5
√关系运算关系表达式的运算结果是逻辑值:true、false(小写).例如:inta=1,b=4;booleanc=a<b;c为true if(c)或if(!c)…//ok if(a)…//error:int到boolean不能自动转换。 必须显示指明,如if(a>0)则可以。
布尔逻辑运算只能是布尔量(true,false)参加运算,结果也是布尔型布尔量也可以:&、|、!、^(相当于单个的位运算)&&、||具有短路效应: 例如:(m=a>b)&&(n=c>d) 如果m=false,则n=c>d不计算位运算<<:每左移一位,右边补0,最高位移出丢弃例如:bytea=32;//a:00100000inti=a<<2;//a<<2:10000000i:0000000010000000bytej=(byte)(a<<2);j结果多少?>>:每右移一位,最高位由原来的最高位补充(正数补0,负数补1)>>>:0填充右移(无符号右移) 例如:inta=-1;a>>>=24;则a=?一般情况下:a<<n移位的结果是:a×2na>>n移位的结果是:a÷2n
类型转换当没有信息丢失时,变量可被自动升级为一个较长的形式(如:int至long的升级)
longbigval=6; //6isaninttype,OKintsmallval=99L; //99Lisalong,errordoublez=12.414F; //12.414Fisfloat,OKfloatz1=12.414; //12.414isdouble,error类型转换(续)对+运算符来说,当两个操作数是原始数据类型时,其结果至少有一个int,并且有一个通过提升操作数到结果类型、或通过提升结果至一个较宽类型操作数而计算的值,这可能会导致溢出或精度丢失。例如:shorta,b,ca=1;b=2;c=a+b;上述程序会因为在操作short之前提升每个short至int而出错。然而,如果c被声明为一个int,或按如下操作进行类型转换:c=(short)(a+b);则上述代码将会成功通过。设计变量时要考虑好类型instanceof作用:测试它左边的对象是否是它右边的类的实例,返回boolean类型的数据。例如:Integerd=123;booleanisInt=dinstanceofInteger;//truebooleanisObj=dinstanceofObject;//true说明:Object是类层次结构的根类,每个类都使用Object作为超类。【Return】Java语言不把基本数据类型看作对象。8个基本数据类型都有相应的包装类。2.4包装类√√包装类(续)包装类都有自己的属性和方法,例如Integer.parseInt()方法,Integer.MAX_VALUE属性。可以通过将被包裹的值传递到合适的构造函数中来构造包装类对象。例如:inta=100;Integeri=newInteger(a);//构造包装类对象可以通过intValue()方法将包装类变成基本类型。例如:inttheInt=newInteger(200).intValue();
【Return】装箱操作拆箱操作补充inta,b=1;Integeri=newInteger(10);a=newInteger(10);Integerj=b;a=j;2.5控制台输入输出importjava.util.Scanner;//导入java包publicclasstest{publicstaticvoidmain(String[]args){finaldoublePI=3.14159;//符号常量
Scannersc=newScanner(System.in);//创建控制台输入对象System.out.print("请输入圆的半径=");doubler=sc.nextDouble();
//读取一个double数据System.out.print("计算圆面积="+String.format("%.2f",PI*r*r)
); }}相应的有:nextInt()、nextByte()、nextFloat()、nextLong()nextBoolean():获取boolean数据,如输入true或false
nextLine():获取字符串数据【Return】格式化数值数据的方法√2.6控制语句if…elseintx=2;if(x<2){x++;}else{x--;}System.out.println("x="+x);intx=2;inty=x<2?++x:--x;System.out.println("x="+x);switch语句switch(expr1){
caseexpr2:statements; break;caseexpr3:statements; break;default:statements; break;}如没break语句,则程序的执行将继续到下一个case,而不检查case表达式的值。expr1可以是int、byte,short或char类型;不允许使用浮点或long表达式。不允许有重复case值示例importjava.util.Scanner;publicclasstest{publicstaticvoidmain(String[]args){ System.out.print("请输入成绩=");
intscore=newScanner(System.in).nextInt();//连在一起写
inta=score/10;
switch(a){ case10: case9:System.out.println(score+"优秀"); break; case8:System.out.println(score+"良好"); break; case7:System.out.println(score+"中等"); break; case6:System.out.println(score+"及格"); break; default:System.out.println(score+"不及格"); break;
}}}while/do…while/forintx=1;while(x<10){System.out.println("x="+x);x++;}intx=1;do{System.out.println("x="+x);x++;}while(x<10);for(intx=1;x<10;x++){System.out.println("x="+x);}break、continue用法:break[标注];continue[标注];注:标注可标识控制需要转换到的任何有效语句(块)。标注用法标注:语句(块)即在有效语句块前加个标识符:break:强行退出一个循环publicclasstest{ publicstaticvoidmain(String[]args){ for(inti=1;true;i++){ if(i==5) break; System.out.println(i); } System.out.println("退出循环了!"); }}运行结果:1234退出循环了!continue:结束本次循环,跳至下一次循环;publicclasstest{ publicstaticvoidmain(Stringargs[]){ for(inti=0;i<10;i++){ System.out.print(i+""); if(i%2==0)continue; System.out.println();}}}运行结果:0123456789标注示例publicclasstest{publicstaticvoidmain(Stringargs[]){
outer:
for(inti=0;i<3;i++){ System.out.print("Pass"+i+":"); for(intj=0;j<10;j++){ if(j==5)breakouter;System.out.print(j+""); } System.out.println();}}}运行结果:Pass0:01234×标注示例publicclasstest{publicstaticvoidmain(Stringargs[]){
outer:
for(inti=1;i<5;i++){for(intj=1;j<5;j++){if(j>i){System.out.println();
continueouter;}System.out.print(""+(i*j));}System.out.println();}}}运行结果:124369481216【Return】2.7编程练习判断输入的字符串是否为回文,如abcba。输入一个字符串,统计大写字母、小写字母、数字、空格以及其他字符个数。递归方法求2+4+6+…+100之和。回文判断System.out.println("请输入字符串:");Stringstr=newScanner(System.in).nextLine();booleanflag=true;charch1,ch2;for(inti=0;i<str.length()/2;i++){ch1=str.charAt(i);
ch2=str.charAt(str.length()-1–i);if(ch1!=ch2){flag=false;
break;}}if(flag)System.out.println("是回文");elseSystem.out.println("不是回文");大小写等判断intlower=0,upper=0,number=0,space=0,other=0;System.out.println("请输入字符串:");Strings=newScanner(System.in).nextLine();for(
inti=0;
i<s.length();
i++
)
{ if(
Character.isLowerCase(
s.charAt(i)
)
)
{
lower++;
} elseif(Character.isUpperCase(s.charAt(i)))
{
upper++;
} elseif(Character.isDigit(s.charAt(i)))
{
number++;
} elseif(Character.isSpace(s.charAt(i)))
{
space++;
} elseother++; }
System.out.println("小写字母个数:"+lower+",大写字母个数:"+upper+",数字个数:"+number);System.out.println("空格个数:"+space+",其他字符个数:"+other);递归函数求2+4+6+…+100之和:publicclasstest{ publicstaticvoidmain(Stringargs[]) {System.out.print(fadd(100));}
publicstaticintfadd(intn){ if(n==2)return2; elsereturnn+fadd(n-2);
}}【完】补充1-数学类java.lang.Math类主要包括下列方法和两个常数:doubleabs(doubled):返回d的绝对值。doublemin(doubled1,doubled2):返回d1与d2中的小者。doublemax(doubled1,doubled2):返回d1与d2中的大者。doublesqrt(doubled):返回d的平方根。doublepow(doubled1,doubled2):返回d1的d2次幂。doublerandom():返回[0,1)的随机数。两个常数: PI:圆周率,double。 E:自然对数的底,double。对于float,int,long有类似的函数补充2-StringBuffer类在Java中有3个类来负责字符的操作:Character是进行单个字符操作的,String对一串字符进行操作。不可变类。StringBuffer也是对一串字符进行操作,但是可变类。String为不可变对象,一旦被创建,就不能修改它的值。对于已经存在的String对象的修改都是重新创建一个新的对象,然后把新的值保存进去。StringBuffer是一个可变对象,当对它进行修改的时候不会像String那样重新建立对象。在实际应用
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 四川西南航空职业学院《视传艺术考察》2023-2024学年第一学期期末试卷
- 2024年花卉产业扶贫项目合作合同协议3篇
- 二零二五年度按揭贷款房屋改造贷款合同范本2篇
- 2024影视行业人才中介服务合同
- 二零二五版户外广告牌制作、安装与维护全流程服务合同3篇
- 绍兴文理学院元培学院《影视动画海报设计》2023-2024学年第一学期期末试卷
- 个人所得税代扣代缴协议(2024年版)
- 二零二五年度水泥管行业市场竞争策略合同
- 二零二五年度专业安保公司员工劳动合同范本2篇
- 山东轻工职业学院《期货投资》2023-2024学年第一学期期末试卷
- 《胃癌靶向治疗》课件
- 2024-2025学年辽宁省沈阳市高一上学期1月期末质量监测数学试题(含解析)
- 《少儿主持人》课件
- 北京市朝阳区2024-2025学年高二上学期期末考试生物试卷(含答案)
- 2025年西藏拉萨市柳梧新区城市投资建设发展集团有限公司招聘笔试参考题库附带答案详解
- 2025年部编版一年级语文上册期末复习计划
- 储罐维护检修施工方案
- 地理2024-2025学年人教版七年级上册地理知识点
- 2024 消化内科专业 药物临床试验GCP管理制度操作规程设计规范应急预案
- 2024-2030年中国电子邮箱行业市场运营模式及投资前景预测报告
- 基础设施零星维修 投标方案(技术方案)
评论
0/150
提交评论