【10天打穿JAVA】JAVA的基本程序设计结构

发布时间:2024年01月24日

目录

前言:

flag:挑战10天打穿JAVA。

1.一个简单的JAVA应用程序

2.注释

JAVA编译器注释快捷键

3.数据类型

整型

浮点类型

char类型

boolean类型

声明常量

枚举类型

字符串

(1)求字串

(2)拼接

(3)判相等

?(4)?比大小

4.输入与输出

关于输入的常用方法如下:

用于pringf的标志

标志的语法如下

5.控制流程

6.大数

高精度运算方法

整数

小数

7.数组

数组的排序sort方法

结语:


前言:

flag:挑战10天打穿JAVA。

2024年1月24日,在接下来的几篇博客我会记录这10天学习的成果和学习心得,把它分享出来是为了激励我自己加快把JAVA学完备战蓝桥杯,同时也希望大家看到我的博客后能一起学习一起进步,正所谓“与优秀的人一起学习,才能变得更出色。”

特别说明:因为我是学完c语言再开始JAVA故我会重点写与c不同的地方,或者c没有的。

下面就开始我的第一天啦😎😎😎

JAVA的基本程序设计结构

1.一个简单的JAVA应用程序

必不可少的hello world!

由于是纯JAVA小白下面我对hello world解释一下,public是公共的意思,class是类,Test2是我的程序名,下面static是静态void是空,这里推荐大家先背下来吧,就好像1+1=2,就是我们人规定的想把它记下来随着后面的深入学习会明白的。

public class Test2
{
    public static void main(String[] args)
    {
        System.out.println("Hello World");
    }
}

运行结果如下:

2.注释

和c一样有(1)//(2)/*? ?

JAVA特有(3)/**? ? ?*/

JAVA编译器注释快捷键

(1)Ctrl+/? 注释本行代码

(2)Ctrl+shift+/ 注释一段带代码

复原只需再按一次即可。

第三主要用于开头,相信有看过JAVA代码的朋友都不陌生。

3.数据类型

JAVA是一种强类型语言。它的每一个变量声明一种类型(每种类型明确字节个数,这也就是为什么JAVA的移植性好),一共有8中基本类型,其中有4中整型,2中浮点型,1中字符char(表示Unicode编码的代码单元,这个编码就好似c的ASCII)还有boolean类型。


整型

int? ? ? ? ?4字节

short? ? ?2字节

long? ? ? 8字节

byte? ? ? 1字节

注意JAVA没有任何无符号形式的int,long,short或byte类型

浮点类型

float? ? ? 4字节

double??8字节

可以用16进制表示浮点数例如,0.125 = 2^(-3)可以表示为0x1.0p-3。在16进制表示法中,用p表示指数,位数用16进制,指数用十进制。指数的基数是2,而不是10.

char类型

注意就这个了。


最特殊的是/uxxxx后面4个16进制数,特别注意即使是在注释中/u后面没有跟4个16进制数也会报错。一定要小心哦。( $ _ $ )

boolean类型

和c语言里面的bool差不多,唯一区别就是在c中0可以代表false在JAVA中这是不可以的。

声明常量

在JAVA中必须使用final定义常量。例如

枚举类型

目前用的不多,估计蓝桥杯用不上故跳过。

字符串

在字符串之前是有个运算符由于我觉得和c差不多故我就不在描述。

首先明确一点JAVA是有字符串类型的叫String,前面的S要大写,使用方法如下:

下面的输出大家可以先跳过,后面我会解释。

JAVA比c简便的地方

(1)求字串

JAVA只需在目标字符串后面加上.subString(x,y);即可,x是起始地点,y是终点。

(2)拼接

可以用+进行字符串拼接,可以在Stirng变量上拼接也可以直接在输出方法哪拼接(JAVA叫方法,c叫函数)如:

在JAVA中字符串是不可变字符串,这样有一个优点:编译器可以让字符串共享。

(3)判相等

s.equals(t)来判断,如果字符串s与字符串t相等返回true,否则返回false,s和t既可以是字符串变量也可以是字符串字面量。如:

如果不区分大小写的化用equalsIgnoreCase方法,用法如上一样的。

?(4)?比大小

int comparreTo(String other)

按照字典顺序,如果字符串位于other之前,返回一个负数;如果字符串位于other之后返回一个正数,如果两个字符串相同返回0.

(5)构建字符串

由于每次拼接字符串都会构成一个新的String对象这样时间和空间复杂度都较高,故可以用StringBuilder类。

先构造一个空的字符串构建器:

new StringBuilder();

每次添加一小部分内容时用append方法。

用法如下,最后要用toString结束。

4.输入与输出

前面可以看到输出到控制台窗口是很简单的,只要调用System.out.println即可,但输入就没那么简单,首先需要构造一个与标准输入流System.in关联的Scanner对象。

Sanner in = new Scanner(System.in);

这个在后面几天会学到先记着。

由于Scanner类定义在java.util包中,当使用的类不是定义在基本java.lang包中时,一定要用import指令导入相应的包。

相应的代码如下:

红色是前摇,蓝色是用法,我这么说很清楚吧😎😎😎

关于输入的常用方法如下:

String nextLine读取输入的下一行内容
String next读取输入的下一个单词(以空格为分隔符)
int nextInt读取下一个表示整数
double nextDouble读取下一个表示浮点数

