设计并实现java类,实现数组排序-常见的DOS命令开发步骤(java程序开发三步骤)
常见的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类的模板
每一个方法对应一个栈帧。方法内声明的变量也应该存放在栈帧里
创建类的一个对象
创建类的多个对象,属性赋值
成员变量和局部变量的相同点和不同点
相同点:
不同点:
方法