admin 管理员组文章数量: 1184232
2023年12月24日发(作者:numpy常用方法)
Java语法基础标识符就是在程序中自定义的名词。比如包名、类名、变量名、方法名。命名规则:只能包含0-9、a-z、A-Z、$、_;不能以数字开头;不能使用Java的关键字和保留字;示例:$user,正确;0dpt,错误;关键字(51):就是java语言赋予了特殊含义的单词。abstract,assert,boolean,break,byte,case,catch,char,class,const,continue,default,do,double,else,enum,extends,final,finally,float,for,if,implements,import,instanceof,int,interface,long,native,new,package,private,protected,public,return,short,static,strictfp,super,switch,synchronized,this,throw,throws,transient,try,void,volatile,while保留字(14):就是java还没有赋予特殊含义,但是准备日后要使用过的单词。byValue,cast,false,future,generic,inner,operator,outer,rest,true,var,goto,const,null包(package)作用:为了更好的管理类,可以解决类重名的问题;命名规范:包的名称全部小写;一般包的命名规范是:com.公司简称.项目简称.模块名称.代码分层名称;示例:1.1.类(class)命名规范:所有单词首字母大写,驼峰式命名;示例:BookMgtSys
1.2.方法(method)命名规范:方法单词的第一个字母要小写,其他字母也要小写;如果由多个单词构成,除了第一个单词的首字母外其他每个单词的首字母都要大写。示例:getStudentCount()1.3.变量变量的概念:用来存储可变数据的容器。内存中的一个存储区域;该区域有自己的名称(变量名)和类型(数据类型);该区域的数据可以在同一类型范围内不断变化;为什么要定义变量?用来不断的存放同一类型的常量,并可以重复使用;使用变量注意:变量的作用范围(也称作用域,在一对{}之间有效);变量尽量放在代码段的初始位置;养成给变量设置初始化值的习惯;定义变量的格式:数据类型变量名=初始化值;变量名=新值;示例:intage=18;age=30;命名规范:和方法的命名规范一样;1.4.常量常量的概念:相对变量而言,是在程序中的不会变化的数据;定义常量的格式:final数据类型变量名示例:finalintAGE=18;命名规范:所有字母都大写,单词之间用下划线分割;=初始化值;
示例:MAX_UNIT_COUNT2.数据类型2.1.基本(原始)数据类型类型byte整数shortintlong浮点数字符布尔后缀:intage=25;//默认是int型longnumber=20L;//数字后面加L或l表示是long型doubled1=12.02;//默认是double型doubled2=12.02d;//效果等同于d1floatf=10.01F;//数字后面加F或f表示是float型八进制和十六进制:floatdoublecharboolean长度1个字节2个字节4个字节8个字节4个字节8个字节2个字节1个字节-128-32768-2147483648-9223372-3.4028235E38-1.7976931348623157E308最小值12732767最大值2233723.4028235E381.7976931348623157E3080true或false65535
可以使用八进制、十六进制的类型:long,int,short,byte八进制表示:以0作为前缀,数码有0,1,2,3,4,5,6,7,逢8进位如:17(十进制)021(八进制)十六进制表示:以0x作为前缀,数码有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,逢16进位如:23(十进制)0x17-》00010111如果想存储大整型,可以使用BigInteger类add(加)、subtract(减)、mod(求余数)、pow(次方)、divide(除)、multiply(乘)如果想存储大浮点型,且想要精确值,可以使用BigDecimal类add(加)、subtract(减)、pow(次方)、divide(除)、multiply(乘)、round(四舍五入)注意:浮点型是近似值,不要去比较浮点型的大小;如何比较两个浮点型变量的大小?doubled1=1.0009;doubled2=1.1;BigDecimalbd1=newBigDecimal(ng(d1));BigDecimalbd2=newBigDecimal(ng(d2));intresult=eTo(bd2);2.1.1.类型转换2.1.1.1.自动类型转换(隐式转换)赋值操作:把范围小的数据类型变量赋值给范围大的数据类型变量;大范围的数据类型的变量=小范围的数据类型的变量;双目运算符:运算符的两个操作数,范围小的数据类型的操作数会自动转换为范围大的数据类型;intnum1=25;longnum2=num1;
自动类型转换是安全的;2.1.1.2.强制类型转换把范围大的类型强制转换为范围小的类型,这种转换是不安全的,有可能会发生数据溢出现象。例如:intn=72378;shorts=(short)n;2.1.1.3.特殊的隐式转换一般的隐式转换都是范围小的类型转换为范围大的,但如果一个赋值计算语句右边是常量,则会出现范围大的类型隐式转换为范围小的类型。例如:shorts+=38000;//相当于shorts=s+(short)38000;shorts=1;面试题:inta=10/0;有错吗?为什么?doubled=3.0/0有错吗?为什么?shorts=5;s=s+3;这条语句有错吗?为什么?shorts=5;s+=3;这条语句有错吗?为什么?char类型的变量可以保存汉字吗?为什么?2.2.引用类型自己创建的类或者接口JDK提供的(官方),比如Random,String,Date,List第三方提供的(非官方,草根)
2.2.1.引用类型的存储结构存储分类:CPU寄存器>>内存(RAM)>>硬盘(ROM)内存:栈(stack,先进后出)和堆(heap)栈:容量小,使用不灵活,必须事先确定好大小和生存周期,数据共享,但速度快;局部基本类型的变量,函数(方法)的参数如果一个变量是基本类型,但它是类的成员变量(非局部变量),它的值是保存在堆中的。堆:容量大,使用灵活,但速度慢,有垃圾回收器(GC)负责回收引用类型的变量(new创建的,都是引用类型)2.2.2.原始类型的包装类Boolean(boolean)/Byte(byte)/Short(short)/Character(char)/Integer(int)/Long(long)/Float(float)/Double(double)自动装箱和拆箱装箱:inta1=20Integerage=a1;拆箱a1=age;
3.方法method(函数function)方法的定义方法就是一段有名字的代码,可以完成某一特定功能。方法是java的最小代码重用单位,方法是为了重用代码。DRY原则:永远不要重复你自己,Don’trepeatyourself。例如:计算某年某月有几天?计算两个年份之间有几个闰年?什么时候需要定义方法?如果有一段代码要使用多次,我们可以给它起个名字,每次使用时通过名字调用,这样就不用每次都写一大段代码了。如果某个函数在执行的时候需要调用者传入数据,那么可以定义参数列表,用于接收数据。如果函数运行之后需要返回给调用者数据,那么需要指定返回值类型,并且用关键字return返回。注意事项:方法不能嵌套方法,不能在一个方法内部定义另外一个方法。可以在一个方法内部调用另外一个方法。方法必须写在类(class)里。定义函数的3个必要条件:函数名、参数列表、返回值类型。如果不需要参数也要写小括号,如果没有返回值类型要写void。怎么定义方法?返回值方法的名称(参数类型1参数名称1,参数类型2参数名称2,…,参数类型n参数名称n){}Stringfoo(inta,Stringb,floatprice){}怎么调用方法?如果有返回值Stringresult=foo(22,“yes”,18.73f);如果没有返回值printMovie(movie);
intfoo(){//第一步要做的事情step1();//第二步要做的事情step2();//第三步要做的事情step3();}名词解释形参:在定义函数时小括号中的参数,用来接收数据的参数。实参:在调用函数时真正传入的参数,传递给函数的数据。参数类型:函数的参数的类型,一旦定义传入时必须匹配。返回值:函数运行结束后返回的值,使用return关键字返回。返回值类型:函数运行结束后返回的值的类型,在类型非void情况下必须返回,而且必须类型匹配。Java方法的参数传递是传值还是传引用?Java的方法参数传递是采用值传递,总是会在方法内部拷贝出一个和参数完全相同的变量;如果参数是基本类型,则方法执行后,无法改变参数的值。如果参数是引用类型,在方法内部修改参数对象的属性,则可以改变参数的属性值;但如果直接将参数指向另外一个对象,则无法改变参数。怎么确定要给方法传参数(什么时候传参、什么时候不传参)?如果方法需要的数据是提前准备好的,可以让方法读取实例变量;如果方法需要的数据是临时的,而且这个数据方法自己可以获取到(比如通过数据库),可以在方法内部定义局部变量来保存方法取得的数据;
如果方法需要的数据是临时的,而且这个数据只有方法的调用者才可能知道,那就要给方法传参;方法的重载(overload)在同一个类中,多个方法的名称相同,参数列表不同(个数、顺序、类型),这就是方法的重载,方法的重载和返回值类型无关。在调用方法的时候通过传入的实参找到匹配的方法调用。4.运算符算数运算符加号:在操作数字、字符、字符串时是不同的,两个字符相加得到的是码表值,两个字符串相加是将字符串连接在一起。除号:整数在使用除号操作时,得到的结果仍为整数(小数部分忽略)。取模:模数的符号忽略不计,结果的正负取决于被模数。自增:符号在前就是先运算后取值,符号在后则是先取值后运算。习题:a.n(3500/1000*1000);b.某个培训中心要为新到的学员安排房间,假设共有x个学员,每个房间可以住6人,让你用一个公式来计算他们要住的房间数?intn=x/6;赋值运算符
等于:可以多个连用,例如:x=y=z=5;加等于:x+=5;相当于x=x+5;面试题:以下代码正确的是?(多选)=1+1;=1;b=b+1;=1;b+=1;=1;b=++b;比较运算符比较运算符运行结束之后返回的都是boolean值。注意运算符==不要写成=逻辑运算符&&,||,!&&,true&&true=true,true&&false=false,false&&false=false||,true||true=true,true||false=true,false||false=false!,!true=false,!false=trueIf(!x>10)if(x<=10)
逻辑运算符运行结束之后返回的也是boolean值&两边都为true结果才为true,只要有一边是false,结果就是false|两边都为false结果才为false,只要有一边是true,结果就是true^判断两边是否不同,不同则为true,相同则为false!取反,!true结果是false,!fasle结果是true&&和&结果相同,具有短路效果,如果前半是false,表达式结果一定为false,不运行后一半||和||结果相同,具有短路效果,如果前半是true,表达式结果一定为true,不运行后一半分析以下程序运行结果:intx=1;inty=2;n(x++==y&++x>y++);n(x);n(y);intx=1;inty=2;n(x++==y&&++x>y++);n(x);n(y);intx=1;inty=2;n(x++==y|++x>y++);n(x);n(y);intx=1;
inty=2;n(x++==y||++x>y++);n(x);n(y);&&在前半是false的时候短路||在前半是true的时候短路位运算符原码反码补码任何信息在计算机中都是以二进制的形式保存的,&、|、^除了可以作为逻辑运算符,也可以做为位算符。它们对两个操作数中的每一个二进制位都进行运算,0当做false,1当做true。&将两个二进制数每一位进行&运算,两边都为1结果才为1,只要有一边是0,结果就为0。|将两个二进制数每一位进行|运算,两边都为0结果才为0,只要有一边是1,结果就为1。^将两个二进制数每一位进行^运算,只要两边不同结果就为1,相同则为0。我们可以对数据按二进制位进行移位操作,java的移位运算符有三种:<<左移将二进制的每一位向左移,低位补0。左移几位就相当于乘以2的几次方。>>右移将二进制的每一位向右移,原来高位是0就补0,原来高位是1就补1。右移几位就相当于除以2的几次方。>>>无无符号右移将二进制的每一位向右移,高位补0。正数移动没区别,负数移动后变为正数。练习:a.用&和>>来做十进制转十六进制b.有两个int型变量a和b,在不使用第三个变量的情况下交换两个变量中的值运算符优先级
思考一下代码运行结果:n(1+2*3);n(false&&true||true);n(true||true&&false);inta=2;intb=a+3*a++;n(b);inta=2;intb=a+++3*a;n(b);inta=1;intb=2;n(a+++b);(3+7)*2尽量写简单的表达式,遇到运算符优先级的问题使用括号解决。5.语句顺序结构顾名思义,就是程序从上到下一行一行执行的结构,中间没有判断和跳转,直到程序结束。选择结构程序具备多个分支,通过条件判断决定程序选择那一条分支执行a.if语句:通过if...lse决定程序流程。如果if中的条件满足则执行其中语句,if未满足则继续判断elseif,如果满足则执行,
不满足继续判断下一个elseif,如果所有都不满足,则执行else。练习:用ifelse语句判断一个数是奇数还是偶数。用户输入一个字符,用程序判断是否为小写字母,如果是,请输出“您输入的字符是小写字母”。if(条件表达式){语句;}if(条件表达式){语句1;}else{语句2;}If(){}elseif(){}else{}b.switch语句:通过default语句控制程序流程。switch的变量只能是int型(byte,short,char)根据switch后括号中的值判断运行哪一个case,这个值可以是byte、short、char、int。default语句是可选的,如果所有case都不满足,则会执行default。一旦匹配到一个case,程序就会从这个case向下执行,执行完一个case之后不会跳过其他的case,如需跳过请使用break。c.三元运算符语法:表达式?结果1:结果2如果表达式结尾为true取结果1,为false则取结果2。注意三元运算符也是有短路的效果,根据表达式的结果,只运行冒号一边的,另外一边的不参与运行。练习:定义一个函数,接收两个int参数,返回较大的一个。循环结构通过循环语句让同一段代码反复执行多次,执行完毕程序才会继续往后运行a.while先判断while中的表达式结果是否为true,true则执行循环体,执行结束之后再次判断,如果表达式结果为false则跳出循环。
练习:打印出0-9while(i<10){i++;}打印出a-zb.do...while先执行一次循环体,然后判断while中的表达式,如果是true继续执行,如果是false则跳出循环。Stringinput=“”;Do{Scannerin=newScanner();input=();}while(!(“q”));练习:编写一个程序,这个程序不断地读取键盘上输入的字符,直到读到字符’q’时,程序结束。c.forfor循环的括号中有三条语句,都是可选项。语句1:这条语句会在整个循环开始之前执行,且仅运行一次,不参与循环。语句2:必须是一个返回boolean值的表达式,如果写了这个语句那么每次循环开始之前会判断,true则执行循环,false则不执行。没写则直接执行。语句3:这条语句在每次循环体运行结束之后执行。练习:使用星号打印如下图案*************************i01234i01*12345空格43*13*******************
*********************234210579d.continue、break、returncontinue:跳过一次循环,继续执行下一次break:结束循环return:结束方法6.数组什么是数组数组是一个类型一致,长度不可变的容器。可以通过索引操作容器中的每一个元素。如果有多个类型相同的数据需要存储,我们就可以将其定义为一个数组,这样做省去了创建多个变量的麻烦。如何定义数组int[]arr={1,2,3};定义int数组arr,长度为3,其中3个元素分别为1、2、3。这种方式只能在定义数组的时候使用。int[]arr=newint[]{1,2,3};定义int数组arr,长度为3,其中3个元素分别为1、2、3。可以再任何情况使用。int[]arr=newint[10];定义int数组arr,长度为10。其中所有元素都为默认值0。数组的长度:访问数组元素、遍历数组存在数组中的数据是有索引的,从0开始递增,我们通过数组名和索引就可以操作其中每一个元素。例如:n(arr[0]);//打印数组中索引为0的元素arr[1]=100;//给数组中索引为1的元素赋值为100数组的长度数组可以使用length属性获取其长度。遍历数组由于数组可以通过索引获取每一个元素,又可以通过length获取长度,那么我们就可以定义循环来遍历数组中的每一个元素了。使用数组时的异常
如果访问数组时索引越界(小于0或者大于length-1),会抛出异常:ArrayIndexOutOfBoundsExcepion如果访问数组的引用为空(null),会抛出空指针异常:NullPointerExceptiond.e.数组练习定义一个函数,将数组中所有元素打印。要求打印成一行,每个元素之间以逗号分隔。定义一个函数,交换数组中的两个元素。定义一个函数,找出数组中的最大数。定义一个函数,将数组中所有元素反转。例如:{1,2,3}反转后为{3,2,1}。定义一个函数,对数组进行排序。与数组操作相关函数ng()查找帮助文档Arrays类,学习使用此方法将字符串转为字符串形式。将一个数组转为字符串表示形式opy()查找帮助文档System类,学习使用此方法拷贝数组中元素。将一个数组中的某些元素拷贝到另一个数组的指定位置多维数组数组中的每一个元素都是数组,这样的数组就是多维数组。int[][]arr={{1,2,3},{4,5},{6,7,8,9}};定义二维数组arr,其中有三个元素都是数组,第一个数组3个元素,第二个2个元素,第三个4个元素.int[][]arr=newint[][]{{1,2,3},{4,5},{6,7,8,9}};定义二维数组arr,其中有三个元素都是数组,第一个数组3个元素,第二个2个元素,第三个4个元素.int[][]arr=newint[3][3];定义二维数组arr,其中有三个元素都是数组,每个小数组都是3个元素.int[][]arr=newint[3][];定义二维数组arr,其中有三个元素都是数组,每个小数组元素个数不确定.ist相当于动态数组,元素个数不确定,可以根据需要扩充长度。元素之间有顺序关系。ist;ArrayListal=newArrayList();属性:
方法:size,获取ArrayList的长度add,添加一个新元素get,获取指定下标的元素set,修改指定下标的元素remove,删除指定下标的元素任务编写一个程序,程序接收键盘上输入的三个数,并输出这三个数的最大数。编写一个程序,程序接收键盘上输入的三个数,并输出这三个数的最小数。计算从1到100的和(1+2+3+4+…+100)。国际象棋有64格,如果在第一格里放入1粒米,在第二格里放入2粒米,在第三格里放入4粒米,每格的米粒数都等于前一格的两倍,如果将棋盘放满,总共要放几粒米?注:使用BigInteger解决。一个班12位同学,现在请依次输入这12位同学的英语成绩(0~100分),计算这个班的及格率、平均分、良好(大于等于80,小于90)的人数、优秀(大于等于90)的人数。编写一个程序,将十进制整数转成对应的二进制形式(用字符串表达这个二进制数)。给你一个容量为10的整型数组:int[]array=newint[10];使用随机数分别给这10个元素赋值,然后重新对这个数组排序,让这个数组的元素按照从小到大的顺序排列。
版权声明:本文标题:Java基础语法3 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1703393891a449342.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论