黑马全套Java教程(一)(下)

简介: 黑马全套Java教程(一)

4 运算符


4.1 算术运算符



/*
  算术运算符
*/
public class OperatorDemo01{
  public static void main(String[] args){
    //定义两个变量
    int a = 6;
    int b = 4;
    System.out.println(a+b);
    System.out.println(a-b);
    System.out.println(a*b);
    System.out.println(a/b);   //得到整数
    System.out.println(a%b);
    //整数相除只能得到整数,要想得到小数必须有浮点数参与
    System.out.println(6.0/4);
  }
}



例:字符加操作



/*
  字符的“+”操作
*/
public class OperatorDemo02{
  public static void main(String[] args){
    //定义两个变量
    int i = 10;
    char c = 'A';              //值为65
    System.out.println(i+c);   //输出75
    System.out.println(i+'a');  //107
    System.out.println(i+'0');   //58
    //char ch = i + '0';    //错误
    //char类型会被自动提升为int类型
    int j = i + '0';
    System.out.println(j);
    //int k = 10 + 13.14;
    double d = 10 + 13.14;
    System.out.println(d);
    int dd = 10 + (int)13.14;
    System.out.println(dd);
  }
}



例2:字符串加操作



/*
  字符串的“+”操作
*/
public class OperatorDemo03{
  public static void main(String[] args){
    System.out.println("IT" + "heima");   //拼接
    System.out.println("IT" + 666); 
    System.out.println(666 + "IT heima"); 
    System.out.println("黑马" + 6 + 666); 
    System.out.println(6 + 666 + "黑马" );  //先加再拼接
  }
}



4.2 赋值运算符



/*
  赋值运算符
*/
public class OperatorDemo04{
  public static void main(String[] args){
    //把10赋值给int类型的变量i
    int i = 10;
    System.out.println("i:" + i);
    // +=
    i += 20;
    System.out.println("i:" + i);
    //注意:扩展的赋值运算符底层隐含了强制类型转换
    short s = 10;
    s += 40;  //用这个最好
    //s = s + 40;  //错误,40为int类型
    s = (short)(s+40);
    System.out.println("s:" + s);
  }
}


4.3 自增自减运算符



/*
  自增自减运算符
*/
public class OperatorDemo05{
  public static void main(String[] args){
    //定义变量
    int i = 10;
    System.out.println("i:" + i);
    i++;
    System.out.println("i:" + i);
    ++i;
    System.out.println("i:" + i);
    //参与操作使用
    //i++:先进行赋值再加1
    //++i:先加1再进行赋值
    int j = i++;
    System.out.println("i++赋值给j:");
    System.out.println("i:" + i);   //13
    System.out.println("j:" + j);   //12
    int m = 12;
    int n = ++m;
    System.out.println("++m赋值给n:");
    System.out.println("m:" + m);   //13
    System.out.println("n:" + n);   //13
  }
}



4.4 关系运算符


/*
  关系运算符
*/
public class OperatorDemo06{
  public static void main(String[] args){
    //定义变量
    int i = 10;
    int j = 20;
    int k = 10;
    //==
    System.out.println(i==j);
    System.out.println(i==k);
    System.out.println("----------");
    //!=
    System.out.println(i!=j);
    System.out.println(i!=k);
    System.out.println("----------");
    //>
    System.out.println(i>j);
    System.out.println(i>k);
    System.out.println("----------");
    //>=
    System.out.println(i>=j);
    System.out.println(i>=k);
    System.out.println("----------");   
    //不小心把==写成了=
    System.out.println(i=j);  //j赋值给i,并输出i
  }
}




4.5 逻辑运算符



/*
  逻辑运算符
*/
public class OperatorDemo07{
  public static void main(String[] args){
    //定义变量
    int i = 10;
    int j = 20;
    int k = 30;
    //&
    System.out.println((i<j)&(i<k));
    System.out.println("--------------------");
    //|
    System.out.println((i>j)|(i<k));
    System.out.println("--------------------");
    // ^ 异或:相异为1,相同为0
    System.out.println((i>j)^(i<k));
    System.out.println((i<j)^(i<k));
    System.out.println("--------------------");
    // !
    System.out.println(i>j);
    System.out.println(!(i>j));
    System.out.println(!!(i>j));
    System.out.println(!!!(i>j));
  }
}


