java学习贴

这篇博客详细介绍了Java的基础知识,包括JDK、JRE和JVM的关系,标识符的命名规则,键盘录入,IDEA快捷键,类型转换,自增自减运算符,以及基本的数据类型和运算。此外,还讲解了数组、方法、面向对象的概念,字符串操作,API使用,以及集合ArrayList的特点和操作。
摘要由CSDN通过智能技术生成

一、

1.jdk是什么?有哪些内容组成?

jdk是java开发工具包

  • jvm虚拟机:java程序运行的地方
  • 核心类库:java已经写好的东西,可以直接用
  • 开发工具:javac、java、jdb、jhat...

2.jre是什么?有哪些内容组成?

  • jre是java运行环境
  • jvm、核心类库、运行工具

3.jdk、jre、jvm三者的包含关系

  • jdk包含了jre
  • jre包含了jvm

二、

标识符——命名规则——硬性建议

  • 由字母、数字、下划线和美元符组成
  • 不能以数字开头
  • 不能是关键字
  • 区分大小写

标识符——命名规则——软性建议

小驼峰:方法、变量

1、标识符是一个单词,全部小写

例:name

2、标识符由多个单词组成,第一个单词首字母小写,其他单词首字母大写

例:firstName

大驼峰:类名

1、标识符是一个单词,首字母大写

例:Student

2、标识符由多个单词组成,每个单词首字母大写

例:GoodStudent

三、

键盘录入

步骤1:导包

import java.util.Scanner;

步骤二:创建对象

Scanner sc = new Scanner(System.in);

步骤三:接收数据

int i = sc.nextInt();

四、

idea快捷键

public static void main(String[] args) ————psvm
    System.out.println("");————sout

项目结构:

project(项目)

        module(模块)——project structure——modules——new moudle

                package(包)

                        class(类)

五、

拆分数字公式总结

个位:数值%10

十位:数值/10%10

百位:数值/100%10

千位:数值/1000%10

.......

类型转换分类:

byte<short<int<long<float<double

隐式转换:取值范围小的数值->取值范围大的数值

强制转换:取值范围大的数值->取值范围小的数值

        【格式:目标数据类型 变量名 = (目标数据类型)被强转的数据】

        范例:double a = 12.3;

                    int b = (int)a;

六、

自增自减运算符

单独使用:++和--无论放在变量的前边还是后边,单独写一行结果是一样的

参与计算:

(1)先用后加

        int a = 10;

        int b = a++;

//b = 10; a = 11

(2)先加后用

        int a = 10;

        int b = ++a;

//b = 11; a=11

正数的原码、反码和补码都一样。

反码:

计算规则——正数反码不变,负数的反码在原码基础上符号位不变,数值取反,0变1,1变0。

补码:反码加一。

运算符 含义 运算规则
& 逻辑与 0为false 1为true
| 逻辑或 0为false 1为true
<< 左移 向左移动,低位补0
>> 右移 向右移动,高位补0或1
>>> 无符号右移 向右移动,高位补0

判断与循环:

if(关系表达式){

        语句体;

}

if(关系表达式){

        语句体1;

}else{

        语句体2;

}

if(关系表达式1){

        语句体1;

}else if(关系表达式2){

        语句体2;

}

.......

   else{

        语句体n+1;

}

switch(表达式){

        case 值1:

                语句体1;

                break;

        case 值2:

                语句体2;

                break;

        ..........

        default:

                语句体n+1;

                break;

}

for(初始化语句;条件判断语句;条件控制语句){

        循环体语句

}

初始化语句;

while(条件判断语句){

        循环体语句;

        条件控制语句;

}

力扣:

1.回文数

核心思路:把数字倒过来跟原来的数字进行比较

class Solution {
    public boolean isPalindrome(int x) {
        int temp = x;//例121
        int num = 0;
//所有负数都不是回文数
        if(x >= 0 ){
            while (x != 0){//121、12、1、0
                int ge = x % 10;//1、2、1
                x = x / 10;//12、1、0
                num = num * 10 + ge;//1、12、121
            }
            return num == temp;//121==121
        }else{
            return false;
        }

    }
}

2.求商和余数

        int dividend = 100;
        int divisor = 10;
        int count = 0;
        while (dividend >= divisor){
            dividend = dividend - divisor;
            count++;
        }
        System.out.println("余数:" + dividend);
        System.out.println("商:" + count);

初始化语句;

do{

        循环体语句;

        条件控制语句;

}while(条件判断语句);

跳转循环:

continue:结束本次循环,继续下次循环;

break:结束整个循环;

