当前位置: 主页 > JAVA语言

设计并实现java类,实现数组排序-常见的DOS命令开发步骤(java程序开发三步骤)

发布时间:2023-06-11 10:11   浏览次数:次   作者:佚名

常见的DOS命令 开发步骤

java程序开发三步骤:编写、编译、运行

对编写进行说明 class为关键字,表示类,后跟类名。main()方法格式固定的。

public static void main(String[] args)若想变化,只能变化String[] args结构。可以写成:1.String args[] 2.String[] (args全称为arguments)严格区分大小写System.out.println();可加引号输出字符串,也可不加引号输出纯数字或数字加和。 若编译报错问题可能在: 查看文件名、路径是否书写错误。查看代码是否存在语法问题。 编译后,会生成1个或多个字节码文件。每一个字节码对应一个java类,并且字节码文件名与类名相同。 对运行的说明: 区分大小写

2.可能存在运行时异常(第九章讲) 一个源文件可以声明多个类,但最多只能有一个类使用public进行声明。且要求声明为public的类的类名与源文件名相同。 注释(不参与编译) API文档

API是java提供的基本编程接口也就是基础类库。

API文档:为API的目录。

Java的优点 缺点 JVM功能说明

JVM java虚拟机,是虚拟计算机设计并实现java类,实现数组排序,java程序的运行环境。JVM具有指令集并使用不同的存储区域,负责执行指令,管理数据、内存、寄存器。

功能 实现java程序的跨平台性自动内存分配(内存分配、内存回收) 真题

在这里插入图片描述

关键字(50个) 标识符(identifier) 由26英文字母,0-9,_或$组成。(数字不可开头)不可以使用关键字或保留字。严格区分大小写,长度无限制。不能包含空格。 包名:多单词组成时所有字母小写。类名、接口名:多单词组成时,所有单词首字母大写。变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词以后每个单词首字母大写。常量名:所有字母大写,多单词用下划线连接。 变量

内存中的一个存储区域,该区域的数据可以同一类型范围内不断变化

三要素:数据类型、变量名、储存的值

格式:数据类型 变量名 = 变量值

基本数据类型(8种):

整型:byte\short\int\long(使用long时要加l/L后缀)

浮点型:float\double(使用float时要加f/F后缀)

字符型:char

布尔型:boolean

引用数据类型:

类(class)、数组(array)、接口(interface)、枚举(enum)、注解(annotation)、记录(record)

char gender;\\变量的声明 gender='男';\\变量的赋值/初始化

注意

二进制浮点型不能精确表示0.1、0.01这样的10的负次幂,若需要精确数字计算或保留指定位数的精度,需使用BigDecimal类。

布尔类型:boolean

只有两个取值:true、false;

boolean bo1 = true;

boolean bo2 = false;

尝试用在流程控制语句中:比如条件判断、循环结构等。

tips:我们不谈boolean类型占用的空间大小。但是,真正在内存中分配,使用4个字节。

运算规则 ①自动类型提升

当容量小的变量与容量大的变量做运算时,结果自动转化为容量大的变量。

byte、short、char——>int——>long——>float——>double

特别的:byte、short、char做运算结果为int。

说明:此时的容量大或小,并非指占用内存空间的大小,而是指表示数据的范围大小。

例子

long i2 = 123l; long i3 = 123;

(自动类型提升:int——>long)编译成功

float f2 = 12.3f; float f3 = 12.3;

(不满足自动类型提升的规则:double——>float 所以报错)编译失败

规定:整型常量规定为int类型,浮点型常量规定为double类型。

②强制类型转换

如果需要将容量大的变量的类型转换为容量小的变量类型,需要使用强制类型转换。

强制类型转换需要使用强转符:()在括号内指明要转换的数据类型。

例子

int i4 = 12; float f1 = i4; System.out.println(f1); float f2 = (float)i4;(可以通过,但是没有必要)

精度损失的例子

double d2 = 12.9; int i4 = (int)d2; System.out.println(i4); 直接截断小数部分。

int i5 = 128; byte b1 = (byte)i5; System.out.println(b1); 输出-128

String类,属于引用数据类型。

可以使用双引号赋值,可包含0 1 多个字符。

String与基本数据类型间的运算 基本数据类型包括布尔在内的八种String与基本数据类型变量间只能做连接运算,使用+表示。运算结果为String类型。

++或–运算不会改变变量数据类型

例题

int i = 1; int j = i++ + ++i * i++; System.out.println("j = " + j);

i=1参与运算 i=2 ,

++i使i变成3 ,

3*3+1=10,

此时i=4,j=10.

2.

int i = 2; int j = i++; System.out.println(j);

输出为2,先将i赋值给j,i再运算。

算术运算符

+= -= *= /= %= 操作不会改变变量的数据类型。

例题

如何使变量的值增加2

① int n1 = 10; n1 = n1 + 2; ② int n2 =10; n2 +=2;

建议使用第二种方法,不会改变数据类型,不需要强转。

比较运算符

== !=可适用于引用数据类型

运算结果为布尔类型

逻辑运算符

逻辑与 &

短路与 &&

逻辑或 |

短路或 |

异或 ^ 左右布尔值不同输出ture 相同输出false

区分& 和 &&

相同点:表达的都是且的关系

