
Java
心,始终在路上
这个作者很懒,什么都没留下…
展开
-
Java关键字this与static
this关键字:this是每个对象中,保存自身内存地址的一个引用类型的成员变量this就表示对象自己this不能出现在静态上下文中,因为this和对象相关,而静态属于非对象,是类级别的。使用静态,不用对象,所以不能使用this作用:1 在成员方法中,能够区分同名的局部变量和成员变量(使用this.区分)2 在构造方法中,用于重载调用当前类中的其他构造方法(必须在有效代码第一行) 语法:this(参数)3 return this 返回对象内存地址,可以做到链式调用..原创 2021-04-07 22:38:30 · 129 阅读 · 0 评论 -
Java构造方法及程序生命周期
import java.util.Random;/**Java生命周期* 当编写一个Java文件,经编译后生成一个class文件,Java虚拟机能识别class文件,Java生命周期就是class文件从加载到消亡的过程* 分为 加载、连接、初始化、使用、类卸载5个过程* 1、加载* 在源class文件中找到类的信息将其加载到方法区中,在堆中实例化一个java.lang.Class对象,作为方法区中这个类的信息入口* 2、连接* 连接一般是在加载和初始化原创 2021-04-06 22:51:07 · 237 阅读 · 0 评论 -
Java详细归并排序
/** * 归并排序 * 思想:将两个或两个以上的有序序列组合成一个新的有序序列,先将序列按照树结构不断一分为二, * 直到所有元素都为单个序列(一个元素一个序列),单个元素必然有序。然后通过递归不断执行归并(主要是加入了分治的思想) * 所有操作基于序列下标执行 * 思路:1 如果所给序列只有一个元素,直接返回(属于递归最底层) * 2 把序列分为尽可能相等的两个部分,按照树形思想分(不断一分为二) *原创 2021-04-06 22:45:08 · 88 阅读 · 0 评论 -
Java面向对象
import java.time.LocalDate;/** 对象:* 1 代码角度:new的一个实例,封装了特有的数据* 2 数据角度:封装数据和逻辑的一种方式* 3 现实角度:对象就是某一个具体的东西,一切皆对象* 4 设计角度:从实际的实体中抽象出来某些属性的一种实体表示** 封装:*** 类:* 概念:我们在思想上对某个事物/东西/的唯一性标识* 对某个事物的一个界定(定义)* 对客观事物描述的一个标准,一个模板*原创 2021-04-05 22:50:45 · 91 阅读 · 0 评论 -
Java详细直接插入排序与希尔排序
/** * 直接插入排序 * 思想:把未排序元素插入到有序子序列中,插入后子序列依旧有序 * 直接插入排序是插入排序类中最简单的一种。其他的有折半插入排序、2-路排序排序、表插入排序等 * 思路:1 默认第一个元素为有序子序列(只有一个元素,必然有序),循环从第二个元素开始 * 2 将第 i个元素 之前的元素 从后往前(也可以从前往后)依次比较,查找插入位置 * 2.1 设置临时变量保存第i个元素 *原创 2021-04-05 22:47:29 · 138 阅读 · 1 评论 -
Java详细快排
/** * 快速排序 * 思路: * 给定一个整型数组,使用第一个元素作为基准,start=0,end=arr.length-1 * 一次快排循环: * 第一趟:从end往前比较,如果数组元素大于基准值,end--,继续比较前一个元素, * 只要出现元素值 小于基准值,停止比较,将此值放置于start位置(第一轮start为第一个元素位置) * 第二趟:从start往后比较,如果数组元素小于基准值,start++,继续比较后一个元素, *原创 2021-04-04 22:46:07 · 260 阅读 · 0 评论 -
Java打印当月日历
import java.time.DayOfWeek;import java.time.LocalDate;// 打印当月日历public class CalendarTest { public static void main(String[] args) { // 构造一个当前日期对象 LocalDate data = LocalDate.now(); // 获取每个月数字表示 1-12 表示每个月 int month =原创 2021-04-03 22:50:37 · 313 阅读 · 0 评论 -
Java选择排序
import java.util.Arrays; // 导包/** 选择排序* 1 每次把最大/最小的放左边* 先拿出第一个,假设最小,挨个和最后元素比较,若有比他小的则换位* 2 嵌套循环比较* 3 中间变量* */public class Selection_Sort { public static void main(String[] args) { int[] nums = {2,3,1,5,6,0};// sele原创 2021-04-03 22:33:44 · 67 阅读 · 0 评论 -
Java给定一个由整数组成的非空数组(非负整数),在该数组元素组成的数 的基础上加1,最高位存放在数组首位,每个元素存储一个数字
/** 加 1* 给定一个由整数组成的非空数组(非负整数),在该数组元素组成的数 的基础上加1,最高位存放在数组首位,每个元素存储一个数字* 假设除了0之外,这个数不会以0开头* 示例:* 输入:{1,2,3},表示123 输出:{1,2,4},表示124* 输入:{4,1,2,3,1},表示42131 输出:{4,1,2,3,2},表示42132* */public class Arrary_add_to_Number { public stat原创 2021-04-03 22:31:08 · 538 阅读 · 0 评论 -
Java二分查找指定元素、查找数组中只出现一次的数字、搜索有序数组中某元素插入位置
二分查找指定元素/** 需求:* 给定一个数组,判断是否包含某个值,如果包含则返回其下标,否则返回-1* 顺序查找:* 1 遍历,循环比较* 2 如果有和目标元素相等,返回下标* 3 如果循环结束,没有相等的,返回-1* 缺点:查询效率低,如果有100万个数据,恰好查询值在末尾,时间复杂度则为100万,数据量小时使用* 二分查找:* 1 建立在排序的基础上* 2 数据没有重复元素,如果有,先找到之前一个* 3 用于查找固定有序的数* 实现:*原创 2021-04-03 22:13:52 · 428 阅读 · 0 评论 -
Java查找给定元素插入位置、数组插入式复制
package com.zpr.array;/** 搜索插入位置:* 给定一个排序数组和一个目标值,在数组中查找目标值,返回其索引,若目标值不存在,返回它将要被按顺序插入的位置* 假设数组无重复元素* 示例:* 输入:{1,3,5,6} ,5 输出:2* 示例:* 输入:{1,3,5,6} ,4 输出:2** 思路:* 1.数组有序* 2.升序:如果目标值等于当前位,返回索引。如果大于上一位,且小于下一位,则为插入位置。都不满足则插入末尾* 3.降序:如果目标原创 2021-03-30 22:48:48 · 196 阅读 · 0 评论 -
Java数组内元素反转、整数每个位置上的数字进行反转
package com.zpr.array;public class Reverse { public static void main(String[] args) { // 给定一个数组,组内元素反转,不构建新数组 int[] arr = {1,2,3,4,5,6,1,2,4,9,3}; /* * 思路:最远元素与最近元素交换位置 * 1.定义中间变量做交换 * 2.前后交换原创 2021-03-30 22:46:08 · 385 阅读 · 0 评论 -
Java删除数组中的重复项、移除数组中指定元素
package com.zpr.array;/** 删除数组中的重复项* 原地删除重复出现的有序数组,使得每个元素只出现一次,返回删除重复元素后的数组长度* 如:给定nums = {0,0,1,1,1,2,2,3,3,3}* 返回:{0,1,2,3}* 思路:* 根据题目数组是有序的,所以只需比较相邻两个元素即可* 如果不相等,说明元素不同,往前放* 扩展:若是无序数组,可先使用排序算法将数组变有序,后删除重复即可* */public class De原创 2021-03-30 22:39:48 · 889 阅读 · 0 评论 -
Java杨辉三角和回文数
package com.zpr.array;// 观察杨辉三角(前五行),打印前7行内容/* * 1 * 1 1 * 1 2 1 * 1 3 3 1 * 1 4 6 4 1 * * 六行:1 5 10 10 5 1 * * 规律: * 1:首尾为1,N行有N个数 * 2:每一行中间数(n行m列)=(n-1行m-1列)+(n行m-1列) * 3:二维数组中的多个一维数组 * */ public class YangHuiTriangle {原创 2021-03-30 22:14:42 · 257 阅读 · 0 评论 -
Java a个数中随机选取k个数
import java.util.Arrays;import java.util.Scanner;public class LotteryDrawing { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("您选择抓几个数a:"); int a = scanner.nextInt();原创 2021-03-23 18:10:55 · 332 阅读 · 0 评论 -
Java稀疏二维数组压缩
public class ArrayDemo08 { public static void main(String[] args) { // 创建一个二维数组 int[][] array1 = new int[11][11]; array1[1][2] = 1; array1[2][3] = 2; System.out.println("原始数组:"); // 打印 for (int[]原创 2021-03-23 18:07:31 · 180 阅读 · 0 评论 -
Java冒泡排序
import java.util.Arrays;public class ArrayDemo07 { public static void main(String[] args) { /* * 冒泡排序 * 1.比较数组中两个相邻元素,如果第一个数比第二个数大,交换他们位置 * 2.每一次比较,都会产生一个最大值,或者最小值 * 3.下一轮少一次排序 * 4.依次循环,结束原创 2021-03-23 18:05:19 · 79 阅读 · 0 评论 -
Java实现简单的计算器(+-*/)
import java.util.Scanner;public class Calculator { public static void main(String[] args) { // scanner输入中可一直连续输入字符串或者数字 // 可先多次输入字符串,后能多次输入数字 // 不可多次输入数字后,再输入字符串,会跳过字符串输入 Scanner scanner = new Scanner(System.in);原创 2021-03-23 18:01:27 · 1322 阅读 · 0 评论 -
Java打印101-150之间的所有质数
public class LabelDemo { public static void main(String[] args) { // 打印101-150之间的所有质数 // 只能被1和本身整除的数 int count = 0; // 不建议使用代标签的cont,麻烦!!! outer:for (int i = 101; i < 150; i++) { for (int j = 2;原创 2021-03-23 17:57:39 · 617 阅读 · 0 评论 -
Java打印九九乘法表
package com.zpr.struct;public class ForDemo04 { public static void main(String[] args) { // 打印九九乘法表 for (int i = 1; i <= 9; i++) {// System.out.print("1"+"*"+i+"="+(1*i)+"\t"); if (i==2) { Sy原创 2021-03-23 17:56:07 · 194 阅读 · 0 评论 -
Java计算0-100之间的奇数和偶数的和
public class ForDemo02 { public static void main(String[] args) { // 计算0-100之间的奇数和偶数的和 int oddSum = 0; int evenSum = 0; for (int i = 0; i <= 100; i++) { if (i%2==0) { // 偶数 evenSum += i;原创 2021-03-21 22:23:23 · 2235 阅读 · 0 评论 -
Java判断输入两个字符串自否相等
import java.util.Scanner;public class IfDemo01 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入第一个字符串:"); String str1 = scanner.nextLine(); System.out.printl原创 2021-03-21 22:12:42 · 1510 阅读 · 0 评论 -
Java计算1+2+...+100
public class DoWhileDemo01 { public static void main(String[] args) { // 计算1+2+...+100 // Do..While总是保证循环体会被至少执行一次,这是与Whlie的主要区别 int i = 0; int sum = 0; do { i++; sum += i; }while原创 2021-03-21 21:59:45 · 1870 阅读 · 0 评论 -
Java变量
public class Demo06 { // 类变量 static static double salary = 2500; // 常量 final // 修饰符 顺序可变 static final double PI = 3.1415; final static double DAY = 365; // 属性:变量 // 实例变量:从属于对象;如果不自行初始化,这个类型初始默认值 0 0.0 // 布尔值默认false原创 2021-03-21 21:52:37 · 83 阅读 · 0 评论 -
Java数据类型转换
public class Demo04 { public static void main(String[] args) { /* * Java是强类型语言,运算中,不同类型数据先转化为同一数据类型,然后运算 * 低 高 * byte,short,char -> int -> long -> float -> double * 强类型转换、自动类型转换原创 2021-03-21 21:48:25 · 57 阅读 · 0 评论 -
Java字符串比较
// 代码1String sa = new String("hello world");String sb = new String("hello world");System.out.println(sa==sb);// 代码2String sc = "hello world";String sd = "hello world";System.out.println(sc==sd);上述代码块1与代码块2有何区别?代码1中局部变量sa,sb中存储的是JVM在堆中new出来的两个St原创 2021-03-21 21:45:21 · 105 阅读 · 0 评论 -
Java数据类型
public class Demo02 { public static void main(String[] args) { // Java是强类型语言 // 要求变量的使用要严格符合规定,所有变量必须先定义后使用 String Name = "zpr"; int a = 10; System.out.println(a); // 八大数据类型 // 整数 int num原创 2021-03-21 21:10:46 · 75 阅读 · 0 评论 -
Java中位运算
2*8 = 16 怎样运算最快?Java中"<<"表示 左移 一位二进制数, 表示原始数乘2Java中">>"表示 右移 一位二进制数, 表示原始数除22表示为二进制:0000 0010 (2)16表示为二进制:0001 0000 (16)计算机中位运算效率极高!!!故2*8 = 16运算最快为使用位运算符: 2<<3,可理解为2*(2* 2* 2)System.out.println(2<<3); // 2 * 2*2*2public原创 2021-03-21 21:02:12 · 114 阅读 · 0 评论 -
Java中字符串连接符“+“
如下代码块中前两个输出语句有何区别?int a = 10;int b = 20;//下面两句代码区别?System.out.println("" + a + b);System.out.println(a + b + "");System.out.println(a + b + "c");第一个输出语句输出时前面有string字符,则后面“+”作为连接符使用第二个输出语句输出时后面接string字符串时,则前面“+”先作为运算符计算,计算后“+”作为连接符连接输出结果如下原创 2021-03-21 20:48:37 · 1442 阅读 · 0 评论 -
Scanner使用例子:输入多个数字,并求和与求平均数
实例化Scanner对象定义求和初始值sum与计数器m提示输入数字while循环判断是否还有输入,并对每一次输入进行计算并统计import java.util.Scanner;public class Demo04 { public static void main(String[] args) { // 输入多个数字,并求和与求平均数,输入数字用回车确认并输出当前结果,通过输入0来结束输入 Scanner scanner = new Scanner.原创 2021-03-21 20:20:18 · 1225 阅读 · 0 评论 -
JavaDoc 文档生成
JavaDoc 文档生成在Doc文件夹目录下打开cmd控制台cmd打开方式:在导航栏前加cmd/CMD,后接空格,回车然后执行如下命令:Javadoc -encoding UTF-8 -charset UTF-8 Doc.java生成文档中index打开效果如下:原创 2021-03-20 13:01:55 · 98 阅读 · 0 评论 -
Scanner 对象
Scanner 对象Java.util.Scanner是Java5的新特征,可以通过Scanner类来获取用户的输入,实现程序和人的交互。基本语法:Scanner s = new Scanner(System.in);通过Scanner类的next()与nextline()方法获取输入的字符串,在读取前一般需要 使用hasNext()与hasNextLine()判断是否还有输入数据。next():一定要读取到有效字符后才可以结束输入对输入有效字符之前遇到的空白,next()方原创 2021-03-20 12:52:13 · 98 阅读 · 0 评论 -
Java_Hello World
Hello World新建一个文件夹,存放代码新建一个Java文件文件后缀名为 .javaHello.java【注意】系统可能没有显示文件后缀名,需要手动打开(查看–>勾选文件扩展名)编写代码public class Hello{ public static void main(String[] args){ System.out.print("Hello world!"); }}编译Javac java文件,生成一个class文件运行原创 2021-03-20 12:48:51 · 94 阅读 · 0 评论