java基础入门

hello world

public class hello {
    //main方法是程序的入口,格式固定
    public static void main(String[] args) {
       System.out.println("hello world!");//输出到控制台
    }

注释

单行注释: //
多行注释: /* /
文档注释
格式:/
*
@author
@version
注释内容可以被jdk提供的工具javadoc所解析,生成一套以网页文件形式体现的该程序的说明文档
*/
使用方法:终端 javadoc -d myhello -author -version 文件名.java
-d myhello:保存路径
找index.html

关键字:被java赋予了特殊含义,用作专门用途的字符串(所有字母为小写)image-20220224193057875

保留字:在现有的java中没有使用,在以后的版本中可能作为关键字使用,用自己命名的标识符时要避免使用这些保留字
goto\const

#标识符

标识符:自己起名的字符序列,尽量做到见名知意
规则:
1,由26个英文字母大小写、0-9,_或$组成
2,数字不可以开头
3,不可以使用关键字和保留字,但是能包含
4,严格区分大小写,长度无限制
5,标识符不能包含空格
java中命名规范
包名:多单词组成,所有字母都小写
类名/接口名:多单词组成,所有单词首字母大写
变量名/方法名:多单词组成,第一个单词首字母小写,之后所有单词首字母大写
常量名:所有字母都大写,多单词时用下划线连接

#变量

变量:变量类型,变量名,储存的值
注意:
1,java中的变量必须先声明后使用
2,使用变量名来访问这块区域的数据
3,变量的作用域:定义所在的一对{}内
4,变量只有在其作用域内猜有效
5,同一个作用域内,不能定义重名的变量

public class luanma {
    public static void main(String[] args){
        int myAge=12;//变量的定义
        System.out.println(myAge);//变量的使用
        int myNumber;//变量的声明
        myNumber=1001;//变量的赋值
        System.out.println(myNumber);
    }
}

变量的分类(数据类型):

image-20220224215903764

1,整型变量:
变量通常声明为int型,除非不足以表示较大的数,猜使用long,声明long型常量后面必须加‘I’或者‘L’

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RJiXiyfX-1653015479286)(https://cdn.jsdelivr.net/gh/kaolaaa/kaola@main/img/202202242212050.png)]

public class luanma {
    public static void main(String[] args){
        //byte(字节,-128~127)short(2字节)int(4字节)long(8字节)
        byte b1=12;
        byte b2=-128;//b2=128,编译不通过
        System.out.println(b1);
        System.out.println(b1);
        long s1=1777799898222222L;//以L结尾
        System.out.println(s1);
    }
}

**浮点型变量:**float(4字节)double(8字节)
注意:声明float型常量,后面需要加‘f’或者’F‘

public class luanma {
    public static void main(String[] args){
        float f1=12.3F;//后面加F
        System.out.println(f1);
    }
}

3,字符型变量(1字符=2字节)

public class luanma {
    public static void main(String[] args){
        char c1='a';
        System.out.println(c1);
    }
}

4,boolean型变量
只能取两个值之间:ture/false,常在条件判断,循环结构中使用

public class luanma {
    public static void main(String[] args){
        boolean b1=true;
        System.out.println(b1);
    }
}

基本数据之间的运算(不包含boolean型)
1,自动类型提升/转换:容量小的和容量大的做运算时,结果自动提升为容量大的数据类型

public class luanma {
    public static void main(String[] args){
        byte a=2;
        int i=12;
        int  b= a+i;
        System.out.println(b);
    }
}
//byte、char、short(这三种做运算,结果都是int型)--int--long--float--double

2,强制类型转换:自动类型提升/转换的逆运算

public class luanma {
    public static void main(String[] args){
       double d1=12.3;
       int i=(int)d1;//强转符()--强制转换,损失精度
       System.out.println(i);
    }
}

特殊情况
1,定义long时最后不加L,自动转换为int型,数字超过int范围则不可以
2,整型常量more类型为int型,浮点型常量默认类型为double型

字符串类型

String:不是基本数据类型,属于引用数据类型,使用方式与数据类型一致
注意:
1,一个字符串可以串接另一个字符串
2,声明String时需要使用一对“”
3,可以和8种基本数据类型做运算,且只能是连接运算+,结果仍然是String类型

public class luanma {
    public static void main(String[] args){
       String s1="hello world";
       System.out.println(s1);
       //运算
        int  number=2021;
        String name="lixuelian";
        String info=number+name;//连接运算
        System.out.println(info);
    }
}

算数运算符

1,除法

public class luanma {
    public static void main(String[] args){
            int num1=12;
            int num2=5;
            int result=num1/num2;
            System.out.println(result);//2.0
            double result2=num1/(num2+0.0);
            System.out.println(result2);//2.4
    }
}

2,取余运算
结果符号与被模数的符号相同
在开发中经常使用%来判断是否被除尽的情况

public class luanma {
    public static void main(String[] args){
            int n1=12;
            int m1=5;
            System.out.println(n1%m1);//2

            int n2=-12;
            int m2=-5;
            System.out.println(n2%m2);//-2

            int n3=12;
            int m3=-5;
            System.out.println(n3%m3);//2

            int n4=-12;
            int m4=5;
            System.out.println(n4%m4);//-2
    }
}

3,前/后++ 前/后–
前:先自增1,再运算
后:先运算,后自增1
自增自减不会改变数据类型

public class luanma {
    public static void main(String[] args){
            int n1=12;
            int n2=n1++;
            System.out.println(n2);//12
            int m1=12;
            int m2=++m1;
            System.out.println(m2);//13
    }
}

4,赋值运算符=
当“=”两侧的数据类型不一样时,可以使用字典类型转换或者强制类型转换云泽进行处理
扩展赋值运算符: +=,-=,*=,/=,%=

public class luanma {
    public static void main(String[] args){
            int i=10;
            i+=2;
            System.out.println(i);//12
    }
}

5,比较运算符
== != < > >= <= intanceof
比较运算符的结果都是boolean型,true/false
比较运算符"=="不能误写为“=”

public class luanma {
    public static void main(String[] args){
        //区分好==和=的区别
      int i=10;
      int j=20;
      System.out.println(i==j);//false
      System.out.println(i=j);//20,将j赋值给i
    }
}

6,逻辑运算符
&逻辑与 &&短路与
|逻辑或 ||短路或
!逻辑非 ^逻辑异或

image-20220226100513016
public class luanma {
    public static void main(String[] args){
     //区分&与&&
        //相同点:&与&的运算结果相同,当符号左边是true时,二者会执行符号右边的运算
        //不同点:当符号左边是false时,&会继续执行右边的运算,&&不再执行符号右边的运算
        boolean b1=false;
        int num1=10;
        if(b1&(num1++>0)){
            System.out.println("我现在在北京");
        }
        else{
            System.out.println("我现在在南京");
        }
       System.out.println(num1);

        boolean b2=false;
        int num2=10;
        if(b2&&(num2++>0)){
            System.out.println("我现在在北京");
        }
        else{
            System.out.println("我现在在南京");
        }
        System.out.println(num2);
        /*  我现在在南京
            11
            我现在在南京
            10
            */
    }
}

7,位运算符:直接对整数二进制进行的运算,
每向左移一位,相当于*2
每向右移一位,相当于/2

public class luanma {
    public static void main(String[] args){
/*
<<:左移             3<<2=12    3*2*2=12
>>:右移            3>>1=1     3/2=1
>>>:无符号右移      3>>>1=1    3/2=1
&:与运算           6&3=2
|:或运算           6|3=7
^:亦或运算         6^3=5
~:取反运算         ~6=-7*/
        int m=12;
        int n=5;
        System.out.println(m&n);//4
        System.out.println(m|n);//13
        System.out.println(m^n);//9
    }
}

8,三元运算符
结构:(条件表达式)?表达式1:表达式2;
如果条件表达式为true执行表达式1,否则执行表达式2,表达式1和2的要求是一致的。
凡是可以使用三元运算符的地方,都可以使用if…else…结构,反之不成立。

public class luanma {
    public static void main(String[] args){
    int m=12;
    int n=13;
    int max=(m>n)?m:n;//如果是真,把m赋给max;如果是假,把n赋给max.
    System.out.println(max);//13
   }
}

Scanner

Scanner:如何从键盘获取不同类型变量
具体步骤:
1:导包–import java.util.Scanner
2:Scanner的实例化 Scanner scan=new Scanner(System.in); 加粗部分可以自己命名
3:调用scanner类的相关方法,获取指定类型的变量 int num=scan.nextInt();

import java.util.Scanner;
public class luanma {
    public static void main(String[] args){
        Scanner scan=new Scanner(System.in);
        int age=scan.nextInt();//int型
        System.out.println(age);

        String name=scan.next();//字符串型,与其他类型不一样
        System.out.println(name);

        double weight=scan.nextDouble();
        System.out.println(weight);//double型
    }
}

循环结构

基本流程控制:顺序结构,分支结构,循环结构
顺序结构:从上到下,逐行执行
分支结构:if…else… switch-case
循环结构: while do…while for重复性地执行某段代码

1,for循环
循环结构的四要素:初始化条件 、循环条件(boolean类型)、 循环体、迭代条件

public class luanma {
    public static void main(String[] args) {
        //用for循环---输出5个hello world
        for(int i=1;i<=5;i++){
            System.out.println("hello world");
        }
    }
}
public class luanma {
    public static void main(String[] args) {
        //使用for循环---遍历100以内的偶数
        for(int i=1;i<=100;i++){
            if(i%2==0) {
                System.out.println(i);
            }
        }
    }
}

2,while循环
说明:小心不要丢了迭代条件,一旦丢了,就可能导致死循环
for和while循环是可以相互转换的

public class luanma {
    public static void main(String[] args) {
        //用while循环---遍历100以内的偶数
        int i=0;
        while(i<=100){
            if(i%2==0){
                System.out.println(i);
            }
            i++;
        }
    }
}

3,do-while循环
特点:至少执行一次循环体
开发中使用for和while比较多

public class luanma {
    public static void main(String[] args) {
        //用do while循环---遍历100以内的偶数
        int i=0;
        do{
            if(i%2==0){
             System.out.println(i);
            }
            i++;
        }
      while(i<=100);
    }
}

4,嵌套循环
内层循环遍历一遍,只相当于外层循环体执行了一次
假设外层循环需要执行m次,内层循环需要执行n次,此时内层循环体执行了m*n次

public class luanma {
    public static void main(String[] args) {
 //嵌套循环,外层循环控制行数,内层循环控制列数
        for(int i=1;i<=6;i++){
            for(int j=1;j<7-i;j++){
                System.out.print("*");
            }
            System.out.println();
        }
    }
}
/*
*****
****
***
**
*
*/

数组

数组:是多个相同类型数据按一定顺序排列的集合,并使用一个名字命名
数组特点:
1,数组是有序排列
2,创建数组对象会在内存中开辟一整块连续空间
3,数组长度一旦确定,就不能修改
4,数组是引用数据类型变量,数组的元素既可以是基本数据类型,也可以是引用数据类型
数组分类:
按照维数:一维数组,二维数组…
按照元素的类型:基本数据类型元素的数组、引用数据类型元素的数组

一维数组的使用
1,一维数组的申明和初始化:初始化完成,长度确定
2,如何调用数组指定位置的元素
3,如何获取数组的长度
4,如何遍历数组
5,数组元素的默认初始化值
6,数组的内存解析

public class luanma {
    public static void main(String[] args) {
        //1.一维数组的申明和初始化
        int[] num;
        num=new int[]{1001,1002,1003,1004};//静态初始化:初始化和赋值同时进行
        String[] name= new String[4];//动态初始化:初始化和赋值分进行
        //2,如何调用数组指定位置的元素
        name[0]="A";
        name[1]="B";
        //3,如何获取数组的长度 属性:length
        System.out.println(name.length);
        //4,如何遍历数组
        for (int i=0;i<=4;i++){
            System.out.println(name[i]);
        }
    }
}
public class luanma {
    public static void main(String[] args) {
        //5,数组元素的默认初始化值
        int[] arr=new int [4];
        for (int i=0;i<arr.length;i++){
            System.out.println(arr[i]);//0 0 0 0
            //整型:默认初始化值 0
            //浮点型:默认初始化值 0.0
            //char型:默认初始化值 0或‘\u0000'而不是’0‘
            //boolean型:默认初始化值false
        }
    }
}

二维数组的使用
理解:可以看做是一维数组arr1又作为另一个一维数组arr2的元素而存在
规定:二维数组分为外层数组元素,内层数组元素
int[] arr=new int[4][3];
外层元素:arr[0] arr[1] arr[2]
内层元素:arr[0][1] arr[2][1]

数据结构:
1,数据与数据之间的逻辑关系:集合、一对一、一对多、多对多
2,数据的村塾结构:
线性表(一对一):顺序表(数组)、链表、栈、队列
数行结构(一对多):二叉树
图形结构(多对多):
算法:排序算法、搜索算法

public class luanma {
    public static void main(String[] args) {
        //1,二维数组的申明和初始化
        int [][] arr1=new int[][]{{1,2,3,4},{5,6,7,8,},{8,9,0}};//静态
        String[][]arr2=new String[3][2];//动态
        String[][]arr3=new String[3][0];
        //2,如何调用数组指定位置的元素
        System.out.println(arr1[0][0]);//1
        //3,如何获取数组的长度
        System.out.println(arr1.length);//3
        System.out.println(arr1[0].length);//4
        //4,如何遍历数组
        for(int i=0;i< arr1.length;i++){
            for(int j=0;j< arr1[i].length;j++){
                System.out.printf(arr1[i][j]+" ");
            }
            System.out.println();
        }
    }
}
public class luanma {
    public static void main(String[] args) {
        //5,二维数组元素的默认初始化值
        //外层元素的初始化值:地址值
        //内层元素的初始化值:与一维数组初始化情况相同
        int arr[][]=new int[3][4];
        System.out.println(arr[0]);//[I@776ec8df    地址值
        System.out.println(arr[0][0]);//0
    }
}

练习题一:打印杨辉三角
算法步骤
1,申明并初始化二维数组(动态)
2,给数组的元素赋值:给首末元素赋值 给每行的非首末元素赋值
3,遍历数组

public class luanma {
    public static void main(String[] args) {
     int[][] Y=new int[10][];
     //赋值
     for(int i=0;i<Y.length;i++){
         Y[i]=new int[i+1];
         //给首末元素赋值
         Y[i][0]=1;
         Y[i][i]=1;
         //给每行的非首末元素赋值
         if(i>1){
             for(int j=1;j<Y[i].length-1;j++){
                 Y[i][j]=Y[i-1][j-1]+Y[i-1][j];
             }
         }
     }
     //遍历数组
     for(int i=0;i< Y.length;i++){
         for(int j=0;j<Y[i].length;j++){
             System.out.print(Y[i][j]+" ");
         }
         System.out.println();
     }

    }
}

数组的复制和元素反转

public class luanma {
    public static void main(String[] args) {
     String[] arr=new String[]{"AA","BB","CC","DD","EE","FF"};
     //数组的复制
        String[] arr1=new String[arr.length];
        for (int i=0;i< arr.length;i++){
            arr1[i]=arr[i];
        }
    //数组的反转
        for(int i=0;i<arr1.length/2;i++){
            String temp=arr[i];
            arr[i]=arr[arr.length-i-1];
            arr[arr.length-i-1]=temp;
        }
        //遍历输出
        for(int i=0;i<arr.length;i++){
            System.out.print(arr[i]+"\t");//FF EE DD CC BB AA
        }
    }
}

数组的查找

public class luanma {
    public static void main(String[] args) {
     String[] arr=new String[]{"AA","BB","CC","DD","EE","FF"};
        //遍历输出
        for(int i=0;i<arr.length;i++){
            System.out.print(arr[i]+"\t");//FF EE DD CC BB AA
        }
        //线性查找
        String dest ="BB";
        dest="yy";
        boolean goal=true;
        for(int i=0;i<arr.length;i++){
            if(dest.equals(arr[i])){
                System.out.print("\n找到了!位置为"+i);
                goal=false;
                break;
            }
        }
       if(goal){
           System.out.print("\n没有找到!");
       }
    //二分法查找:所要查找的数组必须有序
        int arr2[]=new int[]{1,2,3,4,5,6,7,8,9,10};
       int dest1=1;
       int head=0;//初始的首索引
        int end=arr.length-1;//初始的末索引
        boolean goal1=true;
        while(head<=end){
        int middle=(head+end/2);
        if(dest1==middle){
                System.out.print("\n找到了,位置为"+middle);
                goal1=false;
                break;
            }
            
            else if(arr2[middle]>dest1){
                end=middle-1;
            }
           
            else {
                head=middle+1;
            }
        }
        if(goal1){
            System.out.print("\n没有找到!!");
        }

    }
}

排序算法
十大内部排序:选择排序、交换排序、插入排序、归并排序、桶式排序、基数排序

public class luanma {
    public static void main(String[] args) {
    //数组的冒泡排序
        int[] arr=new int[]{12,4,3,56,7,89,0};
        for(int i=0;i<arr.length-1;i++){
            for(int j=0;j<arr.length-1-i;j++){
            if(arr[j]>arr[j+1]) {
                int temp=arr[j];
                arr[j]=arr[j+1];
                arr[j+1]=temp;
            }
            }
        }
        for(int m=0;m<arr.length;m++){
            System.out.print(arr[m]+"\t");//0	3	4	7	12	56	89	
        }
        }
    }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值