文章目录
1.数组
调用point时,更换其中一个的值,另一个也会更改,原因就是因为point是调用存储
Point point1 = new Point(x:1,y:1);
Point point2 = point1;
point1.x = 2;
System.out.Println(point2);
而像int/byte则是分别存储啊,位于不同的内存位置
byte x = 1;
byte y = x;
x = 2;
System.out.Println(y);
trim
string.trim()
转义字符\
换行\n
制表\t
//c:\windows\...
String message = "c:\\windows\\..."
1.1数组打印
使用方法
Arrays.toString()//一维数组
Arrays.deeptoString()//多维数组
int [][] numbers = new int[2][3];
//使用花括号可以直接打印数组
int [][] numbers = { {1,2,3},{4,5,6},{7,8,9}};
Systerm.out.Println(Arrays.deeptoString(numbers));
1.2使用final可以固定变量
final float PI = 3.14;
pi = 2;
1.1.3三元运算法
public static void main(String[] args) {
int Income = 120_000;
String ClassName = Income > 100_000 ? "First" : "Economy";
2.循环
2.1 switch语句
使用if语句书写时是这样的,下面使用Switch语句进行改写
public class admin {
public static void main(String[] args) {
String role = "admin";
if (role =="admin")
System.out.println("you are an admin");
else if (role =="moderator")
System.out.println("you are a moderator");
else
System.out.println("you are a guest!");
}
}
改写后如下所示:
public class admin {
public static void main(String[] args) {
String role = "admin";
switch (role) {
case "admin":
System.out.println("you are an admin");
break;
case "moderator":
System.out.println("you are a moderator");
break;
default:
System.out.println("you are a guest!");
}
}
2.2 for与while循环对比
for (int i = 0; i < 5; i++) {
System.out.Println("hello world"+i);
}
int i = 0;
while(i < 5){
System.out.Println("hello world"+i);
i++;
}
2.3 while使用
import java.util.Scanner;
public class onecup {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String input = "";
while (!input.equals("quit")){
System.out.print("Input: ");
input = scanner.next().toLowerCase();
System.out.print(input);
}
//使用do{}while()
do {
System.out.print("Input: ");
input = scanner.next().toLowerCase();
System.out.print(input);
}while(!input.equals("quit"))
注: 使用while-true时要确保语句内包含break字段,否则会造成内存消耗,永久无限循环并且不会终止
import java.util.Scanner;
public class onecup {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String input = "";
while(true){
System.out.print("Input: ");
input = scanner.next().toLowerCase();
if (input.equals("pass"))
continue;
if (input.equals("quit"))
break;
System.out.println(input);
}
2.4 for循环and for-each
public static void main(String[] args) {
String [] fruits = {"apple","mongo","orange"};
for (int i = 0;i < fruits.length;i++)
//(int i = fruits.length;i > 0;i--)
System.out.println(fruits[i]);
for (String fruit : fruits)
System.out.println(fruit);
2.5 死循环格式
for(;;){}
while(true){}
do{}while(true);
break与continue的区别就是continue会跳过本次循环,而break是终止循环
例如:
for (int i = 0;i<=5;i++){}
if(i%2 == 0){
break;
//continue;
}
System.out.println(i);
}
break输出结果是1,而continue结果是1,3,5
3. 循环嵌套
3.1.1打印菱形;同时也是多重循环的训练
package com.lingxing;
public class lingxing {
public static void main(String[] args) {
int size = 5;//行数
int startNum = size/2 + 1;//初始列号
int endNum = size/2 + 1;//结束列号
boolean flag = true;
for (int j=1;j<=size;j++){
for (int i=1;i<=size;i++){
if (i>=startNum&&i<=endNum){
System.out.print("*");
}else
System.out.print(" ");
}
System.out.println();//换行
if (endNum == size ){//endNum==size时,flag关闭
flag = false;
}
if (flag){//默认为TRUE
startNum--;
endNum++;
}else {//相当于打印下半部分
startNum++;
endNum--;
}
}
}
}
3.1.2菱形打印方法二
package com.lingxing;
public class lingxing {
public static void main(String[] args) {
/*lingxing
*
* *
* * *
* * *
* * *
* *
* */
//上面三角形
for (int j = 1; j <= 4; j++) {//控制行数
for (int i = 1; i <= (9-j); i++) {//控制空格数量
System.out.print(" ");
}
//*******
for (int i = 1; i <= (2 * j - 1); i++) {//控制*个数
System.out.print("*");
}
//换行
System.out.println();
}
//下面三角形
for (int j = 1; j <= 3; j++) {//控制行数
for (int i = 1; i <= (j+5); i++) {//控制空格数量
System.out.print(" ");
}
//*******
for (int i = 1; i <= (7-2*j); i++) {//控制*个数
System.out.print("*");
}
//换行
System.out.println();
}
}
}
3.1.3 空心菱形;同法二
package com.lingxing;
public class lingxing {
public static void main(String[] args) {
/*lingxing
*
* *
* * *
* * *
* * *
* *
* */
//上面三角形
for (int j = 1; j <= 4; j++) {//控制行数
for (int i = 1; i <= (9-j); i++) {//控制空格数量
System.out.print(" ");
}
//*******
for (int i = 1; i <= (2*j-1); i++) {//控制*个数
if (i==1||i==(2*j-1)){
System.out.print("*");
}else
System.out.print(" ");
}
//换行
System.out.println();
}
//下面三角形
for (int j = 1; j <= 3; j++) {//控制行数
for (int i = 1; i <= (j+5); i++) {//控制空格数量
System.out.print(" ");
}
//*******
for (int i = 1; i <= (7-2*j); i++) {//控制*个数
if (i==1||i==(7-2*j)){
System.out.print("*");
}else
System.out.print(" ");
}
//换行
System.out.println();
}
}
}
3.2 二重循环可以解决二元一次方程
案例:百鸡百钱
公鸡5钱一只,母鸡三钱一只,小鸡一钱三只,求百钱如何购得百鸡
public class chicken {
public static void main(String[] args) {
for (int x=1;x<(100/5);x++){
for (int y=1;y<(100/3);y++){
int z = 100 - x -y;//三元一次方程也可以写成二元的避免多一层循环嵌套,否则就写成下面这样的三层嵌套;当然也可以;不过容易出错
if ((5*x+3*y+z/3==100)&&(z%3==0)){
System.out.println(x + "\t" + y + "\t" + z);
}
}
}
}
}
public class lingxing {
public static void main(String[] args) {
for (int x = 1; x < (100 / 5); x++) {
for (int y = 1; y < (100 / 3); y++) {
for (int z = 1; z < 100; z++) {
if ((x + y + z == 100) && (5 * x + 3 * y + z / 3 == 100) && (z % 3 == 0)) {
System.out.println(x + "\t" + y + "\t" + z);
}
}
}
}
}
}