helloworld
class HelloWorld { public static void main(String[] args) { System.out.println("helloworld"); } }
注释
//注释:用于解释说明程序的文字 /* 注释的分类: 单行注释 一般用于解释说明单行程序 格式是://注释文字 多行注释 一般用于解释说明多行程序 格式是: 文档注释 一般是对类或者方法进行说明,被javadoc工具解析生产一个文档说明书。 格式是: */ //注意:多行注释不能嵌套写,而单行注释可以。 //这是我的学生案例 //class是java中用来定义类的 //定义类的格式是:class 类名 /* 这是我的学生案例 class是java中用来定义类的 定义类的格式是:class 类名 */ /** */ class Student { public static void main(String[] args) { System.out.println("我是学生"); } }
带注释的helloworld
/* 需求:我要完成HelloWorld案例 分析: A:java语言最基本的单位是类,所以我们首先要定义一个类 B:java程序要想能够独立运行,必须有主方法 C:如果想要程序有输出,必须有输出语句 步骤: A:定义类的格式 class 类名 { //类体 } B:主方法的格式 public static void main(String[] args) { //方法体 } C:输出语句的格式 System.out.println("这里的内容是可以改"); 最后把我们的思想用代码给体现出来 */ //这是我的带注释的HelloWorld案例 //class用来定义类 class HelloWorld { /* 这是main方法 main方法是程序的入口 jvm会自动调用main方法 */ public static void main(String[] args) { //这是输出语句 System.out.println("HelloWorld"); } }
/* 注释的作用: A:解释说明程序,提高程序的阅读性 B:可以帮助我们调试程序 */ class Demo { public static void main(String[] args) { System.out.println("HelloWorld"); System.out.print("我爱林青霞"); //println与print区别在于换行与非换行 System.out.print("我爱Java"); System.out.print("我爱张瑜"); } }
关键字
/* 关键字:被Java语言赋予特定含义的单词 关键字的特点:关键字都是小写的 关键字注意事项 A:goto和const作为保留字存在,目前并不使用 B:类似Editplus这样的高级记事本,针对关键字有特殊的颜色标记,非常直观 */ class KeyWord { public static void main(String[] args) { System.out.println("HelloWorld"); } }
标识符
/* 标识符:就是给类,接口,方法,变量等起名字时使用的字符序列(字符串) 组成规则: A:英文字母大小写 B:数字 C:_和$ 注意事项: A:不能以数字开头 B:不能是Java中的关键字 C:区分大小写 Student,student 这是两个名称 常见的命名规则:见名知意 A:包 其实就是文件夹,用于解决相同类名问题 全部小写 单级:com 多级:cn.itcast B:类或者接口 一个单词:首字母大写 Student,Person,Teacher 多个单词:每个单词的首字母大写 HelloWorld,MyName,NameDemo C:方法或者变量 一个单词:全部小写 name,age,show() 多个单词:从第二个单词开始,每个单词首字母大写 myName,showAllStudentNames() D:常量 一个单词:全部大写 AGE 多个单词:每个单词都大写,用_连接 STUDENT_MAX_AGE */ class NameDemo { public static void main(String[] args) { System.out.println("Hello World!"); } }
常量
/* 常量:在程序执行的过程中其值不可以发生改变 举例:π 分类: A:字面值常量 1,12.5 B:自定义常量(面向对象部分讲解) 字面值常量分类: A:字符串常量 用""括起来的内容 String B:整数常量 所有的整数数据 int C:小数常量 所有的带小数的数据 float/double D:字符常量 用单引号括起来的内容 char E:布尔常量 只有两个值:true和false blolean F:空常量 null(数组部分去讲解) null */ class ConstantDemo { public static void main(String[] args) { //字符串常量 System.out.println("HelloWorld"); //整数常量 System.out.println(100); //小数常量 System.out.println(12.345); //字符常量 System.out.println('A'); //下面的是错误的 //System.out.println('BC');//此条错误 System.out.println('1'); //布尔常量 System.out.println(true); System.out.println(false); } }
进制转换
/* 二进制 由0,1组成。以0b开头 八进制 由0,1,…7组成。以0开头 十进制 由0,1,…9组成。整数默认是十进制的 十六进制 由0,1,…9,a,b,c,d,e,f(大小写均可)。以0x开头 */ class JinZhiDemo { public static void main(String[] args) { System.out.println(0b100);//4 System.out.println(0100);//64 System.out.println(100);//100 System.out.println(0x100);//256 } }
变量
/* 成员变量和局部变量的区别: A:在类中的位置不同 成员变量 类中方法外 局部变量 方法内或者方法声明上 B:在内存中的位置不同 成员变量 堆内存 局部变量 栈内存 C:生命周期不同 成员变量 随着对象的存在而存在,随着对象的消失而消失 局部变量 随着方法的调用而存在,随着方法的调用完毕而消失 D:初始化值不同 成员变量 有默认的初始化值 局部变量 没有默认的初始化值,必须先定义,赋值,才能使用。 注意: 如果有同名的变量,一般会采用就近原则。 */ class VariableDemo { //成员变量 堆内存 int x; public static void main(String[] args) { //局部变量 栈内存 int y; y = 0; //如果不赋值,将报错,成员变量有默认初始值. System.out.println(y); VariableDemo vd = new VariableDemo(); System.out.println(vd.x); } }
数据类型
/* 为了更好的表达现实世界的事物,Java针对不同的事物提供了不同的数据类型。 数据类型: 基本类型:4类8种 引用类型:类,接口,数组。(后面讲) 基本类型: 整数: 占用的内存空间 byte 1字节 01111111 10000000(1既表示符号位,又表示数值 -128) short 2字节 int 4字节 long 8字节 浮点数: float 4字节 double 8字节 字符: char 2字节 布尔: boolean 未知。1字节 面试题: Java中字符可以存储一个汉字吗? 可以。因为Java语言采用的是unicode编码, 而unicode编码的每个字符是两个字节, 所以,java中的字符可以存储一个汉字。 注意: 整数默认是int类型 浮点数默认是double类型 long类型的变量,要加l或者L。 float类型的变量,要加f或者F。 在同一对{}里面,是不能有同名的变量。 */ class DataType { public static void main(String[] args) { //定义变量的格式: //数据类型 变量名 = 初始化值; //定义byte类型的变量 byte b = 1; System.out.println(1); System.out.println(b); //定义short类型的变量 short s = 100; System.out.println(s); //定义int类型的变量 int i = 100000; System.out.println(i); //报错 //int j = 2147483648; //System.out.println(j); //定义long类型的变量 long l = 2147483648L; System.out.println(l); //定义float类型的变量 float f = 12.34F; System.out.println(f); //定义double类型的变量 double d = 23.56; System.out.println(d); //定义char类型的变量 char ch = 'a'; System.out.println(ch); //定义boolean类型的变量 boolean flag = true; System.out.println(flag); } }
类型转换
/* +是一个运算符, 我们应该能够看懂,做数据的加法。 参与运算的数据,要求类型一致。 boolean类型不能转换为其他的数据类型。 隐式转换: A:byte,short,char-->int-->long-->float-->double B:byte,short,char相互之间不转换,他们参与运算首先转换为int类型 */ class DataTypeDemo { public static void main(String[] args) { //类型一样的数据 int a = 10; int b = 20; System.out.println(a + b); int c = a + b; System.out.println(c); System.out.println("--------------"); //定义变量 byte by = 3; int i = 4; System.out.println(by + i); int j = by + i; System.out.println(j); } }
/* 强制转换:从大到小,不建议使用,因为可能有精度的丢失。 目标类型 变量名=(目标类型)(被转换的数据); */ class DataTypeDemo2 { public static void main(String[] args) { //定义变量 byte by = 3; int i = 4; byte bb = (byte)(by + i); System.out.println(bb); } }
/* +:做加法操作 A:针对数据操作 B:针对字符进行做+ ASCII码表 '0' 48 'A' 65 'a' 97 C:针对字符串进行做+ 在字符串的操作中,叫字符串连接符 */ class DataTypeDemo3 { public static void main(String[] args) { System.out.println('a'); System.out.println('a'+1); System.out.println('A'+0); System.out.println('0'+0); System.out.println("-----------"); System.out.println('a'+'b'); System.out.println("a"+"b"); 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"); } }
/* byte b1=3,b2=4,b; b=b1+b2; b=3+4; 哪句是编译失败的呢?为什么呢? b=b1+b2; 原因: 变量相加,它首先提示类型,再做操作。 常量相加,它先做操作,然后判断结果是否在左边的范围内容,如果在就不报错。如果不在,报错。 */ class DataTypeTest { public static void main(String[] args) { byte b1=3,b2=4,b; //b = b1+b2; //右边类型自动提升 b = 3+4; } }
/* byte b = 130;有没有问题?如果我想让赋值正确,可以怎么做?结果是多少呢? */ class DataTypeTest2 { public static void main(String[] args) { //byte b = 130; //解决方案 //方案1 //int a = 130; //方案2 byte b = (byte) 130; System.out.println(b); } } /* 十进制:130 A:第一步,先把十进制转换为二进制 二进制:000000000 000000000 000000000 100000010 由于此二进制是一个正数,所以,补码也是000000000 000000000 000000000 100000010。 B:做强制类型转换 二进制:000000000 000000000 000000000 100000010 截取后就变成了:100000010 C:操作后的数据是补码,你看到的是原码 符号位 数值位 补码: 1 00000010 反码: 1 00000001 原码: 1 11111110 */
class DataTypeTest3 { public static void main(String[] args) { byte b = (byte)300; System.out.println(b); System.out.println((byte)127); System.out.println((byte)128); System.out.println((byte)129); System.out.println((byte)130); System.out.println((byte)131); } } /* 十进制:300 A:把十进制转换为二进制 00000000 00000000 00000001 00101100 B:截取 0 0101100 */
算数运算符
/* 运算:对常量和变量进行操作的过程称为运算。 运算符:对常量和变量进行操作的符号称为运算符 表达式:由运算符把常量和变量连接起来的式子 a + b 注意:表达式必须有结果 常见的运算符: 算术运算符 赋值运算符 比较运算符 逻辑运算符 位运算符 三目运算符 算术运算符: +,-,*,/,%,++,-- */ class OperatorDemo { public static void main(String[] args) { System.out.println(10+20); System.out.println(10-20); System.out.println(10*20); //整数相除,只能得到整数 System.out.println(10/20); //要想得到小数,可以乘以或者除以1.0 System.out.println(10/1.0/20); //加法的用法:正号,加法,字符串连接符 System.out.println(+5); System.out.println(1+2); System.out.println("1"+"2"); } }
赋值运算符
/* 赋值运算符: 基本:= 复合:+=,-=,*=,/=,%=,... */ class OperatorDemo { public static void main(String[] args) { //把10赋值给int类型的变量a int a = 10; //复合的用法 int b = 10; b += 20; //结果等价于:b = b + 20; System.out.println(b); } }
关系运算符
/* 关系运算符: ==,!=,>,>=,<,<= 特点: 无论表达式是简单还是复杂,结果肯定是boolean类型。 注意事项: 关系运算符“==”不能误写成“=” 。 */ class OperatorDemo { public static void main(String[] args) { int a = 10; int b = 10; int c = 20; System.out.println(a == b); System.out.println(a == c); System.out.println((a + b*c) == (a*b + c)); System.out.println("----------------"); System.out.println(a = b); //把b的值赋值给a,把a的值作为结果留下来 System.out.println(a = c); } }
逻辑运算符
/* 逻辑运算符: &,|,!,^ &&,|| 注意: 逻辑运算符连接的应该是一个布尔表达式。 */ class OperatorDemo { public static void main(String[] args) { //&,|,!,^ int a = 10; int b = 20; int c = 30; //&:逻辑与 有false则false System.out.println(a>b & a>c); //false & false = false System.out.println(a>b & a<c); //false & true = false System.out.println(a<b & a>c); //true & false = false System.out.println(a<b & a<c); //true & true = true System.out.println("--------"); //|:逻辑或 有true则true System.out.println(a>b | a>c); //false | false = false System.out.println(a>b | a<c); //false | true = true System.out.println(a<b | a>c); //true | false = true System.out.println(a<b | a<c); //true | true = true System.out.println("--------"); //^:逻辑异或 相同false,不同true。 //情侣:男男,男女,女男,女女 System.out.println(a>b ^ a>c); //false ^ false = false System.out.println(a>b ^ a<c); //false ^ true = true System.out.println(a<b ^ a>c); //true ^ false = true System.out.println(a<b ^ a<c); //true ^ true = false System.out.println("--------"); //!:逻辑非 System.out.println((a>b));//false System.out.println(!(a>b));//true System.out.println(!!(a>b));//false System.out.println(!!!(a>b));//true System.out.println(!!!!(a>b));//false } }
位运算符
/* 位运算符:位运算符一定是先把数据转成二进制,然后再运算。 面试题:&和&&的区别? A:&和&&都可以作为逻辑运算,&&具有短路效果。 B:&还可以作为位运算。 */ class OperatorDemo { public static void main(String[] args) { //&,|,^,~ System.out.println(3 & 4); //0 System.out.println(3 | 4); //7 System.out.println(3 ^ 4); //7 System.out.println(~3); // } } /* A:计算出3,4的二进制 3的二进制:00000000 00000000 00000000 00000011 4的二进制:00000000 00000000 00000000 00000100 B:位&运算 有0则0 00000000 00000000 00000000 00000011 &00000000 00000000 00000000 00000100 ------------------------------------ 00000000 00000000 00000000 00000000 C:位|运算 有1则1 00000000 00000000 00000000 00000011 &00000000 00000000 00000000 00000100 ------------------------------------ 00000000 00000000 00000000 00000111 D:位^运算 相同则0,不同则1 00000000 00000000 00000000 00000011 &00000000 00000000 00000000 00000100 ------------------------------------ 00000000 00000000 00000000 00000111 E:位~运算 把数据每个位都按位取反 00000000 00000000 00000000 00000011 ~11111111 11111111 11111111 11111100 反:11111111 11111111 11111111 11111011 原:10000000 00000000 00000000 00000100 */
三元运算符
/* 三元运算符: 格式 (关系表达式)?表达式1:表达式2; 执行流程: 计算关系表达式,看其返回值 true:表达式1就是整个表达式的值 false:表达式2就是整个表达式的值 */ class OperatorDemo { public static void main(String[] args) { //获取两个数据中的较大值 int x = 3; int y = 4; int z = (x > y)? x : y; System.out.println(z); //比较两个数是否相等 int a = 4; int b = 4; //boolean flag = (a==b)?true:false; boolean flag = (a == b); System.out.println(flag); //获取三个数据中的较大值 int c = 30; int d = 40; int e = 50; //int max = (c>d)?(c>e?c:e):(d>e?d:e); int temp = (c>d)?c:d; int max = (temp>e)?temp:e; System.out.println(max); } }
键盘录入数据
/* 为了程序的数据更加的灵活,我们决定加入键盘录入数据。 如何使用键盘录入数据呢?目前你就给我记住了。 A:导包 import java.util.Scanner; 在class的上面 B:创建对象 Scanner sc = new Scanner(System.in); C:获取数据 int i = sc.nextInt(); */ import java.util.Scanner; class OperatorDemo { public static void main(String[] args) { //创建键盘录入对象 Scanner sc = new Scanner(System.in); System.out.println("请输入一个整数:"); //获取数据 int i = sc.nextInt(); System.out.println("i:"+i); } }
顺序结构语句
/* 是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序, 依次执行,程序中大多数的代码都是这样执行的。 总的来说:写在前面的先执行,写在后面的后执行 */ class OrderDemo { public static void main(String[] args) { System.out.println("我爱林青霞"); System.out.println("我爱Java"); System.out.println("我爱张曼玉"); System.out.println("林青霞爱张曼玉"); } }
选择结构(if语句)
/* 选择结构:if语句,switch语句。 if语句有三种格式。 if语句格式1: if(关系表达式) { 语句体; } 执行流程: A:计算关系表达式,看其结果 B:如果是true,就执行语句体 如果是false,就不执行语句体 C:继续向下执行 */ class IfDemo { public static void main(String[] args) { int x = 3; if(x == 3) { System.out.println("x等于3"); //x = 10; } if(x > 5) { System.out.println("x大于5"); } System.out.println("over"); } }
选择结构(switch语句)
/* switch语句格式: switch(表达式) { case 值1: 语句体1; break; case 值2: 语句体2; break; … default: 语句体n+1; break; } 格式解释: A:switch表示这是switch语句 B:表达式的取值 byte,short,int,char JDK5以后可以是枚举类型。(enum) JDK7以后可以是字符串。(String) C:case后面跟的是要和表达式进行比较的值 D:语句体可以是多条语句 E:break表示中断,结束的意思,可以结束switch语句 F:default语句表示所有情况都不匹配的时候,就执行该处的内容,和if语句的else相似。 面试题: switch的表达式可以是byte类型吗?可以是long类型吗?可以是String类型吗? 可以。 不可以。 JDK7以后可以。 执行流程: A:首先计算出表达式的值 B:其次,和case依次比较,一旦有对应的值,就会执行相应的语句, 在执行的过程中,遇到break就会结束。 C:最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。 需求:根据键盘录入的数值1,2,3,…7输出对应的星期一,星期二,星期三…星期日。 分析: A:键盘录入数据,用Scanner实现 B:对录入的数据进行判断,用switch实现 C:输出对应的结果 */ import java.util.Scanner; class SwitchDemo { public static void main(String[] args) { //创建键盘录入对象 Scanner sc = new Scanner(System.in); //键盘录入数据 System.out.println("请输入一个数据(1-7):"); int week = sc.nextInt(); //用switch语句实现 switch(week) { case 1: System.out.println("星期一"); break; case 2: System.out.println("星期二"); break; case 3: System.out.println("星期三"); break; case 4: System.out.println("星期四"); break; case 5: System.out.println("星期五"); break; case 6: System.out.println("星期六"); break; case 7: System.out.println("星期日"); break; default: System.out.println("你输入的数据有误"); break; } } }
循环语句(for)
/* for循环的格式: for(初始化语句;判断条件语句;控制条件语句) { 循环体语句; } 执行流程: A:首先执行初始化语句 B:其次执行判断条件语句,看其返回值 如果是true,就继续 如果是false,循环结束 C:执行循环体语句 D:执行控制条件语句 E:回到B */ class ForDemo2 { public static void main(String[] args) { //在控制台输出10次HelloWorld for(int x=0; x<10; x++) { System.out.println("HelloWorld"); } System.out.println("--------------"); //初始化不从0开始 for(int x=1; x<=10; x++) { System.out.println("HelloWorld"); } for(int x=1; x<11; x++) { System.out.println("HelloWorld"); } for(int x=10; x>0; x--) { System.out.println("HelloWorld"); } } }
循环语句(while)
/* while循环的格式: while(条件表达式) { 语句体; } 变形格式: 初始化语句; while(判断条件语句) { 循环体语句; 控制条件语句; } for(初始化语句;判断条件语句;控制条件语句) { 循环体语句; } 由此可见while循环和for循环是可以等价转换的。 */ class WhileDemo { public static void main(String[] args) { //for /* for(int x=0; x<10; x++) { System.out.println("HelloWorld"); } System.out.println("--------------"); */ //while /* int x=0; while(x<10) { System.out.println("HelloWorld"); x++; } */ //求和 //for /* int sum = 0; for(int x=1; x<=100; x++) { sum+=x; } System.out.println("1-100之和是:"+sum); */ //while /* int sum = 0; int x = 1; while(x<=100) { sum += x; x++; } System.out.println("1-100之和是:"+sum); */ //水仙花 //for /* for(int x=100; x<1000; x++) { int ge = x%10; int shi = x/10%10; int bai = x/10/10%10; if(x == (ge*ge*ge + shi*shi*shi + bai*bai*bai)) { System.out.println(x); } } */ //while int x = 100; while(x<1000) { int ge = x%10; int shi = x/10%10; int bai = x/10/10%10; if(x == (ge*ge*ge + shi*shi*shi + bai*bai*bai)) { System.out.println(x); } x++; } } }
循环语句(do…while)
/* do...while格式: do { 语句体; }while(条件表达式); 变形格式: 初始化语句; do { 循环体语句; 控制条件语句; }while(判断条件语句); for(初始化语句;判断条件语句;控制条件语句) { 循环体语句; } */ class DoWhileDemo { public static void main(String[] args) { /* int sum = 0; for(int x=1; x<=100; x++) { sum+=x; } System.out.println(sum); */ //do...while int sum = 0; int x = 1; do{ sum+=x; x++; }while (x<=100); System.out.println(sum); } }
循环语句(嵌套使用)
/* 需求:请输出如下图形 * ** *** **** ***** */ class ForForDemo2 { public static void main(String[] args) { //我们先输出一个5行5列的星形 /* for(int x=0; x<5; x++) { for(int y=0; y<5; y++) { System.out.print("*"); } System.out.println(); } */ //而我们现在需要的是下半部分 //通过观察图形:我们知道行没有变化,是列在变化 //第一行:1列 //第二行:2列 //第三行:3列 //第四行:4列 //第五行:5列 //既然是一个变化的数,那么我们就定义一个变量 /* int z = 0; for(int x=0; x<5; x++) { for(int y=0; y<=z; y++) { System.out.print("*"); } System.out.println(); z++; } */ //我们发现z的变化和x的变化其实是一致的 //所以我们根本就没有必要定义z变量,直接把z用x替换 for(int x=0; x<5; x++) { for(int y=0; y<=x; y++) { System.out.print("*"); } System.out.println(); } System.out.println("---------"); for(int x=1; x<=5; x++) { for(int y=1; y<=x; y++) { System.out.print("*"); } System.out.println(); } } }
控制跳转语句
/* 根据要求填空 */ class BreakAndContinue { public static void main(String[] args) { for(int x=1; x<=10; x++) { if(x%3==0) { //在此处填写代码 break; //continue; //System.out.println("Java基础班"); } System.out.println("Java基础班"); } //我想在控制台输出2次:“Java基础班“ //我想在控制台输出7次:“Java基础班“ //我想在控制台输出13次:“Java基础班“ } }
/* break:中断 break的使用场景: A:在选择结构switch语句中 B:在循环语句中 离开使用场景的存在是没有意义的 break: A:跳出单层循环 B:跳出多层循环(了解) 带标签的用法 */ class BreakDemo { public static void main(String[] args) { for(int x=0; x<10; x++) { //System.out.println(x); if(x%2==0) { break; //break后面是不能有东西的 //System.out.println(x); } System.out.println(x); } System.out.println("-------------"); wc:for(int x=0; x<3; x++) { nc:for(int y=0; y<4; y++) { System.out.print("*"); break; } System.out.println(); } } }
/* continue的使用场景: 在循环语句中 离开使用场景的存在是没有意义的 continue的作用: A:单层循环对比break,然后总结两个的区别 break 退出当前循环 continue 退出本次循环 B:也可以带标签的使用 */ class ContinueDemo { public static void main(String[] args) { //continue; for(int x=0; x<10; x++) { if(x%2==0) { //break; //结束当前循环 continue; //结束本次循环操作,进入下一次操作 } System.out.println(x); } wc:for(int x=0; x<3; x++) { nc:for(int y=0; y<4; y++) { System.out.print("*"); continue wc; } System.out.println(); } } }
/* return:结束方法的。 */ class ReturnDemo { public static void main(String[] args) { for(int x=0; x<10; x++) { if(x%3==0) { //break; //continue; return; } System.out.println(x); } System.out.println("over"); } }
方法
/* 方法:完成特定功能的代码块 格式: 修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2…) { 方法体; return 返回值; } 修饰符:public static 返回值类型:功能最终的值的数据类型 方法名:是为了方便调用而起的一个名字 参数: 形式参数:用于接受实际参数的变量 实际参数:实际参与运算的数据 方法体:完成特定功能的代码 return 返回值:通过return把结果返回给调用者 我们虽然知道了方法的格式,那么我们该如何写一个方法呢? 两个明确: A:返回值类型 结果的数据类型 B:参数列表 有几个参数参加,并且每个参数的数据类型是什么 需求:求两个数据之和的案例 A:我没有说数据的类型,默认int类型。 B:求两个数据的和 说明有两个参数参加,并且默认都是int类型 C:两个int类型相加的结果是什么类型呢? 是int类型,所以返回值类型这里是int类型 方法的执行特点: 不调用不执行。 有明确返回值的方法的调用: A:单独调用,没有意义。 B:输出调用,不是很好,因为我们可能需要针对结果还要进行其他的操作。 C:赋值调用,推荐方式。 */ class MethodDemo { public static void main(String[] args) { //定义两个变量 int x = 10; int y = 20; //单独调用 //sum(x,y); //输出调用 System.out.println(sum(x,y)); //赋值调用 int result = sum(x,y); //result进行操作 System.out.println(result); } //如果我自己要想写一个方法 public static int sum(int a,int b) { int c = a + b; return c; } }
方法重载
/* 方法重载: 在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。 和返回值类型无关。 */ class MethodDemo { public static void main(String[] args) { //需求:请写一个功能,实现两个数据的求和 System.out.println(sum(10,20)); //需求:请写一个功能,实现三个数据的求和 //System.out.println(sum2(10,20,30)); System.out.println(sum(10,20,30)); System.out.println(sum(1.5,2.5)); } public static int sum(int a,int b) { return a + b; } /* public static int sum2(int a,int b,int c) { return a + b + c; //方法的嵌套调用 //return sum(sum(a,b),c); } */ //由于方法名要表达的其实是该方法的作用 //所以,sum2这个名字不好,还是要用sum 比较好 public static int sum(int a,int b,int c) { return a + b + c; } public static double sum(double a,double b) { return a + b; } }
一维数组
/* 数组:存储同一种数据类型的多个元素的集合。(也可以称为容器) 数组的定义格式: 格式1:数据类型[] 数组名; int[] arr; 格式2:数据类型 数组名[]; int arr[]; 推荐方式1。 现在的数组没有元素,使用是没有意义的。 接下来,我们要对数组进行初始化。 那么,我们如何对数组进行初始化呢? 动态初始化:初始化时只指定数组长度,由系统为数组分配初始值。 静态初始化:初始化时指定每个数组元素的初始值,由系统决定数组长度。 动态初始化: 数据类型[] 数组名 = new 数据类型[数组长度]; */ class ArrayDemo { public static void main(String[] args) { //按照动态初始化数组的格式,我们来定义一个存储3个int类型元素的数组 int[] arr = new int[3]; /* 左边: int:说明数组中的元素的数据类型。 []:说明这是一个数组 arr:数组的名称 右边: new:为实体(对象)开辟内存空间 Scanner sc = new Scanner(System.in); int:说明数组中的元素的数据类型。 []:说明这是一个数组 3:说明的是数组中的元素个数 */ //我们如何获取里面的值呢? //数组名称 System.out.println(arr); //[I@778b3fee 地址值 //如何获取元素值呢? //数组为每个元素分配了一个编号,这个编号的专业叫法:索引。 //而且是从0开始编号的。也就是说数组的最大编号是长度-1。 //有了编号以后,我们就可以通过数组名和编号的配合取得数组元素 //格式:数组名[编号]; System.out.println(arr[0]); //0 System.out.println(arr[1]); //0 System.out.println(arr[2]); //0 } }
二位数组
/* 二维数组:元素为一维数组的数组。 定义格式1: 数据类型[][] 变量名 = new 数据类型[m][n]; m:m表示这个二维数组有多少个一维数组 n:n表示每一个一维数组的元素个数 变形: 数据类型 变量名[][] = new 数据类型[m][n]; 数据类型[] 变量名[] = new 数据类型[m][n]; int[] x,y[]; */ class Array2Demo { public static void main(String[] args) { //定义一个二维数组 int[][] arr = new int[3][2]; //表示arr这个二维数组有三个元素 //每个元素是一个一维数组 //每一个一维数组有2个元素 System.out.println(arr); //[[I@778b3fee System.out.println(arr[0]); //[I@57125f92 System.out.println(arr[1]); System.out.println(arr[2]); //如何输出元素呢? System.out.println(arr[0][1]); System.out.println(arr[2][2]); } }
To be continued
将编程看作是一门艺术,而不单单是个技术。 敲打的英文字符是我的黑白琴键, 思维图纸画出的是我编写的五线谱。 当美妙的华章响起,现实通往二进制的大门即将被打开。