短路逻辑运算符



/*
  短路逻辑运算符
*/
public class OperatorDemo08{
  public static void main(String[] args){
    //定义变量
    int i = 10;
    int j = 20;
    int k = 30;
    //&&:这里与&结论一样
    System.out.println((i>j)&&(i>k));
    System.out.println((i>j)&&(i<k));   
    System.out.println((i<j)&&(i<k));
    System.out.println((i<j)&&(i>k));
    System.out.println("--------------------");
    //||:这里与|结论一样
    System.out.println((i>j)||(i>k));
    System.out.println((i>j)||(i<k));   
    System.out.println((i<j)||(i<k));
    System.out.println((i<j)||(i>k));
    System.out.println("--------------------");
    //&&和&
    System.out.println((i++>100) & (j++>100));  //false & false     这两个都进行了运算  i=11,j=21
    //&&检测到左边是false时,右边就不执行了
    //System.out.println((i++>100) && (j++>100));  //false & false     i=11,j=20
    System.out.println("i:" + i);
    System.out.println("j:" + j);
  }
}



4.6 三元运算符


格式:关系表达式 ? 表达式1 : 表达式2;


范例:a>b ? a : b;


若关系表达式结果为true,则运算结果为表达式1,;否则为表达式2


/*
  三元运算符
  格式:
    关系表达式?表达式1:表达式2;
  范例:
    a > b ? a : b;
  执行流程:
    首先计算关系表达式的值
    如果值为true,表达式1的值就是运算结果
    如果值为false,表达式2的值就是运算结果
*/
public class OperatorDemo09{
  public static void main(String[] args){
    //定义两个变量
    int a = 10;
    int b = 20;
    //获取最大值
    int max = a > b ? a : b;
    System.out.println("max:" + max);
  }
}


案例:两只老虎


例:判断两只老虎体重是否相同


/*
  两只老虎
  需求:判断体重是否相同,用三元运算符
*/
public class OperatorTest01
{
  public static void main(String[] args)
  {
    //1.定义体重
    int weight1 = 100;
    int weight2 = 120;
    //2.三元运算符判断比较
    boolean b = weight1==weight2 ? true : false;
    //3.打印输出
    System.out.println("b:" + b);
  }
}


案例:三个和尚


输出三个和尚的最高身高


/*
  三个和尚
  需求:输出最高身高,用三元运算符
*/
public class OperatorTest02
{
  public static void main(String[] args)
  {
    //1.定义身高
    int weight1 = 100;
    int weight2 = 200;
    int weight3 = 300;
    //2.比较
    int temp = weight1>weight2 ? weight1 : weight2;
    int max = temp>weight3 ? temp : weight3;
    //3.输出
    System.out.println("max:" + max);
  }
}


5 数据输入


Scanner实现数据输入,Scanner使用的基本步骤如下:


  1. 导包


  1. 创建对象


  1. 接收数据



/*
  数据输入:
    1.导包:
      import java.util.Scanner;
    2.创建对象:
      Scanner sc = new Scanner(System.in);
    3.接受数据:
      int x = sc.nextInt();
*/
import java.util.Scanner;
public class ScannerDemo{
  public static void main(String[] args){
    //2.创建对象
    Scanner sc = new Scanner(System.in);
    //3.接收数据
    int x = sc.nextInt();
    //输出数据
    System.out.println("x:" + x);
  }
}



案例:三个和尚升级版(手动输入升高)


/*
  三个和尚
  需求:
    一座寺庙里面住着三个和尚,他们的身高必须经过测量得出,请用程序实现获取最高身高
*/
//1.导包
import java.util.Scanner;
public class ScannerTest{
  public static void main(String[] args){
    //2.创建对象
    Scanner sc = new Scanner(System.in);
    //3.接收数据
    System.out.println("请输入第一个和尚的身高:");
    int height1 = sc.nextInt();
    System.out.println("请输入第二个和尚的身高:");
    int height2 = sc.nextInt();
    System.out.println("请输入第三个和尚的身高:");
    int height3 = sc.nextInt();
    int tempHeight = height1>height2 ? height1:height2;
    int maxHeight = tempHeight>height3 ? tempHeight:height3;
    System.out.println("maxHeight:" + maxHeight);
  }
}


