JAVA SE day4

发布时间 2023-09-09 17:18:01作者: Holle小菜狗

JAVA SE



基本的Dos 命令

#盘符切换  
D:
#查看当前目录下的所有文件
dir
#切换目录(/d 换盘符 写在cd 后)
cd 文件夹
#返回上一级
cd..
#清理屏幕
cls
#打开应用
calc 计算机 ,notepad 记事本,mspaint 画图
#ping 命令 可以获得 IP地址 延迟 一般用来测试网络,是否正常
ping www.baidu.com(网站网址)
#创建文件
md 目录名
#移除文件
rd 目录名
#创建文件
cd> 文件名.后缀
#删除文件
del 文件名.后缀

java特性和优势

简单性

面向对象

可移植性

高性能

分布式

动态性

多线程

安全性

健壮性


java三大版本

JavaSE 标准版(基础)

JavaME 嵌入式开发(已躺)

JavaEE E企业级开发(web端,服务器开发)

JDK , JRE , JVM

 

Java开发环境搭建

JDK下载与安装

配置环境变量

测试是否成功:cmd—>java -version

HelloWorld 及 简单语法规则

建立一个Hello.java文件

编写代码

public class Hello {
   public static void main(String[] args){
       //idea快捷键 psvm 快速打出输出方法
       System.out.print("Hello World 你好世间");
       //idea快捷键 souf
  }
}

注意单词字母大小问题

文件名和类名要一样,首字母要大写


 

JAVA基础语法

注释

//单行注释

/*
多行注释
*/

/**
* 文档注释
* @description helloworld
* @author
*/

标识符

关键字

关键字

关键字不能用作标识符

标识符

所有标识符都应该以字母A-Z,a-z,美元$,或者下划线_开头

标识符世大小写敏感的 大写不等于小写

数据类型

强类型语言:要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用(必须先初始化)

java的数据类型分为基本类型和引用类型:
基本数据类型

数值类型:整数类型(byte,short,int,long),浮点类型(float,double),字符类型(char)

boolean类型:占1位其值只有true和false两个

 

        //整数
       int num1 =10;
       byte num2 = 12;
       short num3 = 30;
       long num4 = 40L;//long类型要在数字后面加个l
       // 小数
       float num5 = 50.1F;//float类型要在数字后面加个l,表示有限
       double num6 =3.1415926;
       //字符
       char name ='v';
       //字符串,String 不是关键字,是类
       String namea = "噜啦啦";
       //布尔值 表是非
       boolean flag =true;
       boolean flag1 = false;
引用数据类型:类,接口,数组

类型转换

byte,short,char <int<long<float<double(类型高低)

高到低,强制转换: 高类型 变量名 = (低类型)变量名;

低到高,自动转换:低类型 变量名=变量名;

不能对不相干的类型互相转换;

变量

类变量

实例变量

局部变量

public class Main {
   //类变量 static
   static double salary = 2500;
   // 属性:变量

   /*
   实例变量:从属于对象,如果不自行初始化,这个类型的默认值 就是 0,0.0
   布尔值:默认是false
   除了基本类型,其余的默认值都是null
    */
   String name;
   int age;

   public static void main(String[] args) {
       //局部变量:必须声明和初始化值
      int i = 10;
      System.out.println(i);

      //变量类型 变量名字 =new demo08();
       Main main1 =new Main();
       System.out.println(main1.age);

       //类变量 static
       System.out.println(salary);


  }
}

 

常量

初始化后不能在改变值。

常量名一般使用大写字符

//final 常量名 =值;
//final double PI = 3.14;
public class DEMO2 {
   //final 修饰符 不区分前后顺序
   final static double PI = 3.14;
   public static void main(String[] args) {
       System.out.println(PI);
  }
}

运算符

算术运算符

+,-,*,/,%,++,--

赋值运算符

=

关系运算符

<,>,>=,<=,==,!=,instanceof

逻辑运算符

&&与and,都真为真

||或or ,一假为假

!非,取反

 

位运算符

&,|,^,~,>>,<<,>>>

/*
A=0011 1100
B=0000 1101
------------
A&B=0000 1100,有零则零
A|B=0011 1101,有1则1
A^B=0011 0001,相同为0
~B=1111 0010,取反

左移 << 相当于*2
右移 >> 相当于/2
二进制左右移动
*/

 

条件运算符

? , :

/*
x?y:z
如果x为真 ,则为y ,假为z
*/

 

扩展赋值运算符

+=,-=,*=,/=

/*
a+=b,a=a+b
a-=b,a=a-b
*/

包机制

java帮助文档

javadoc文档

IDEA快捷键 /**回车

    /**
    * @author 作者名
    * @version 版本号
    * @since 指明需要最早使用的jdk版本
    * @param 参数名
    * @return 返回值情况
    * @throws 异常抛出情况
    */

Scanner 对象

package DAY01;

import java.sql.SQLOutput;
import java.util.Scanner;