不同点:

若符号左边为true,则它们都会执行等号右边的操作若符号左边为false,则&会执行右边的操作,&&不会。开发中推荐使用&& 区分| 和 ||

相同点:表达的都是或的关系

不同点:

若符号左边为false,则它们都会执行等号右边的操作若符号左边为true,则|会执行右边的操作,||不会。开发中推荐使用||

面试题:高效的方式计算*8

解:2 在一定范围内,数据每向右移动一位,原数据/2.(正负皆适用设计并实现java类,实现数组排序,不能整除向下取整) 正数补0,负数补1. */

/* (3) >>> 向右移动时,左面直接补0, */

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

条件运算符只有一个 就是三元运算符,凡用条件运算符都可以用if-else代替,反之不可。

在这里插入图片描述

Scanner 键盘输入功能的实现

步骤1:导包import java.util.Scanner

步骤2:提供(或创建)一个Scanner类的实例

步骤3:调用Scanner类中的方法,获取指定类型的变量

步骤4:关闭资源,调用Scanner类的close()

案例:小明注册某交友网站,要求录入个人相关信息,如下:

请输入你的网名,你的年龄,你的体重,你是否单身,你的性别等情况。

import java.util.Scanner;

class ScannerTest{

public static void main(String[] args){

//步骤2:提供(或创建)一个Scanner类的实例

Scanner scan = new Scanner(System.in);

System.out.println(“请输入你的网名:”);

String name = scan.next();

System.out.println("name = " + name);

System.out.println(“请输入你的年龄:”);

int age = scan.nextInt();

System.out.println(“请输入你的体重:”);

double weight = scan.nextDouble();

System.out.println(“你是否单身(单身 true ; 不单身 false)”);

boolean isSingle = scan.nextBoolean();

System.out.println(“请输入你的性别:”);

char gender = scan.next().chatAt(0);

System.out.println(“网名”+name+“年龄”+age…);

System.out.println(“注册成功,欢迎”);

scan.close();

}

}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kag3RsWA-1538729559620)(img_7.png)]

如何获取随机数 可以使用java提供的API:Math类的random()random()调用之后,会返回一个[0.0,1.0]范围内的double型的随机数需求1:获取一个[0,100]范围的随机整数?需求2:获取一个[a,b]范围的随机数

(int)(Math.random() * (b-a+1)) + a

class RandomTest {

public static void main(String[] args){

double d1 = Math.random();

System.out.println("d1 = "+ d1);

int num1 = (int)(Math.random() * 101); //[0.0,1.0]–>[0.0,101.0)–>[0,100]

System.out.println("num1 = " + num1);

}

}

快捷键

ctrl+shift+/ 为多行注释快捷键

out+enter 为导包快捷键->选中未导包的函数,使用快捷键则导包。若有多个包含有同一个类,则该方法与自动导包配置需要手动指定。

获取系统当时的时间操作为:System.currentTimeMillis();为long型数据,单位是毫秒。

质数输出

方法1:遍历2到10000自然数,判断某数是否可以除尽比他小的某数。

1优化:加break;针对非质数有效果。->加上Math.sqrt()的效率更高:

数组(array) 概念:多个相同类型数据的组合 特点 一维数组的内存分析

new代表新开辟内存空间。

java中内存是如何划分的

java虚拟机架构图

在这里插入图片描述

内存中分五个部分:方法区,程序计数器,本地方法栈,堆,虚拟机栈。

在这里插入图片描述

与数组相关的是虚拟机栈和堆。

例如:int []arr = new int[]{1,2,3};

虚拟机栈:用于存放方法中声明的变量。如:arr

堆:用于存放数组的实体既数组中的所有元素。比如:1,2,3

栈stack特点:先进的后出去,后进的先出去。

堆heap

例1:

在这里插入图片描述

例2:

在这里插入图片描述

二维数组的内存解析

例1:

在这里插入图片描述

例2:

在这里插入图片描述

面向对象三条主线 面向对象是软件开发的一类风格,开发范式。除了面向对象,还有面向过程,指令式编程和函数式编程。在所有的编程范式中,我们接触最多的还是面向过程和面向对象两种。 面向过程的程序设计思想,简称POP 面向对象的程序设计思想,简称OOP 上述两种非对立,他们是相辅相成的,面向对象离不开面向过程。 java的基本元素:类和对象

类:具有相同特征的事物的抽象描述,是抽象的。

对象:是实际存在的该类事物的每个个体,是具体的,也称为实例。

类的成员概述

面向对象的重点是类的设计->类的成员设计

创建类,并设计类的内部成员(属性,方法)创建类的对象,比如,Phone p1 = new Phone();通过对象调用内部属性和方法,完成相关功能。

虚拟机栈(栈):用于存放方法中声明的变量。

堆:new出来的结构。比如:数组实体,对象实体,包括对象中的属性。

方法区:存放类的模板,比如:Phone类的模板

每一个方法对应一个栈帧。方法内声明的变量也应该存放在栈帧里

创建类的一个对象

在这里插入图片描述

创建类的多个对象,属性赋值

在这里插入图片描述

成员变量和局部变量的相同点和不同点

相同点:

在这里插入图片描述

不同点:

在这里插入图片描述

在这里插入图片描述

方法