6 分支语句


  • 顺序结构


  • 分支结构(if,switch)


  • 循环结构(for,while,do…while)


6.1 顺序结构


正常的代码流程结构,从上到下



6.2 if语句


if语句总有三种格式:


  1. if


  1. if…else


  1. if…else if…else


例1:if语句


/*
  if语句格式1
  格式:
    if(关系表达式){
      语句体;
    }
  执行流程:
    1:首先计算关系表达式的值
    2:如果关系表达式的值为ture就执行语句体
    3:如果关系表达式的值为false就不执行语句体
    4:继续执行后面的语句内容
*/
public class IfDemo
{
  public static void main(String[] args)
  {
    System.out.println("开始");
    //定义两个变量
    int a = 10;
    int b = 20;
    //需求:判断a和b的值是否相等,如果相等,就在控制台输出:a等于b
    if (a==b)
    {
      System.out.println("a等于b");
    }
    int c = 10;
    if (a==c)
    {
      System.out.println("a等于c");
    }
    System.out.println("结束");
  }
}


例2:if…else


/*
  if语句格式2
  格式:
    if(关系表达式)
    {
      语句体1;
    }
    else
    {
      语句体2;
    }
  执行流程:
    1.首先计算关系表达式的值
    2.如果关系表达式的值为ture就执行语句体1
    3.如果关系表达式的值为false就执行语句体2
    4.继续执行后面的语句内容
*/
public class IfDemo02{
  public static void main(String[] srgs){
    System.out.println("开始");
    //定义两个变量
    int a = 10;
    int b = 20;
    b = 5;
    if(a>b)
    {
      System.out.println("a大于b");
    }
    else
    {
      System.out.println("a不大于b");
    }
    System.out.println("结束");
  }
}


例3:if…else if…else


/*
  格式:
    if(关系表达式1)
    {
      语句体1;
    }
    else if(关系表达式2)
    {
      语句体2;
    } 
    else
    {
      语句体3;
    }
*/
import java.util.Scanner;
public class IfDemo03{
  public static void main(String[] args)
  {
    System.out.println("开始");
    //需求:键盘录入一个星期数(1,2,...,7)输出对应的星期一,星期二,...,星期日
    Scanner sc = new Scanner(System.in);
    System.out.println("请输入一个星期数(1-7): ");
    int week = sc.nextInt();
    if(week==1)
    {
      System.out.println("星期一");
    }
    else if(week==2)
    {
      System.out.println("星期二");
    }
    else if(week==3)
    {
      System.out.println("星期三");
    }
    else if(week==4)
    {
      System.out.println("星期四");
    }
    else if(week==5)
    {
      System.out.println("星期五");
    }
    else if(week==6)
    {
      System.out.println("星期六");
    }
    else if(week==7)
    {
      System.out.println("星期日");
    }
    else 
    {
      System.out.println("输入错误!");
    }
    System.out.println("结束");
  }
}


案例:判断奇偶数


输入一个整数,判断奇偶数,并输出


/*
  案例:奇偶数
*/
//1.导包
import java.util.Scanner;
public class IfTest{
  public static void main(String[] args)
  {
    //2.创建对象
    Scanner sc = new Scanner(System.in);
    //3.接收数据
    int number = sc.nextInt();
    if( number%2==0)
    {
      System.out.println(number + "是偶数");
    }
    else
    {
      System.out.println(number + "是奇数");
    }
  }
}


6.3 switch语句



/*
  switch语句
  格式:
    switch(表达式)
    {
      case 1:
        语句体1;
        break;
      case 2:
        语句体2;
        break;
      default:
        语句体n;
        break;
    }
*/
import java.util.Scanner;
public class SwitchDemo
{
  public static void main(String[] args)
  {
    System.out.println("开始");
    //需求:按对应数字输出星期一,星期二,...星期日
    Scanner sc = new Scanner(System.in);
    System.out.println("请输入一个数字:");
    int week = sc.nextInt();
    switch(week)
    {
      case 1:
        System.out.println("星期一");
        break;    //不写break下面也会执行,直到遇到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;   //这个break可以省略
    }
    System.out.println("结束");
  }
}