public class Demo4 {
   public static void main(String[] args) {
       //创建一个扫描对象,用于接受键盘数据
       Scanner scanner = new Scanner(System.in);
       System.out.println("使用next方式接收:");

       //判断用户有没有输入字符串
       if (scanner.hasNext()){
           //使用next方式接收
           //String str = scanner.next();
           String str = scanner.nextLine();
           System.out.println("输入内容为:"+str);

      }
       //凡是属于io流的类如果不关闭就会一直占用资源,所以要养成用完就关掉的习惯
       scanner.close();

  }
}
package DAY01;

import java.sql.SQLOutput;
import java.util.Scanner;

public class Demo4 {
   public static void main(String[] args) {
       //创建一个扫描对象,用于接受键盘数据
       Scanner scanner = new Scanner(System.in);
       
       System.out.println("使用nextLine方式接收请输入:");
       String str = scanner.nextLine();
       
       System.out.println("输入内容为:"+str);

       scanner.close();

  }
}

next():

1.一定要读取到有效字符后才可以结束输入

2.对输入有效字符之前遇到的空白,next()方法会自动将其去掉

3.只有输入有效字符后才将其后面的输入的空白作为分隔符或者结束符

4.next()不能得到带有空格的字符串

nextLine():

1.以enter回车为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符。

2.可以获得空白。

package DAY01;

import java.util.Scanner;

public class Demo5 {
   public static void main(String[] args) {
       Scanner scanner = new Scanner(System.in);
       
       //从键盘输入小数和整数数据
       int i=0;
       float f=0.0f;

       System.out.println("请输入整数:");
       if (scanner.hasNextInt()) {
           i = scanner.nextInt();
           System.out.println("您输入的整数为:" + i);
      }else {
           System.out.println("输入的不是整数");
      }
       System.out.println("请输入小数:");
       if (scanner.hasNextFloat()) {
       f = scanner.nextFloat();
       System.out.println("您输入的小数为:"+f);
      }else {
       System.out.println("输入的不是小数");
      }

       scanner.close();
  }
}

顺序结构

按顺序一句一句执行

选择结构

if 单双多嵌套选择结构

if(){
   
}if else{
   
}else{
   
}

switch 多选择结构

switch(){
   case 1
       //语句
       break;
   case 2:
       //语句
       break;
   case .....
       //语句
      .....
   default:
       //未知的所有选择default
       
       
}

 

循环结构

while 循环: 先判断后执行

while(布尔表达式){
   //循环内容
}

do...while 循环: 先执行后判断,至少执行一次

do{
   //语句
}while(布尔表达式);

for 循环

// for(初始化,布尔表达式,自更新){}
for(i=1;i<5;i++){
   //循环内容
}

for(;;){}//死循环写法

 

扩展:println输出会换行,print不会换行

练习 ,九九乘法表

package DAY01;

import java.sql.SQLOutput;

public class Demo6 {
   public static void main(String[] args) {
       int i =1;
       int j =1;
       for (i=1;i<10;i++){
           for (j=1;j<=i;j++){
               System.out.print(j+"*"+i+"="+(i*j)+"\t");
          }
           System.out.print("\n");
      }
  }
}

增强for 循环

package DAY01;

public class Demo7 {
   public static void main(String[] args) {
       int[] number = {10,20,30,40,50,60};
       //遍历数组
       for (int x:number){
           System.out.println(x);
      }
  }
}
package DAY01;

public class Demo7 {
   public static void main(String[] args) {
       int[] number = {10,20,30,40,50,60};
       //遍历数组
       for (int x:number){
           System.out.println(x);
      }
  }
}

 

break continue goto

break 终止循环

continue 跳过本次循环,执行下一次

练习打印三角形

package DAY01;

public class Demo8 {
   public static void main(String[] args) {
       for (int i = 0; i < 4; i++) {
           for (int j = 5; j > i; j--) {
               System.out.print(" ");
          }
           for (int j = 0; j <= i; j++) {
               System.out.print("*");
          }
           for (int j = 0; j < i; j++) {
               System.out.print("*");
          }
           System.out.println("");
      }
  }
}

 


Java方法

package DAY01;

public class Demo9 {
   public static void main(String[] args) {
       int sum = add(2, 3);
       System.out.println(sum);
       int sum2 = add(2, 3,4);
       System.out.println(sum2);
       test();
  }
   public static int add(int a,int b){
       return a+b;
  }
   public static int add(int a,int b,int c){
       return a+b+c;
  }
   public static   void test(){
       System.out.println("测试方法");
  }
   /*
    修饰符 返回值类型 方法名 (参数类型 参数名){
       方法体

   }
   */
}

方法重载

同名称方法,不同返回值或者参数,需要什么返回值或者传递参数,调用时自动选择对应的方法。

命令行传参

用命令行调用,并传参

可变参数

package Day02;