和c一样JAVA保留了printf(格式化输出)。

调用方法:System.out.printf("%f",x);

与c不同的是可以指定控制格式化输出外观的各种标志。

例如:

用于pringf的标志

+打印正数和负数的符号+3333.33
空格在正数之前添加空格| 333.33|
0在数字前面补0003333.33
-左对齐| 3333.33 |
(将负数括在括号里(3333.33)
添加分组分隔符3,333.33
#(对于f)包含小数点3.33
#(对于x)添加前缀0x或00xcafe
$指定要格式化的参数索引1599F
<格式化前面说明的数值1599F

标志的语法如下

5.控制流程

和c/c++不同的是不能在嵌套的两个块中声明同名的变量

因为和c基本一样我就给出代码大家自己理解一下:

import java.util.*;
public class Test2
{
    public static void main(String[] args)
    {
        Scanner in =  new Scanner(System.in);
        System.out.print("How much money do you need to retire? ");
        double goal = in.nextDouble();
        System.out.print("How much money will you contribute every year? ");
        double payment = in.nextDouble();
        System.out.print("Interest rate in %:" );
        double interestRate = in.nextDouble();
        double balance=0;
        int years = 0;
        while(balance<goal)
        {
            balance+=payment;
            double interest = balance*interestRate/100;
            balance+=interest;
            years++;
        }
        System.out.println("You can retire in "+years+" years.");
    }
}

6.大数

很高兴的是JAVA有自带的高精度运算,当然作者并不是很开心因为刚学过呢😢😢😢,可以用JAVA.math包中两个类BigInteger和BigDecimal,BigInteger类实现任意精度的整数运算,BigDecimal实现任意精度大的浮点数运算。

在用BigInteger和BigDecimal之前要使用静态的valueOf方法将普通的数值转换成大数:

BigInteger? a = BigInteger.valueOf(100);构建100的大数。

遗憾的是,不能用人们熟悉的算术运算符(如+和*)处理大数,而需使用大数类中的add和multiply方法如

BigInteger c = a.add(b);

BigInteger d = c.multiply(b.add(BigInteger.valueOf(2)));

实例如下,计算彩票中奖的概率:

前面要引用一个math包。

import java.math.*;
import java.util.*;
public class Test2
{
    public static void main(String[] args)
    {
        Scanner in = new Scanner(System.in);
        System.out.print("How many numbers do you need to draw? ");
        int k = in.nextInt();
        System.out.print("What is the highest number you can draw? ");
        int n  =in.nextInt();
        BigInteger lotteryOdds = BigInteger.valueOf(1);
        for(int i =1;i<=k;i++)
        {
            lotteryOdds = lotteryOdds.multiply(BigInteger.valueOf(n-i+1)).divide(BigInteger.valueOf(i));
        }
        System.out.println("Your odds are 1 in"+lotteryOdds+". Good luck!");
    }
}

高精度运算方法

整数

BigInteger add(BigInteger other)返回这个大整数和另一个大整数 other的和
?BigInteger subtract (BigInteger other)返回这个大整数和另一个大整数 other的差
?BigInteger multiply (BigInteger other)返回这个大整数和另一个大整数 other的积
BigInteger divide (BigInteger other)返回这个大整数和另一个大整数 other的商
BigInteger mod (BigInteger other)返回这个大整数和另一个大整数 other的余数

小数

BigDecimal add(BigDecimal other)返回这个大实数与 other的和
BigDecimal subtract (BigDecimal other)返回这个大实数与 other的差
BigDecimal multiply (BigDecimal other)返回这个大实数与 other的积
BigDecimal divide (BigDecimal other)返回这个大实数与 other的商

7.数组

和c不同的是JAVA的数组会自动初始化,且创建的常用格式如下:

int[] a = new int[100];

必须先创建再使用。

数组的排序sort方法

在Arrays类提供了sort方法采用的快速排序。

来感受一下吧!

用random生成随机数这个随机数在0~1直接乘于n到0~n-1之间,将一个随机数放到result数组后把number【i】覆盖的,因为用过的不能再用了。

最后用for each循环打印,该循环的好处是不用判断条件,直接全部打印。

import java.util.*;
public class Test2
{
    public static void main(String[] args)
    {
        Scanner in = new Scanner(System.in);
        System.out.print("How many numbers do you need te draw? ");
        int k = in.nextInt();
        System.out.print("What is the highest number you can draw? ");
        int n = in.nextInt();
        int[]numbers = new int[n];
        for(int i =0;i<numbers.length;i++)
            numbers[i] = i+1;
        int[]result = new int[k];
        for(int i =0;i<result.length;i++)
        {
            int r = (int)(Math.random()*n);
            result[i] = numbers[r];
            numbers[r] = numbers[n-1];
            n--;
        }
        Arrays.sort(result);
        System.out.println("Bet the following combination.it'll make you rich!");
        for(int r:result) System.out.println(r);
    }
}

运行结果如下:

结语:

其实写博客不仅仅是为了教大家,同时这也有利于我巩固自己的知识点,和一个学习的总结,由于作者水平有限,对文章有任何问题的还请指出,接受大家的批评,让我改进,如果大家有所收获的话还请不要吝啬你们的点赞收藏和关注,这可以激励我写出更加优秀的文章。

文章来源:https://blog.csdn.net/2301_80035594/article/details/135789752
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。