案例:春夏秋冬


输入月份,输出季节


/*
  输入月份判断季节
  春:3,4,5
  夏:6,7,8
  秋:9,10,11
  冬:1,2,12
*/
//1.daobao 
import java.util.Scanner;
public class SwitchTest
{
  public static void main(String[] args)
  {
    //2.创建对象
    Scanner sc = new Scanner(System.in);
    System.out.println("请输入年份:");
    //3.接收数据
    int month = sc.nextInt();
    switch(month)
    {
      case 1:    //case穿透
      case 2:
      case 12:
        System.out.println("冬季");
        break;
      case 3:
      case 4:
      case 5:
        System.out.println("春季");
        break;      
      case 6:
      case 7:
      case 8:
        System.out.println("夏季");
        break;          
      case 9:
      case 10:
      case 11:
        System.out.println("秋季");
        break;        
      default:   //这个可以不需要break
        System.out.println("你输入的月份有误!");
    }
  }
}


6.4 for循环



/*
  for语句
  格式:
    for(初始化语句;条件判断语句;条件控制语句)
    {
      循环体语句;
    }
  执行流程:
    1.执行初始化语句
    2.执行条件判断语句,看结果是true还是false
    3.执行循环体语句
    4.执行条件控制语句
    5.回到2继续
*/
public class ForDemo
{
  public static void main(String[] args)
  {
    for(int i=0; i<5; i++)
      {
        System.out.println("Hello World!");
      }
  }
}


案例:输出数据


/*
  输出数据
  需求:
    在控制台输出1-5和5-1
*/
public class ForTest01
{
  public static void main(String[] args)
  {
    System.out.println("输出1-5:");
    for (int i=1; i<=5; i++)
    {
      System.out.println("i:" + i);
    }
    System.out.println("输出5-1:");
    for (int i=5; i>=1; i--)
    {
      System.out.println("i:" + i);
    }
  }
}


案例:求和


求1-5的和,并输出


/*
  求和
  需求:
    求1-5之和,并输出
*/
public class ForTest02
{
  public static void main(String[] args)
  {
    int sum = 0;
    for (int i=1; i<=5; i++)
    {
      sum += i;
    }
    System.out.println("sum=" + sum);
  }
}


案例:求偶数和


/*
  求偶数和
  需求:
    求1-100之间的偶数和,并输出
*/
public class ForTest03
{
  public static void main(String[] args)
  {
    int sum = 0;
    for (int i=1; i<=100; i++)
    {
      if (i%2==0)
      {
        sum += i;
      }
    }
    System.out.println("sum=" + sum);
  }
}


案例4:输出所有水仙花数


/*
  水仙花数
    个位的立方 + 十位的立方 + 百位的立方 == 这个数
*/
public class ForTest04
{
  public static void main(String[] args)
  {
    int count = 0;
    for (int i=100; i<1000; i++)
    {
      int geWei = i%10;
      int shiWei = (i/10)%10;
      int baiWei = i/100;
      if (geWei*geWei*geWei + shiWei*shiWei*shiWei + baiWei*baiWei*baiWei == i)
      {
        System.out.println(i);
        count += 1;
      } 
    }
    System.out.println("共有" + count + "个水仙花数!");
  }
}


6.5 while循环语句


while语句这里有两种:


  1. while


  1. do…while


例:while语句


/*
  while语句
  基本格式:
    while(条件判断语句)
    {
      循环体语句;
      条件控制语句;
    }
*/
public class WhileDemo{
  public static void main(String[] args)
  {
    //输出五次hello world
    for (int i=0; i<5; i++)
    {
      System.out.println("Hello World!");
    }
    System.out.println("--------------");
    int i = 0;
    while(i<5)
    {
      System.out.println("Hello World!");
      i++;
    }
  }
}


案例:珠穆朗玛峰


纸折叠多少次达到珠穆朗玛峰的高度