for(int i = 1; i <= 5; i++){
            if(i == 3){
                continue;
                //break;
            }
            System.out.println(i+"吃包子");
        }

逢7过:

for (int i = 1; i <= 100; i++){
            if ((i % 10) == 7|| i % 7 == 0 || i / 10 % 10 == 7){
                System.out.println("数字:" + i + ":过");
                continue;
            }
            System.out.println(i);
        }

求平方根:

思路:在代码当中,从1开始循环,用数字的平方与原来的数字进行比较;如果小于那继续往后判断;如果相等,那当前数字就是平方根;如果大于,那前一个数字就是平方根的整数部分。


        Scanner sc = new Scanner(System.in);
        int x = sc.nextInt();
        for (int i = 1; i <= x; i++){
            int pingfang = i * i;
            if (pingfang < x){
                continue;
            }else if (pingfang == x){
                System.out.println(i);
                break;
            }else{
                System.out.println(i-1);
                break;
            }
        }

求质数:

质数:一个整数只能被1和本身整除,否则叫做合数。

        boolean lag = true;
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个正整数:");
        int number = sc.nextInt();
        for (int i = 2; i < number; i++){
            if (number % i == 0){
                lag = false;
            }
        }
        if (lag){
            System.out.println(number + "是质数");
        }else{
            System.out.println(number + "不是质数");
        }

 猜数字小游戏:

获取随机数:

1.导包——import java.util.Random;

2.创建对象——Random r = new Random();

3.生成随机数——int number = r.nextInt(随机数的范围);

        Random r = new Random();
        int number = r.nextInt(100)+1;
        Scanner sc = new Scanner(System.in);

        while (true){
            int guess = sc.nextInt();
            if (guess > number){
                System.out.println("猜测大了");
                continue;
            }else if (guess < number){
                System.out.println("猜测小了");
                continue;
            }else{
                System.out.println("猜对了");
                break;
            }
        }

七、数组

定义:

格式一:数据类型[] 数组名

格式二:数据类型 数组名[]

静态初始化:

完整格式:数据类型[] 数组名 = new 数据类型[]{元素1, 元素2, ......};

简化格式:数据类型[] 数组名 = {元素1, 元素2, ......};

动态初始化:

数据类型[] 数组名 = new 数据类型[数组长度];

数组的长度属性:

调用方式——数组名.length

八、方法(写在main外面,类里面)

最简单的方法定义:

public static void 方法名(){

        方法体(就是打包起来的代码);

}

调用:方法名();

带参数的方法定义:

单个参数:public static void 方法名(参数){..............}

调用:方法名(参数);

多个参数:public static void 方法名(参数1,参数2,参数3............){..............}

调用:方法名(参数1,参数2,参数3............);

形参:方法定义中的参数

实参:方法调用中的参数

带返回值方法的定义:

public static 返回值类型 方法名(){

        方法体(就是打包起来的代码);

        return 返回值;

}

直接调用:方法名(实参);

赋值调用:整数类型 变量名 = 方法名(实参);

输出调用:System.out.println(方法名(实参));

方法的重载同一个类方法名相同参数不同;与返回值无关。

        其中 参数不同:个数不同、类型不同、顺序不同

基本数据类型:整数类型、浮点数类型、布尔类型、字符类型

引用数据类型:除了基本数据类型的其他所有类型

其中,引用数据类型:不管arr1还是arr2,只要对右侧数据进行改变,再次访问就是修改后的结果。因为arr1和arr2使用同一个空间。

对于以上知识点的综合案例

一、
package anli;

import java.util.Scanner;

public class demo {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入机票原价:");
        int ticket = sc.nextInt();
        System.out.println("请输入月份:");
        int month = sc.nextInt();
        System.out.println("请输入头等舱0或经济舱1:");
        int seat = sc.nextInt();


        double price = 0;
        if (month >= 5 && month <= 10){
            if (seat == 0){
                price = ticket * 0.9;
            }else {
                price = ticket * 0.85;
            }
        } else if ((month >= 11 && month <= 12) || (month >= 1 && month <= 4 )) {
            if (seat == 0){
                price = ticket * 0.7;
            }else {
                price = ticket * 0.65;
            }
        }else{
            System.out.println("没有这个月份");
        }

        System.out.println(price);
    }
}


二、简化
package anli;

import java.util.Scanner;

public class demo {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入机票原价:");
        int ticket = sc.nextInt();
        System.out.println("请输入月份:");
        int month = sc.nextInt();
        System.out.println("请输入头等舱0或经济舱1:");
        int seat = sc.nextInt();
        int price = 0;


