Java标准输入输出+基础理论+基本数据类型总结
学Java两个多月了,准备写Java相关知识,多总结(毕竟自己也是小白),以后定期写Java相关博客,一直把Java大致体系学完。只是为了自己方便查阅,有不足可指出。 1、标准输出: publicclassHelloJava{ publicstaticvoidmain(String[]args){ System.out.println("renzhiyuan学习Java"); } } 1.1)参数: public:表示的这个程序的访问权限,表示的是任何的场合可以被引用,这样java虚拟机就可以找到。main()方法,从而来运行javac程序。 static:表明方法是静态的,不依赖类的对象的,是属于类的,在类加载的时候main()方法也随着加载到内存中去。 void:main()方法是不需要返回值。 main:此方法是程序执行的入口。 String[] args:从控制台接收参数。 System.out.println:标准输出流(支持文件的输出) #System.out.println();标准错误输出流 1.2)两个输出流的区别区别: 标准错误流不支持定向输出,只能立即输出。 标准输出流支持定向输出 eg:java HelloJava>>test.txt(非追加>) 1.3)常用转义字符: //println和print区别是println会换行 // 常用的转义字符 \\ 反斜杠 \' 单引号' \" 双引号" \b 倒退一个字符 \n 回车换行 \t 跳格(一个Tab键) 1.4)程序解释: A:Java程序的最基本单位是类,所以我们要定义一个类。 格式:class 类名 举例:class HelloWorld B:在类中写内容的时候,用大括号括起来。 C:Java程序要想执行,必须有main方法。 格式:public static void main(String[] args) D:要指向那些东西呢,也用大括号括起来。 E:你要做什么呢?今天我们仅仅做了一个简单的输出 格式:System.out.println("HelloWorld"); 注意:""里面的内容是可以改动的。 (2)Java程序的开发执行流程: A:编写java源程序(.java) B:通过javac命令编译生成.class文件 C:通过java命令运行.class文件 2、键盘录入: 2.1)案例 importjava.util.Scanner; publicclassJavaTest { publicstaticvoidmain(String[]args) { Scannerscanner=newScanner(System.in); System.out.println("你的名字是什么?"); Stringname=scanner.next(); System.out.println("你家住在哪里?"); Stringaddress=scanner.next(); System.out.println("我的名字也叫"+name+address+"很高兴认识你!"); } } 2.2)实现流程: A:导包 import java.util.Scanner; 位置:在class的上边 B:创建对象 Scanner sc = new Scanner(System.in); C:获取数据 3、方法: 3.1)方法:就是完成特定功能的代码块。 注意:在很多语言里面有函数的定义,而在Java中,函数被称为方法。 3.2)格式: 修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2...) { 方法体语句; return 返回值; } 修饰符:目前就用 public static。后面再详细讲解其他修饰符 返回值类型:就是功能结果的数据类型 方法名:就是起了一个名字,方便我们调用该方法。 参数类型:就是参数的数据类型 参数名:就是变量 参数分类: 实参:实际参与运算的数据 形参:方法上定义的,用于接收实际参数的变量 方法体语句:就是完成功能的代码块 return:结束方法 返回值:就是功能的结果,由return带给调用者。 3.3)两个明确: 返回值类型:结果的数据类型 参数列表:参数的个数及对应的数据类型 3.4)方法调用 A:有明确返回值的方法 a:单独调用,没有意义 b:输出调用,不是很好,因为我可能需要不结果进行进一步的操作。但是讲课一般我就用了。 c:赋值调用,推荐方案 B:void类型修饰的方法 a:单独调用 3.5)方法的注意事项 A:方法不调用不执行 B:方法之间是平级关系,不能嵌套定义 C:方法定义的时候,参数是用,隔开的 D:方法在调用的时候,不用在传递数据类型 E:如果方法有明确的返回值类型,就必须有return语句返回。 3.6)方法重载 在同一个类中,方法名相同,参数列表不同。与返回值无关。 参数列表不同: 参数的个数不同。 参数的对应的数据类型不同。 3.7)方法重载案例 不同的类型的多个同名方法的比较。 4、关键字 4.1)被Java语言赋予特定含义的单词 4.2)特点: 全部小写。 4.3)注意事项: A:goto和const作为保留字存在。 B:类似于Notepad++这样的高级记事本会对关键字有特殊颜色标记 5、标识符 4.1)就是给类,接口,方法,变量等起名字的字符序列 5.2)组成规则: A:英文大小写字母 B:数字 C:$和_ 5.3)注意事项: A:不能以数字开头 B:不能是java中的关键字 C:区分大小写 5.4)常见的命名规则(见名知意) A:包全部小写 单级包:小写 举例:liuyi,com 多级包:小写,并用.隔开 举例:cn.itcast,com.baidu B:类或者接口 一个单词:首字母大写 举例:Student,Demo 多个单词:每个单词首字母大写 举例:HelloWorld,StudentName C:方法或者变量 一个单词:首字母小写 举例:name,main 多个单词:从第二个单词开始,每个单词首字母大写 举例:studentAge,showAllNames() D:常量 全部大写 一个单词:大写 举例:PI 多个单词:大写,并用_隔开 举例:STUDENT_MAX_AGE 6、注释 6.1)就是对程序进行解释说明的文字 6.2)分类: A:单行注释// B:多行注释/**/ C:文档注释(后面讲) /** */ 6.3)把HelloWorld案例写了一个带注释的版本。 后面我们要写一个程序的过程。 需求: 分析: 实现: 代码体现: 6.4)注释的作用 A:解释说明程序,提高了代码的阅读性。 B:可以帮助我们调试程序。 7、常量 7.1)在程序执行的过程中,其值不发生改变的量 7.2)分类: A:字面值常量 B:自定义常量(后面讲) 7.3)字面值常量 A:字符串常量 "hello" B:整数常量12,23 C:小数常量12.345 D:字符常量'a','A','0' E:布尔常量true,false F:空常量null(后面讲) 7.4)在Java中针对整数常量提供了四种表现形式 A:二进制由0,1组成。以0b开头。 B:八进制由0,1,...7组成。以0开头。 C:十进制由0,1,...9组成。整数默认是十进制。 D:十六进制由0,1,...9,a,b,c,d,e,f(大小写均可)组成。以0x开头。 8、进制转换 8.1)其他进制到十进制 系数:就是每一个位上的数值 基数:x进制的基数就是x 权:对每一个位上的数据,从右,并且从0开始编号,对应的编号就是该数据的权。 结果:系数*基数^权次幂之和。 8.2)十进制到其他进制 除基取余,直到商为0,余数反转。 8.3)进制转换的快速转换法 A:十进制和二进制间的转换 8421码。 B:二进制到八进制,十六进制的转 9、数据类型 9.1)Java是一种强类型语言,针对每种数据都提供了对应的数据类型。 9.2)分类: A:基本数据类型:4类8种 B:引用数据类型:类,接口,数组。 9.3)基本数据类型 A:整数占用字节数(字节是计算机中最小的计量单位) byte1 -128~127 short2 -32768~32767 int 4 -2147483648~2147483647 long8 B:浮点数 float4 double8 C:字符 char2 D:布尔 boolean1 注意: 整数默认是int类型,浮点数默认是double。 长整数要加L或者l。 单精度的浮点数要加F或者f。 10、数据类型转换 10.1)boolean类型不参与转换 10.2)默认转换 A:从小到大 B:byte,short,char -- int -- long -- float -- double C:byte,short,char之间不相互转换,直接转成int类型参与运算。 10.3)强制转换 A:从大到小 B:可能会有精度的损失,一般不建议这样使用。 C:格式: 目标数据类型 变量名 = (目标数据类型) (被转换的数据); 10.4)思考题和面试题: A:下面两种方式有区别 float f1 = (float)12.345; float f2 = 12.345F; f1其实是通过一个double类型转换过来的,而f2本身就是个float类型。 B:下面的程序有问题吗,如果有,在哪里呢? byte b1 = 3; byte b2 = 4; byte b3 = b1 + b2; byte b4 = 3 + 4; C:字符参与运算 是查找ASCII里面的值 'a'97 'A'65 '0'48 System.out.println('a'); System.out.println('a' + 1); D:字符串参与运算 这里其实是字符串的连接 System.out.println("hello"+'a'+1); System.out.println('a'+1+"hello"); System.out.println("5+5="+5+5); System.out.println(5+5+"=5+5"); 11、变量 11.1)在程序的执行过程中,其值在某个范围内可以发生改变的量 11.2)变量的定义格式: A:数据类型 变量名 = 初始化值; B:数据类型 变量名; 变量名 = 初始化值; 12、运算符(掌握) 12.1)算术运算符 A:+,-,*,/,%,++,-- B:+的用法 a:加法 b:正号 c:字符串连接符 C:/和%的区别 数据做除法操作的时候,/取得是商,%取得是余数 D:++和--的用法 a:他们的作用是自增或者自减 b:使用 **单独使用 放在操作数据的前面和后面效果一样。 a++或者++a效果一样。 **参与操作使用 放在操作数的前面:先自增或者自减,再参与操作 int a = 10; int b = ++a; 放在操作数的后面:先参与操作,再自增或者自减 int a = 10; int b = a++; 12.2)赋值运算符 A:=,+=,-=,*=,/=,%=等 B:=叫做赋值运算符,也是最基本的赋值运算符 int x = 10; 把10赋值给int类型的变量x。 C:扩展的赋值运算符的特点 隐含了自动强制转换。 面试题: short s = 1; s = s + 1; short s = 1; s += 1; 请问上面的代码哪个有问题? 12.3)比较运算符 A:==,!=,>,>=,<,<= B:无论运算符两端简单还是复杂最终结果是boolean类型。 C:千万不要把==写成了= 12.4)逻辑运算符 A:&,|,^,!,&&,|| B:逻辑运算符用于连接boolean类型的式子 C:结论 &:有false则false |:有true则true ^:相同则false,不同则true。 情侣关系。 !:非true则false,非false则true &&:结果和&是一样的,只不过有短路效果。左边是false,右边不执行。 ||:结果和|是一样的,只不过有短路效果。左边是true,右边不执行。 12.5)位运算符(了解) A:^的特殊用法 一个数据针对另一个数据位异或两次,该数不变 B:面试题 a:请实现两个变量的交换 **采用第三方变量 **用位异或运算符 左边a,b,a 右边a^b b:请用最有效率的方式计算出2乘以8的结果 2<<3 12.6)三元运算符 A:格式 比较表达式?表达式1:表达式2; B:执行流程: 首先计算比较表达式的值,看是true还是false。 如果是true,表达式1就是结果。 如果是false,表达式2就是结果。 C:案例: a:比较两个数据是否相等 b:获取两个数据中的最大值 c:获取三个数据中的最大值 //获取三个整数中的最大值。 publicclassJavaTest{ publicstaticvoidmain(String[]args){ intx=10; inty=5; intz=20; System.out.println(x>y?"x大于y":"x小于y"); intx=10; inty=5; intz=(x>y?x:y); System.out.println("z:"+z); //第一种方法:先比较a、b最大值,在拿a、b最大值和c比较。 intx=10; inty=5; intz=20; inttemp=((x>y)?x:y); intmax=((temp>z)?temp:z); System.out.println("abc最大值是:"+max); //第二种方法(不推荐) intmax=(x>y)?((x>z)?x:z):((y>z)?y:z); System.out.println("abc最大值是:"+max); 获取两个整数是否相同 booleanflag=(x==y)?true:false;//不需要ture和false,因为是booleam类型。 booleanflag=(x==y); System.out.println(flag);