/*
  珠穆朗玛峰
*/
public class WhileDemo02
{
  public static void main(String[] args)
  {
    double temp = 0.1;
    int count = 0;
    while(temp<8844430)
    {
      temp = temp*2;
      count += 1;
    }
    System.out.println("共折叠了" + count + "次!");
  }
}


例:do…while语句



/*
  do...while语句
  基本格式:
    初始化语句;
    do
    {
      循环体语句;
      条件控制语句;
    }
    while(条件判断语句);
*/
public class DoWhileDemo
{
  public static void main(String[] args)
  {
    int i = 0;
    do
    {
      System.out.println("Hello world!");
      i++;
    }
    while(i<5);   //注意这个有分号
  }
}


三种循环的区别:do…while先执行,再判断


/*
  三种循环的区别
*/
public class LoopTest
{
  public static void main(String[] args)
  {
    //for循环
    for (int i=3; i<3; i++)
    {
      System.out.println("我爱Java");
    }
    System.out.println("1.---------------------");
    //while循环
    int j = 3;
    while(j<3)
    {
      System.out.println("我爱Java");
      j++;
    }
    System.out.println("2.---------------------");
    //do...while循环
    int k = 3;
    do   //先执行do再执行while
    {
      System.out.println("我爱Java");
      k++;
    }
    while(k<3);
    //死循环
    /*
    for(;;)
    {
      System.out.println("for");
    }
    while(true)
    {
      System.out.println("while");
    }
    do
    {
      System.out.println("do...while");
    }
    while(true);
    */
  }
}



7 跳转控制语句


  • continue:用在循环体中,基于条件控制,跳过某次循环体内容的执行,继续下一次的执行


  • break:用于结束循环


/*
  continue:用在循环体中,基于条件控制,跳过某次循环体内容的执行,继续下一次的执行
  break:用于结束循环
*/
public class ControlDemo
{
  public static void main(String[] args)
  {
    for(int i=1; i<=5; i++)
    {
      if(i%2==0)   //跳过2,4
      {
        continue;
        //break;  //这个只会输出1,遇到2就打破了循环
      }
      System.out.println(i);
    }
  } 
}


例:循环嵌套


/*
  循环嵌套:
    循环语句中包含循环语句
  需求:
    在控制台输出一天的小时和分钟
    分钟和小时的范围:
      分钟:0<=minute<60
      小时:0<=hour<24
*/
public class ForForDemo
{
  public static void main(String[] args)
  {
    for(int hour=0; hour<24; hour++)
    {
      for(int minute=0; minute<60; minute++)
      {
        System.out.println(hour + "时" + minute + "分");
      }
    }
  }
}


8 Random


Random用于产生一个随机数


具体使用步骤如下:



/*
  Random
  作用:
    用于产生一个随机数
  使用步骤:
    1.导包
      import java.util.Random;
    2.创建对象
      Random r = new Random();
    3.获取随机数
      int number = r.nextInt(10);
      获取数据的范围:[0,10)  
*/
import java.util.Random;
public class RandomDemo
{
  public static void main(String[] args)
  {
    //创建对象
    Random r = new Random();
    //获取随机数
    for(int i=0; i<5; i++)
    {
      int number = r.nextInt(10);   //0~9
      System.out.println("number:" + number);   
    } 
    System.out.println("----------------");
    //需求:获取一个1~100之间的随机数
    int x = r.nextInt(100) + 1;
    System.out.println(x);
  }
}


案例:猜数字


/*
  猜数字
*/ 
//1.导包
import java.util.Random;
import java.util.Scanner;
public class RandomTest
{
  public static void main(String[] args)
  {
    //2.创建对象
    Random r = new Random();
    Scanner sc = new Scanner(System.in);
    //3.接收随机数
    int trueNum = r.nextInt(100) + 1;
    System.out.println("请输入你猜的数字(1-100):");
    int myNum = sc.nextInt();
    while(myNum != trueNum)   //或者while死循环到正确,break退出
    {
      if (myNum < trueNum)
      {
        System.out.println("小了");
      }
      else if (myNum > 100)
      {
        System.out.println("输入的数字超出范围(1-100)!");
      }
      else 
      {
        System.out.println("大了");
      }
      System.out.println("请重新输入:");
      myNum = sc.nextInt();
    }
    System.out.println("正确");
  }
}