public class Demo1 {
   public static void main(String[] args) {
       sum(1);
       sum(1,2,3);
  }
   public static void  sum(int... i){
       //相当于数组,可以因对多变的传参,这个只能卸载普通参数的最后面
       System.out.println(i[0]);
  }
}

 

递归

方法A,自己调用自己

小计算用递归,大计算尽量不要用递归,会影响性能。

package Day02;

import java.sql.SQLOutput;

public class Demo2 {
   public static void main(String[] args) {
       Demo2 demo2 = new Demo2();
       int sum1 = demo2.sum(5);
       // int sum = sum(3);
       System.out.println(sum1);
       System.out.println(sum(4));
  }

   public static int sum(int i) {
       int sum=1;
       if (i==1){
           return sum;
      }else {
           return i*sum(i-1);
      }

  }
}

练习题 加减乘除计算器

package Day02;

import java.sql.SQLOutput;
import java.util.Scanner;

public class Demo3 {
   public static void main(String[] args) {
       i1();
  }
   public static void i1() {
       Scanner scanner = new Scanner(System.in);
       System.out.println("进行加减乘除,请您输入 数字符号数字 的格式:");
       String i = scanner.next();
       sum(i);
  }
   public static void i2() {
       Scanner scanner = new Scanner(System.in);
       System.out.println("是否继续,输入“1”继续,“2”结束");
       int a = scanner.nextInt();
       if (a==1){
           System.out.println("进行加减乘除,请您输入 数字符号数字 的格式:");
           String i = scanner.next();
           sum(i);
      }else {
           System.out.println("感谢使用");
           return;
      }
  }
   public static void sum(String i2) {
       for (int i=0;i<i2.length();i++){
           int q=i2.length();
           while (i2.charAt(i)=='+' || i2.charAt(i)=='-'|| i2.charAt(i)=='*' || i2.charAt(i)=='/'){
               String su1="";
               String su2="";
               Integer su3=0;
               Integer su4=0;
               double sum=0;
               switch (i2.charAt(i)){
                   case '+' :
                       for (int j=0;j<i;j++){
                           su1+=i2.charAt(j);
                           su3 = Integer.parseInt(su1);
                      }
                       for (int j1=i+1;j1<q;j1++){
                           su2+=i2.charAt(j1);
                           su4 = Integer.parseInt(su2);
                      }
                       sum=(double)su3+(double)su4;
                       System.out.println(su3+"+"+su4+"="+sum);
                       i2();
                       return;
                   case '-' :
                       for (int j=0;j<i;j++){
                           su1+=i2.charAt(j);
                           su3 = Integer.parseInt(su1);
                      }
                       for (int j1=i+1;j1<q;j1++){
                           su2+=i2.charAt(j1);
                           su4 = Integer.parseInt(su2);
                      }
                       sum=(double)su3-(double)su4;
                       System.out.println(su3+"-"+su4+"="+sum);
                       i2();
                       return;
                   case '*' :

                       for (int j=0;j<i;j++){
                           su1+=i2.charAt(j);
                           su3 = Integer.parseInt(su1);
                      }
                       for (int j1=i+1;j1<q;j1++){
                           su2+=i2.charAt(j1);
                           su4 = Integer.parseInt(su2);
                      }
                       sum=(double)su3*(double)su4;
                       System.out.println(su3+"*"+su4+"="+sum);
                       i2();
                       return;
                   case '/' :

                       for (int j=0;j<i;j++){
                           su1+=i2.charAt(j);
                           su3 = Integer.parseInt(su1);
                      }
                       for (int j1=i+1;j1<q;j1++){
                           su2+=i2.charAt(j1);
                           su4 = Integer.parseInt(su2);
                      }
                       sum=(double)su3/(double)su4;
                       System.out.println(su3+"/"+su4+"="+sum);
                       i2();
                       return;
              }
          }
      }
  }
}

 

数组

相同类型数据的有序集合,一旦定义就不可变

//声明,创建,赋值,输出
//变量类型 变量名字=变量的值;
int[] nums=new int[10];
nums[0]=1;
System.out.println(nums[0]);

//静态初始化
int[] a={1,2,3,4,5,6};

二维数组

int[][] arr=new int[2][2];
arr[0][0]=1;
arr[0][1]=2;
System.out.println(arr[0][0]);

int[][] arry={{1,2},{3,4}};
System.out.println(arry[0][1]);

Array 工具类

//Arrays.toString(数组名称);
//打印数组元素

 

冒泡排序

package Day02;

import java.util.Arrays;

public class Demo5 {
   public static void main(String[] args) {
       int[] oo={3,5,4,8,6,2,1,45,65,23,12};
       for (int i = 0; i < oo.length-1; i++) {
           for (int j = i+1; j < oo.length; j++) {
               if (oo[i]>oo[j]) {
                   int o = oo[j];
                   oo[j] = oo[i];
                   oo[i] = o ;
              }
          }
      }
       System.out.println(Arrays.toString(oo));
  }
}

 

稀疏数组