赞
踩
public static void main(String[] args) ← main/psvm
System.out.println("Hello World"); ← sout
注释:注释是写在程序中对代码进行解释说明的文字,方便自己和其他人查看,以便理解程序的。注释并不影响程序的执行,由javac命令编译后的class文件不包含注释。
单行注释:// 注释内容,只能写一行 ← Ctrl+/
多行注释: /* 注释内容1 2 */ ← Ctrl+Shift+/
文档注释:/** 注释内容 */
文档注释的内容是可以提取到一个程序说明文档中去的
字面量:计算机用来处理数据的,字面量就是告诉程序员数据在程序中的书写格式。
常用数据 | 生活中的写法 | 程序中的写法 | 说明 |
---|---|---|---|
整数 | 666,-88 | 666,-88 | 写法一致 |
小数 | 13.14,-5.21 | 13.14,-5.21 | 写法一致 |
字符 | A,C,我 | ‘A’,‘C’,‘我’ | 程序中必须使用单引号,有且仅能一个字符 |
字符串 | 肚子 | “HelloWorld”,“肚子” | 程序中必须使用双引号,内容可有可无 |
布尔值 | 真、假 | true、false | 只有两个值:true代表真,false代表假 |
空值 | 值是:null | 一个特殊的值,空值 | |
特殊的字符:\n 代表的是换行的意思,\t 代表的一个tab |
数据类型 变量名称=数据
字符’A’对应的数字是65
字符’a’对应的数字是97
字符’0’对应的数字是48
int studyNumber =59;
HelloWorld,Student
Debug工具:IDEA自带的断点调试工具,可以控制代码从断点开始一行一行的执行,然后详细观看程序执行的情况
基本数据类型:4大类8大种
long lg = 424242244444L; // 默认是int类型,加上L/l就是long类型的数据了
float f = 3.14F; // 默认是double类型,加上F/f就是float类型了
double d = 56.45;
String name = "张三";
byte a = 12;
int b = a;
System.out.println(b); // 12
byte 、short、char → int → long → float → double
byte i = 10;
short j = 30;
int rs = i + j;
数据类型 变量2=(数据类型)变量1、数据
int a = 20;
byte b = (byte)a;
int i= 1500;
int i = 1500;
byte j = (byte)i;
System.out.println(j); // -36
double d = 99.5;
int m = (int)d; // 强制类型转换
System.out.println(m); // 99 丢掉小数部分,保留整数部分
int a2 = 5;
System.out.println("abc" + a2); // "abc5"
System.out.println(a2 + 5);// 10
System.out.println("itheima" + a2 + 'a'); // "itheima5a"
System.out.println(a2 + 'a' + "itheima"); // 102itheima
int a = 10;
int rs = ++a; (先加再用)
放在变量的后面,先拿变量的值进行运算,再对变量的值进行+1、-1
int b = 10;
int rs = b++; (先用再加)
int a = 10; // 先看“=”右边,把数据10赋值给左边的变量a存储
一定是“==”,千万不要把“==”误写成“=”
条件表达式 ? 值1 : 值2;
System.out.println(10 > 3|| 10 > 3 && 10 < 3); // true
int age = sc.nextInt()
String name = sc.next()
int a = 20; int[] arr = new int[3]
这两行代码的执行原理?new int[3]
是创建一个数组对象,会在堆内存中开辟区域存储3个整数NullPointerException
方法定义时:需要按照方法解决的实际业务需求,来设计合理的方法形式解决问题
注意事项:
1、如果方法不需要返回数据,返回值类型必须申明成void(无返回值申明),此时方法内部不可以使用return返回数据
2、方法如果不需要接收数据,则不需要定义形参,且调用方法时也不可以传数据给方法了
3、没有参数,且没有返回值类型(void)申明的方法,称为无参数、无返回值的方法,依次类推
方法使用时的常见问题:
1、方法在类中的位置放前放后无所谓,但一个方法不能定义在另一个方法里面。
2、方法的返回值类型写==void(无返回申明)==时,方法内不能使用return返回数据,如果方法的返回值类型写了具体类型,方法内部则必须使用return返回对应类型的数据。
3、return语句的下面,不能编写代码,属于无效的代码,执行不到这儿。
4、方法不调用就不会执行,调用方法时,传给方法的数据,必须严格匹配方法的参数情况。
5、调用有返回值的方法,有3种方式:1、可以定义变量接收结果,2、或者直接输出调用,3、甚至直接调用;
6、调用无返回值的方法,只有1种方式:只能直接调用
方法的执行原理:在栈内存中先进后出
Java的参数传递机制都是:值传递
所谓值传递:指的是在传输实参给方法的形参的时候,传输的是实参变量中存储的值的副本
实参:在方法内部定义的变量
形参:定义方法时“(….)”中所声明的参数
基本类型和引用类型的参数在传递的时候有什么不同?
都是值传递!
基本类型的参数传输存储的数据值
引用类型的参数传输存储的地址值
重载:一个类中,出现多个方法的名称相同,但是它们的形参列表是不同的,那么这些方法就称为方法重载了
不同的是,break关键字是跳出并结束当前所在循环的执行;continue关键字是结束当前所在循环的当次继续,进入下一次执行
public static double calculate(double price, int month, String type) { // 1.判断月份是淡季还是旺季 if (month >= 5 && month <= 10) { // 旺季 // 2.判断仓位类型 switch (type) { case "头等舱": price *= 0.9; break; case "经济舱": price *= 0.85; break; } } else { // 淡季 switch (type) { case "头等舱": price *= 0.7; break; case "经济舱": price *= 0.65; break; } } return price; }
public static String createCode(int n) { // 1、定义一个for循环用于控制产生多少位随机字符 Random r = new Random(); // 3、定义一个String类型的变量用于记住产生的每位随机字符 String code = ""; for (int i = 1; i <= n; i++) { // i=1 2 3 4 5 // 2、为每个位置生成一个随机字符:可能是数字、大小写字母。 // 思路:随机一个812之间的数字出来,日代表随机一个数字字符。1、2代表随机大写字母,小写字母。 int type = r.nextInt(3); // 012 switch (type) { case 0: // 随机一个数字字符 code += r.nextInt(10); //0-9 code = code +8 break; case 1: // 随机一个大写字符A 65 Z 65+25 (0-25)+65 char ch1 = (char) (r.nextInt(26) + 65); code += ch1; break; case 2: // 随机一个小写字符a 97 z 97+25 (0-25)+97 char ch2 = (char) (r.nextInt(26) + 97); code += ch2; break; } } return code; }
[0-100]
之间的整数。选手最后得分为:去掉最高分、最低分后剩余分数的平均分,请编写程序能够录入多名评委的分数,并算出选手的最终得分。public static double getAverageScore(int number) { // 1、定义一个动态初始化的数组,负责后期存入评委的打分 int[] scores = new int[number]; // 6 // scores = [0, 0, 0, 0, 0, 0] // 2、遍历数组的每个位置,依次录入评委的分数 Scanner sc = new Scanner(System.in); for (int i = 0; i < scores.length; i++) { // i=0 1 2 3 4 5 System.out.println("请您录入第" + (i + 1) + "个评委的分数:"); int score = sc.nextInt(); scores[i] = score; } //3、从数组中计算出总分,找出最高分,最低分。 int sum = 0; // 求总分用的变量 int max = scores[0]; //求最大值的 int min = scores[0]; //求最小值的。 //遍历数组找出这些数据的. for (int i = 0; i < scores.length; i++) { // i= 0 1 2 3 4 5 int score = scores[i]; // 求和 sum += score; // 求最大值 if (score > max) { max = score; } // 求最小值 if (score < min) { min = score; } } //4、计算出平均分并返回 return 1.0 * (sum - min - max) / (number - 2); }
public static String encrypt(int number) { // number = 1983 // 1、把这个密码拆分成一个一个的数字,才可以对其进行加密 int[] numbers = split(number); // numbers = [1,9,8,3] // 2、遍历这个数组中的每个数字,对其进行加密处理。 for (int i = 0; i < numbers.length; i++) { // i = 0 1 2 3 numbers[i] = (numbers[i] + 5) % 10; } // numbers = [6,4,3,8] // 3、对数组反转,把对数组进行反转的操作交给一个独立的方法来 reverse(numbers); // numbers = [8,3,4,6] // 4、把这些加密的数字拼接起来做为加密后的结果返回即可。 String data = ""; for (int i = 0; i < numbers.length; i++) { data += numbers[i]; } return data; } public static void reverse(int[] numbers) { // 反转数组的 // numbers = [6, 4,3,8] for (int i = 0, j = numbers.length - 1; i < j; i++, j--) { //交换1和j位置处的值。 // 1、把后一个位置处的值交给一个临时变量先存起来 int temp = numbers[j]; // 2、把前一个位置处的值赋值给后一个位置处 numbers[j] = numbers[i]; // 3、把后一个位置处原来的值(由临时变量记住着)赋值给前一个位置 numbers[i] = temp; } } public static int[] split(int number) { // number = 1983 int[] numbers = new int[4]; numbers[0] = number / 1000; numbers[1] = (number / 100) % 10; numbers[2] = (number / 10) % 10; numbers[3] = number % 10; return numbers; }
public static void printArray(int[] arr) { System.out.print("["); for (int i = 0; i < arr.length; i++) { System.out.print(i == arr.length - 1 ? arr[1] : arr[1] + ","); System.out.println("]"); } } public static int[] copy(int[] arr) { // arr = [11,22,33] // 1、创建一个长度一样的整型数组出来。 int[] arr2 = new int[arr.length]; // arr2 = [0,8,0] // 2、把原数组的元素值对应位置赋值给新数组。 for (int i = 0; i < arr.length ; i++){ // i = 0 1 2 arr2[i] = arr[i]; } return arr2; }
public static void start(int[] moneys) { // moneys = [9, 666, 188, 520, 99999] Scanner sc = new Scanner(System.in); Random r = new Random(); int temp; // 1、定义一个for循环,控制打乱5次来确定为抽奖顺序 for (int i = 0; i < 5; i++) { int index = r.nextInt(5); temp = moneys[index]; moneys[index] = moneys[i]; moneys[i] = temp; } for (int i = 0; i < 5; i++) { // 2、提示粉丝抽奖 System.out.println("请发送弹幕来开始抽奖:"); sc.next(); // 等待用户输入内容,按了回车才往下走 System.out.println("恭喜您抽中了红包:" + moneys[i] + "!"); } System.out.println("活动结束..."); }
public static int search(int start, int end) { int count = 0; // start = 101 end =200 // 1、定义一个for循环找到101到200之间的每个数据 for (int i = start; i <= end ; i++){ // i =101 102 183... 199 200 //信号位思想 boolean flag = true; // 假设的意思:默认认为当前i记住的数据是素数. //2、判断当前1记住的这个数据是否是素数。 for (int j = 2; j <= i / 2 ; j++) { if (i % j == 0) { // i当前记住的这个数据不是素数了 flag = false; break; } } // 3、根据判定的结果决定是否输出i当前记住的数据:是素数才输出展示。 if (flag) { System.out.println(i); count++; } } return count; }
乘法表代码:
public static void main(String[] args) {
// 1、定义一个for循环控制打印多少行
for (int i = 1; i <= 9; i++) {
// i=123456789
// 2、定义一个内部循环控制每行打印多少列。
for (int j = 1; j <= i; j++) {
// i 行 j 列
System.out.print(j + "x" + i + "=" + (j * i) + "\t");
}
System.out.println(); // 换行
}
}
打印星星代码:
public static void main(String[] args) { // 1、先定义一个循环控制打印多少行 int n = 5; for (int i = 1; i <= n; i++) { //2、控制打印多少个空格 for (int j = 1; j <= (n - i); j++) { System.out.print(" "); } //3、控制打印多少个星星 for (int j = 1; j <= (2 * i - 1); j++) { System.out.print(j % 2 == 0 ? " " : "*"); } //4、换行 System.out.println(); } }
public static void main(String[] args) { // 目标:完成双色球系统的开发。 int[] userNumbers = userSelectNumbers(); System.out.println("您投注的号码:"); printArray(userNumbers); int[] luckNumbers = createLuckNumbers(); System.out.println("中奖的号码:"); printArray(luckNumbers); judge(userNumbers, luckNumbers); } /** 1、设计一个方法,用于让用户投注一组号码并返回(前6个是红球号码,最后1个是蓝球号码 )*/ public static int[] userSelectNumbers(){ // 2、创建一个整型数组,用于存储用户投注的7个号码(前6个是红球号码,最后1个是蓝球号码 ) int[] numbers = new int[7]; // numbers = [0, 0, 0, 0, 0, 0, 0] // 0 1 2 3 4 5 6 Scanner sc = new Scanner(System.in); // 3、遍历前6个位置,让用户依次投注6个红球号码,存入 for (int i = 0; i < numbers.length - 1; i++) { // i = 0 1 2 3 4 5 while (true) { // 4、开始让用户为当前位置投注一个红球号码(1-33之间,不能重复) System.out.println("请您输入第" + (i + 1) + "个红球号码(1-33之间,不能重复):"); int number = sc.nextInt(); // 5、先判断用户输入的红球号码是否在1-33之间 if(number < 1 || number > 33){ System.out.println("对不起,您输入的红球号码不在1-33之间,请确认!"); }else { // 号码是在1-33之间了,接着还要继续判断这个号码是否重复,不重复才可以使用。 if(exist(numbers, number)){ // number当前这个红球号码是重复了。 System.out.println("对不起,您当前输入的红球号码前面选择过,重复了,请确认!"); }else { // number记住的这个号码没有重复了,就可以使用了。 numbers[i] = number; break; // 结束当次投注,结束了当前死循环。 } } } } // 6、投注最后一个蓝球号码。 while (true) { System.out.println("请您输入最后1个蓝球号码(1-16):"); int number = sc.nextInt(); if(number < 1 || number > 16){ System.out.println("对不起,您输入的蓝球号码范围不对!"); }else { numbers[6] = number; break; // 蓝球号码录入成功,结束死循环 } } return numbers; } private static boolean exist(int[] numbers, int number) { // 需求:判断number这个数字是否在numbers数组中存在。 // numbers = [12, 25, 18, 0, 0, 0, 0] // number = 12 for (int i = 0; i < numbers.length; i++) { if(numbers[i] == 0){ break; } if(numbers[i] == number){ return true; } } return false; } public static void printArray(int[] arr) { System.out.print("["); for (int i = 0; i < arr.length; i++) { System.out.print(i == arr.length - 1 ? arr[i] : arr[i] + ", "); } System.out.println("]"); } /** 2、设计一个方法:随机一组中奖号码出来(6个红球号码,1个蓝球号码 )*/ public static int[] createLuckNumbers(){ // 1、创建一个整型数组,用于存储这7个号码 int[] numbers = new int[7]; Random r = new Random(); // 2、遍历前6个位置处,依次随机一个红球号码存入(1-33 不重复) for (int i = 0; i < numbers.length - 1; i++) { // i = 0 1 2 3 4 5 while (true) { // 3、为当前这个位置随机一个红球号码出来存入。 1 - 33 ==> -1 ===> (0 , 32) + 1 int number = r.nextInt(33) + 1; // 4、判断这个号码是否之前出现过(红球号码不能重复)。 if(!exist(numbers, number)){ // number不重复。 numbers[i] = number; break; // 结束死循环,代表找到了当前这个位置的一个不重复的红球号码了。 } } } // 3、录入一个蓝球号码。 1-16 numbers[6] = r.nextInt(16) + 1; return numbers; } /** 3、设计一个方法,用于判断用户的中奖情况 */ public static void judge(int[] userNumbers,int[] luckNumbers){ // userNumbers = [12, 14, 16, 18, 23, 26, 8] // luckNumbers = [16, 17, 18, 19, 26, 32, 8] // 2、分别定义2个变量用于记住红球命中了几个以及蓝球命中了几个 int redCount = 0; int blueCount = 0; // 先判断红球命中的数量。 // 遍历用户投注的号码的前6个红球 for (int i = 0; i < userNumbers.length - 1; i++) { // userNumbers[i] // 开始遍历中奖号码的前6个红球号码,看用户当前选择的这个号码是否命中了 for (int j = 0; j < luckNumbers.length - 1; j++) { if(userNumbers[i] == luckNumbers[j]){ redCount++; break; } } } // 3、判断蓝球是否命中了 blueCount = userNumbers[6] == luckNumbers[6] ? 1 : 0; System.out.println("您命中的红球数量是:" + redCount); System.out.println("您命中的蓝球数量是:" + blueCount); // 4、判断中奖详情,并输出结果 if(redCount == 6 && blueCount == 1){ System.out.println("恭喜您,中奖1000万,可以开始享受人生了~~~"); }else if(redCount == 6 && blueCount == 0){ System.out.println("恭喜您,中奖500万,可以稍微开始享受人生了~~~"); }else if(redCount == 5 && blueCount == 1){ System.out.println("恭喜您,中奖3000元,可以出去吃顿小龙虾了~"); }else if(redCount == 5 && blueCount == 0 || redCount == 4 && blueCount == 1){ System.out.println("恭喜您,中了小奖:200元~"); }else if(redCount == 4 && blueCount == 0 || redCount == 3 && blueCount == 1){ System.out.println("中了10元~"); }else if( redCount < 3 && blueCount == 1){ System.out.println("中了5元~"); }else { System.out.println("感谢您对福利事业做出的巨大贡献~~~"); } }
面向对象编程快速入门,计算机是用来处理数据的。开发一个一个的对象,把数据交给对象,再调用对象的方法来完成对数据的处理!
计算机执行代码时,先将class文件加载至方法区,main方法进入栈内存,并加载new出来的s1和s2新对象,同时记录着加载在堆内存的表的首地址,实现多个对象在计算机中的执行
对象在计算机中的执行原理是怎么回事?
Student s1 = new Student();
这是引用类型的变量,因为s1存储的是地址
每次new Student(),就是在堆内存中开辟一块内存区域代表一个学生对象
s1变量里面记住的是学生对象的地址
this:this就是一个变量,可以用在方法中,来拿到当前对象
主要用于解决:变量名称冲突问题
在方法中this是被隐含调用了才拿到了当前对象,如下方法区中的
public void printThis(Student this)
中的Student this
即被默认调用了,无需额外添加
public class Student {
/** 构造器*/
public Student() {
Student s = new Student();
}
Student s = new Student();
package com.java.object; import java.util.Scanner; /** 目标:完成电影信息展示功能; 根据电影id查询该电影详情。 电影数据: 1,"水门桥", 38.9, 9.8, "徐克", "吴京","12万人想看" 2,"出拳吧", 39, 7.8, "唐晓白", "田雨","3.5万人想看" 3,"月球陨落", 42, 7.9, "罗兰", "贝瑞","17.9万人想看" 4,"一点就到家", 35, 8.7, "许宏宇", "刘昊然","10.8万人想看" */ public class MovieTest { public static void main(String[] args) { // 1、设计一个电影类 // 2、设计一个电影的操作类 // 3、准备 全部电影数据 Movie[] movies = new Movie[4]; movies[0] = new Movie(1,"水门桥", 38.9, 9.8, "徐克", "吴京","12万人想看"); movies[1] = new Movie(2,"出拳吧", 39, 7.8, "唐晓白", "田雨","3.5万人想看"); movies[2] = new Movie(3,"月球陨落", 42, 7.9, "罗兰", "贝瑞","17.9万人想看"); movies[3] = new Movie(4,"一点就到家", 35, 8.7, "许宏宇", "刘昊然","10.8万人想看"); // 4、创建一个电影操作类的对象,接收电影数据,并对其进行业务处理 MovieOperator operator = new MovieOperator(movies); Scanner sc = new Scanner(System.in); while (true) { System.out.println("==电影信息系统=="); System.out.println("1、查询全部电影信息"); System.out.println("2、根据id查询某个电影的详细信息展示"); System.out.println("请您输入操作命令:"); int command = sc.nextInt(); switch (command) { case 1: // 展示全部电影信息 operator.printAllMovies(); break; case 2: // 根据id查询某个电影的详细信息展示 System.out.println("请您输入查询的电影id:"); int id = sc.nextInt(); operator.searchMovieById(id); break; default: System.out.println("您输入的命令有问题~~"); } } } }
package com.java.object; public class Movie { private int id; private String name; private double price; private double score; private String director; private String actor; private String info; public Movie() { } public Movie(int id, String name, double price, double score, String director, String actor, String info) { this.id = id; this.name = name; this.price = price; this.score = score; this.director = director; this.actor = actor; this.info = info; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public double getPrice() { return price; } public void setPrice(double price) { this.price = price; } public double getScore() { return score; } public void setScore(double score) { this.score = score; } public String getDirector() { return director; } public void setDirector(String director) { this.director = director; } public String getActor() { return actor; } public void setActor(String actor) { this.actor = actor; } public String getInfo() { return info; } public void setInfo(String info) { this.info = info; } }
package com.java.object; public class MovieOperator { private Movie[] movies; public MovieOperator(Movie[] movies){ this.movies = movies; } /** 1、展示系统全部电影信息 movies = [m1, m2, m3, ...]*/ public void printAllMovies(){ System.out.println("-----系统全部电影信息如下:-------"); for (int i = 0; i < movies.length; i++) { Movie m = movies[i]; System.out.println("编号:" + m.getId()); System.out.println("名称:" + m.getName()); System.out.println("价格:" + m.getPrice()); System.out.println("------------------------"); } } /** 2、根据电影的编号查询出该电影的详细信息并展示 */ public void searchMovieById(int id){ for (int i = 0; i < movies.length; i++) { Movie m = movies[i]; if(m.getId() == id){ System.out.println("该电影详情如下:"); System.out.println("编号:" + m.getId()); System.out.println("名称:" + m.getName()); System.out.println("价格:" + m.getPrice()); System.out.println("得分:" + m.getScore()); System.out.println("导演:" + m.getDirector()); System.out.println("主演:" + m.getActor()); System.out.println("其他信息:" + m.getInfo()); return; // 已经找到了电影信息,没有必要再执行了 } } System.out.println("没有该电影信息~"); } }
//1、同一个包下的程序,可以直接访问。 Demo d = new Demo(); d.print(); //2、访问其他包下的程序,必须导包才可以访问。 Demo1 d2 = new Demo1(); d2.print(); // 3、自己的程序中调用Java提供的程序,也需要先导包才可以使用;注意:Java.lang包下的程序是不需要我们导包的,可以直接使用。 Scanner sc = new Scanner(System.in); String s= "肚子"; Random r = new Random(); //4、访问多个其他包下的程序,这些程序名又一样的情况下,默认只能导入一个程序,另一个程序必须带包名和类名来访问。 Demo2 d3 = new Demo2(); d3.print(); com.itheima.pkg.itcast.Demo2 d4 = new com.itheima.pkg.itcast.Demo2(); d4.print();
//目标:掌握创建String对象,并封装要处理的字符申的两种方式。 //1、直接双引号得到字符串对象,封装字符串数据 String name = "itheima"; System.out.println(name); // 2、new String创建字符串对象,并调用构造器初始化字符串 String rs1 = new String(); System.out.println(rs1); //"" String rs2 = new String(original:"itheima"); System.out.println(rs2); char[] chars = {'a','k'}; String rs3 = new String(chars); System.out.println(rs3); byte[] bytes = {97,98,99}; String rs4 =new String(bytes); System.out.println(rs4);
// 目标:快速熟悉String提供的处理字符串的常用方法。 java.lang.String s = "黑马Java"; // 1、获取字符串的长度 System.out.println(s.length()); // 2、提取字符串中某个索引位置处的字符 char c = s.charAt(1); System.out.println(c); // 字符串的遍历 for (int i = 0; i < s.length(); i++) { // i = 0 1 2 3 4 5 char ch = s.charAt(i); System.out.println(ch); } System.out.println("-------------------"); // 3、把字符串转换成字符数组,再进行遍历 char[] chars = s.toCharArray(); for (int i = 0; i < chars.length; i++) { System.out.println(chars[i]); } // 4、判断字符串内容,内容一样就返回true java.lang.String s1 = new java.lang.String("黑马"); java.lang.String s2 = new java.lang.String("黑马"); System.out.println(s1 == s2); // false System.out.println(s1.equals(s2)); // true // 5、忽略大小写比较字符串内容 java.lang.String c1 = "34AeFG"; java.lang.String c2 = "34aEfg"; System.out.println(c1.equals(c2)); // false System.out.println(c1.equalsIgnoreCase(c2)); // true // 6、截取字符串内容 (包前不包后的) java.lang.String s3 = "Java是最好的编程语言之一"; java.lang.String rs = s3.substring(0, 8); System.out.println(rs); // 7、从当前索引位置一直截取到字符串的末尾 java.lang.String rs2 = s3.substring(5); System.out.println(rs2); // 8、把字符串中的某个内容替换成新内容,并返回新的字符串对象给我们 java.lang.String info = "这个电影简直是个垃圾,垃圾电影!!"; java.lang.String rs3 = info.replace("垃圾", "**"); System.out.println(rs3); // 9、判断字符串中是否包含某个关键字 java.lang.String info2 = "Java是最好的编程语言之一,我爱Java,Java不爱我!"; System.out.println(info2.contains("Java")); System.out.println(info2.contains("java")); System.out.println(info2.contains("Java2")); // 10、判断字符串是否以某个字符串开头。 java.lang.String rs4 = "张三丰"; System.out.println(rs4.startsWith("张")); System.out.println(rs4.startsWith("张三")); System.out.println(rs4.startsWith("张三2")); // 11、把字符串按照某个指定内容分割成多个字符串,放到一个字符串数组中返回给我们 java.lang.String rs5 = "张无忌,周芷若,殷素素,赵敏"; java.lang.String[] names = rs5.split(","); for (int i = 0; i < names.length; i++) { System.out.println(names[i]); }
public static void main(java.lang.String[] args) { // 1、开发一个登录界面 for (int i = 0; i < 3; i++) { Scanner sc = new Scanner(System.in); System.out.println("请您输入登录名称:"); java.lang.String loginName = sc.next(); System.out.println("请您输入登录密码:"); java.lang.String passWord = sc.next(); // 5、开始调用登录方法,判断是否登录成功 boolean rs = login(loginName, passWord); if(rs){ System.out.println("恭喜您,欢迎进入系统~~"); break; // 跳出for循环,代表登录完成 }else { System.out.println("登录名或者密码错误,请您确认~~"); } } } /** 2、开发一个登录方法,接收用户的登录名和密码,返回认证的结果 */ public static boolean login(java.lang.String loginName, java.lang.String passWord){ // 3、准备一份系统正确的登录名和密码 java.lang.String okLoginName = "itheima"; java.lang.String okPassWord = "123456"; // 4、开始正式判断用户是否登录成功 /*if(okLoginName.equals(loginName) && okPassWord.equals(passWord)){ // 登录成功的 return true; }else { return false; }*/ return okLoginName.equals(loginName) && okPassWord.equals(passWord); }
public static java.lang.String createCode(int n){ // 2、定义2个变量 一个是记住最终产生的随机验证码 一个是记住可能用到的全部字符 java.lang.String code = ""; java.lang.String data = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; Random r = new Random(); // 3、开始定义一个循环产生每位随机字符 for (int i = 0; i < n; i++) { // 4、随机一个字符范围内的索引。 int index = r.nextInt(data.length()); // 5、根据索引去全部字符中提取该字符 code += data.charAt(index); // code = code + 字符 } // 6、返回code即可 return code; }
ArrayList<E>
是用的最多、最常见的一种集合。// 1、创建一个ArrayList的集合对象 // ArrayList<String> list = new ArrayList<String>(); // 从jdk 1.7开始才支持的 ArrayList<java.lang.String> list = new ArrayList<>(); list.add("黑马"); list.add("黑马"); list.add("Java"); System.out.println(list); // 2、往集合中的某个索引位置处添加一个数据 list.add(1, "MySQL"); System.out.println(list); // 3、根据索引获取集合中某个索引位置处的值 java.lang.String rs = list.get(1); System.out.println(rs); // 4、获取集合的大小(返回集合中存储的元素个数) System.out.println(list.size()); // 5、根据索引删除集合中的某个元素值,会返回被删除的元素值给我们 System.out.println(list.remove(1)); System.out.println(list); // 6、直接删除某个元素值,删除成功会返回true,反之 System.out.println(list.remove("Java")); System.out.println(list); list.add(1, "html"); System.out.println(list); // 默认删除的是第一次出现的这个黑马的数据的 System.out.println(list.remove("黑马")); System.out.println(list); // 7、修改某个索引位置处的数据,修改后会返回原来的值给我们 System.out.println(list.set(1, "黑马程序员")); System.out.println(list); }
public static void main(java.lang.String[] args) { // 1、创建一个ArrayList集合对象 ArrayList<java.lang.String> list = new ArrayList<>(); list.add("枸杞"); list.add("Java入门"); list.add("宁夏枸杞"); list.add("黑枸杞"); list.add("人字拖"); list.add("特级枸杞"); list.add("枸杞子"); System.out.println(list); // [Java入门, 宁夏枸杞, 黑枸杞, 人字拖, 特级枸杞, 枸杞子] // [Java入门, 宁夏枸杞, 黑枸杞, 人字拖, 特级枸杞, 枸杞子] // [Java入门, 黑枸杞, 人字拖, 枸杞子] // i // 2、开始完成需求:从集合中找出包含枸杞的数据并删除它 /* for (int i = 0; i < list.size(); i++) { // i = 0 1 2 3 4 5 // 取出当前遍历到的数据 String ele = list.get(i); // 判断这个数据中包含枸杞 if(ele.contains("枸杞")){ // 直接从集合中删除该数据 list.remove(ele); } } System.out.println(list);*/ // [Java入门, 人字拖] // i // 方式一:每次删除一个数据后,就让i往左边退一步 /* for (int i = 0; i < list.size(); i++) { // i = 0 1 2 3 4 5 // 取出当前遍历到的数据 String ele = list.get(i); // 判断这个数据中包含枸杞 if(ele.contains("枸杞")){ // 直接从集合中删除该数据 list.remove(ele); i--; } } System.out.println(list);*/ // 方式二:从集合的后面倒着遍历并删除 // [Java入门, 人字拖] // i for (int i = list.size() - 1; i >= 0; i--) { // 取出当前遍历到的数据 java.lang.String ele = list.get(i); // 判断这个数据中包含枸杞 if(ele.contains("枸杞")){ // 直接从集合中删除该数据 list.remove(ele); } } System.out.println(list); }
public class ArrayListTest2menuDemo {
public static void main(java.lang.String[] args) {
// 目标:完成拓展案例:商家菜品上架操作。
// 1、设计一个菜品类Food,负责创建菜品对象,封装菜品数据。
// 2、设计一个菜品操作类FoodOperator,负责完成对菜品的业务实现:上架,浏览信息
FoodOperator operator = new FoodOperator();
operator.start();
}
}
public class Food { private java.lang.String name; private double price; private java.lang.String desc; // 描述 public Food() { } public Food(java.lang.String name, double price, java.lang.String desc) { this.name = name; this.price = price; this.desc = desc; } public java.lang.String getName() { return name; } public void setName(java.lang.String name) { this.name = name; } public double getPrice() { return price; } public void setPrice(double price) { this.price = price; } public java.lang.String getDesc() { return desc; } public void setDesc(java.lang.String desc) { this.desc = desc; } }
import java.util.ArrayList; import java.util.Scanner; public class FoodOperator { // 1、定义一个ArrayList集合对象,负责存储菜品对象信息 private ArrayList<Food> foodList = new ArrayList<>(); // foodList = [] // 2、开发功能:上架菜品功能。 public void addFood(){ // 3、创建一个菜品对象,封装上架的菜品信息 Food f = new Food(); // 4、录入菜品信息进去 Scanner sc = new Scanner(System.in); System.out.println("请您输入该菜品名称:"); java.lang.String name = sc.next(); f.setName(name); System.out.println("请您输入该菜品价格:"); double price = sc.nextDouble(); f.setPrice(price); System.out.println("请您输入该菜品描述:"); java.lang.String desc = sc.next(); f.setDesc(desc); // 5、把菜品对象存入到集合中去 foodList.add(f); System.out.println("上架成功!"); } // 6、展示菜品 // foodList = [f1, f2, f3, ... ] // i public void showAllFoods(){ if(foodList.size() == 0) { System.out.println("什么菜品都么有,先去上架!!"); return; } for (int i = 0; i < foodList.size(); i++) { Food f = foodList.get(i); System.out.println(f.getName()); System.out.println(f.getPrice()); System.out.println(f.getDesc()); System.out.println("-----------------"); } } /** 负责展示操作界面。 */ public void start(){ while (true) { System.out.println("请选择功能:"); System.out.println("1、上架菜品"); System.out.println("2、展示菜品"); System.out.println("3、退出"); Scanner sc = new Scanner(System.in); System.out.println("请选择您的操作:"); java.lang.String command = sc.next(); switch (command) { case "1": addFood(); break; case "2": showAllFoods(); break; case "3": System.out.println("下次再来哦!"); return; // 干掉方法! default: System.out.println("您输入的命令不存在!"); } } } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。