目录
相关文章
|
2月前
|
Java 开发者 UED
【实战宝典】Java异常处理大师级教程:throws关键字,让异常声明成为你的专属标签!
【实战宝典】Java异常处理大师级教程:throws关键字,让异常声明成为你的专属标签!
40 3
|
14天前
|
Java API
Java时间戳教程
本文详细介绍Java中时间戳的处理方法,包括获取当前时间戳、使用`java.time`包、时间戳与日期的相互转换及格式化等。示例代码展示了如何利用`System.currentTimeMillis()`和`java.time.Instant`获取时间戳,以及如何通过`Date`和`ZonedDateTime`进行日期转换和时区处理。随着Java 8引入的`java.time`包,日期时间操作变得更加强大和便捷,推荐在新项目中优先采用。
|
2月前
|
前端开发 Java Maven
【前端学java】全网最详细的maven安装与IDEA集成教程!
【8月更文挑战第12天】全网最详细的maven安装与IDEA集成教程!
71 2
【前端学java】全网最详细的maven安装与IDEA集成教程!
|
2月前
|
Java 开发者
Java多线程教程:使用ReentrantLock实现高级锁功能
Java多线程教程:使用ReentrantLock实现高级锁功能
34 1
|
2月前
|
存储 网络协议 Oracle
java教程
java教程【8月更文挑战第11天】
25 5
|
3月前
|
SQL 安全 Java
「滚雪球学Java」教程导航帖(更新2024.07.16)
《滚雪球学Spring Boot》是一个面向初学者的Spring Boot教程,旨在帮助读者快速入门Spring Boot开发。本专通过深入浅出的方式,将Spring Boot开发中的核心概念、基础知识、实战技巧等内容系统地讲解,同时还提供了大量实际的案例,让读者能够快速掌握实用的Spring Boot开发技能。本书的特点在于注重实践,通过实例学习的方式激发读者的学习兴趣和动力,并引导读者逐步掌握Spring Boot开发的实际应用。
73 1
「滚雪球学Java」教程导航帖(更新2024.07.16)
|
2月前
|
Java API
Java与Lua互相调用简单教程
【8月更文挑战第29天】在软件开发中,Java以其强大的稳定性和广泛的生态系统著称,而Lua则因其轻量级、灵活和嵌入式的特点在脚本编写、游戏开发等领域大放异彩。将两者结合使用,可以充分利用Java的底层能力和Lua的快速开发优势。本文将通过一个简单的教程,介绍如何在Java程序中嵌入并执行Lua脚本,以及如何在Lua中调用Java方法。
27 0
WXM
|
3月前
|
Oracle Java 关系型数据库
Java JDK下载安装及环境配置超详细图文教程
Java JDK下载安装及环境配置超详细图文教程
WXM
334 3
|
3月前
|
测试技术 API Android开发
《手把手教你》系列基础篇(九十七)-java+ selenium自动化测试-框架设计篇-Selenium方法的二次封装和页面基类(详解教程)
【7月更文挑战第15天】这是关于自动化测试框架中Selenium API二次封装的教程总结。教程中介绍了如何设计一个支持不同浏览器测试的页面基类(BasePage),该基类包含了对Selenium方法的二次封装,如元素的输入、点击、清除等常用操作,以减少重复代码。此外,页面基类还提供了获取页面标题和URL的方法。
76 2
|
3月前
|
Java 数据安全/隐私保护
Java无模版导出Excel 0基础教程
经常写数据导出到EXCEL,没有模板的情况下使用POI技术。以此作为记录,以后方便使用。 2 工具类 样式工具: 处理工具Java接口 水印工具 导出Excel工具类 3 测试代码 与实际复杂业务不同 在此我们只做模拟 Controller Service 4 导出测试 使用Postman进行接口测试,没接触过Postman的小伙伴可以看我这篇博客Postman导出excel文件保存为文件可以看到导出很成功,包括水印 sheet页名称自适应宽度。还有一些高亮……等功能可以直接搜索使用
Java无模版导出Excel 0基础教程