        if (month >= 5 && month <= 10){
           price = jisuanjiage(ticket,seat,0.9,0.85);
        } else if ((month >= 11 && month <= 12) || (month >= 1 && month <= 4 )) {
            price = jisuanjiage(ticket,seat,0.7,0.65);
        }else{
            System.out.println("没有这个月份");
        }

        System.out.println(price);

    }

    public static int jisuanjiage(int ticket,int seat,double v0,double v1) {

        int price = 0;
        if (seat == 0){
            price = (int)(ticket * v0);
        }else {
            price = (int)(ticket * v1);
        }
        return price;

    }

}

package anli;

public class demo2 {
    public static void main(String[] args) {
        int count = 0;

        for (int i = 101; i <= 200; i++){
            boolean lag = true;
            for (int j = 2; j < i; j++){
                if (i % j == 0){
                    lag = false;
                    break;
                }
            }
            if (lag){
                System.out.println(i);
                count++;
            }
        }
        System.out.println("一共" + count + "个素数");
    }
}

package anli;

import java.util.Random;

public class demo3 {
    public static void main(String[] args) {
        Random r = new Random();
        char[] arr = new char[52];

        for (int i = 0; i < arr.length; i++) {
            if (i < 26){
                arr[i] = (char)(65 + i);
            }else {
                arr[i] = (char)(97 + i - 26);
            }
            System.out.print(arr[i] + " ");
        }
        System.out.println(" ");
        String reasult = "";
        for (int i = 0; i < 4; i++){
            int randomindex = r.nextInt(arr.length);
            reasult = reasult + arr[randomindex];
        }
        reasult = reasult + r.nextInt(10);
        System.out.println(reasult);



    }
}

package anli;

public class demo4 {
    public static void main(String[] args) {
        int[] arr = {1,2,4,5,8,3,7,9,6};
        int[] newarr = new int[arr.length];
        for (int i = 0; i < arr.length; i++) {
            newarr[i] = arr[i];
        }
        System.out.print("[");
        for (int i = 0; i < newarr.length; i++) {
            if(i != newarr.length-1){
                System.out.print(newarr[i] + ",");
            }else {
                System.out.print(newarr[i] + "]");
            }

        }

    }
}

package anli;

import java.util.Scanner;

public class demo5 {
    public static void main(String[] args) {
        int[] scores = getScores();

        int max = getMax(scores);

        int min = getMin(scores);

        int sum1 = getSum1(scores);

        int sum = 0;
        sum = max + min;

        double ave = 0;
        ave = (sum1 - sum)/(scores.length-2);
        System.out.println(ave);

    }

    public static int getSum1(int[] scores) {
        int sum1 = 0;

        for (int i = 0; i < scores.length; i++) {
            sum1 = sum1 + scores[i];

        }
        return sum1;
    }

    public static int getMin(int[] scores) {
        int min = scores[0];
        for (int i = 1; i < scores.length; i++){

            if (min > scores[i]){
                min = scores[i];
            }
        }
        return min;
    }

    public static int getMax(int[] scores) {
        int max = scores[0];

        for (int i = 1; i < scores.length; i++){
            if (max < scores[i]){
                max = scores[i];
            }
            
        }
        return max;
    }

    public static int[] getScores() {
        Scanner sc = new Scanner(System.in);
        int[] scores = new int[6];
        for (int i =0; i < scores.length; ){
            System.out.println("请输入0-100的整数:");
            int score = sc.nextInt();
            if (score >=0 && score <= 100){
                scores[i] = score;
                i++;
            }

        }
        return scores;
    }
}

package anli;

public class demo6 {
    public static void main(String[] args) {
        //1.计算数组长度
        int number = 123456;
        int count = 0;
        int temp = number;
        while (number != 0){
            number = number / 10;
            count++;
        }
        //2.定义数组
        int[] arr = new int[count];
        //3.把整数存放到数组里
        int index = arr.length -1;
        while (temp != 0){
            int ge = temp % 10;
            temp = temp / 10;
            arr[index] = ge;
            index--;
        }
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }

        //4.进行加密
        for (int i = 0; i < arr.length; i++) {
            arr[i] = (arr[i] + 5) % 10;
            System.out.print(arr[i]);
        }
        System.out.println(" ");
        for (int i = 0; i < arr.length / 2; i++){

            int temp1 = arr[i];
            arr[i] = arr[arr.length-i-1];
            arr[arr.length-i-1] = temp1;

        }
        int number1 = 0;
        for (int i = 0; i < arr.length; i++) {
            number1 = number1 * 10 + arr[i];
        }
        System.out.println(number1);

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值