话接上回,继续Java集合框架的学习,这次主要介绍Map接口。 2、Map接口 存放一对值的最大接口(接口中的每个元素都是一对,以 key-value 的形式保存)。 import java.util.HashMap; //导包 import java.util.Iterator; import java.util.Scanner; public class MapDemo for-each循环 import java.util.HashMap; //导包 import java.util.Map; public class HashMapDemo1 { public ; //导包 import java.util.Iterator; import java.util.Map; public class HashMapDemo1 { public static
话接上回,继续java IO部分的学习。上一次说完了字节流的读写数据,这次介绍一下字符流的读写数据。 Java 内部采用此编码。 ,一个汉字占2个字节 /* 解码 1.String(byte[] bytes) 2.String(bytes,String charsetName new String(bys,"GBK"); // bys用UTF-8编码,却用GBK解码,所以输出会乱码 String ss3=new String(bys2,"GBK"); // bys2 示例(使用字符流复制java文件) 用转换流InputStreamReader和OutputStreamWriter实现字符流复制java文件 转换流作用:将字节流转换为字符流 import java.io
参考链接: 为什么Java不是纯粹的面向对象语言 JAVA进阶2 深入理解面向对象 一、结构化程序设计与面向对象1. 概述2. 结构化程序设计简介2. 定义类2. 而C++、Java、C#、Ruby等都是面向对象的编程语言,将现实世界采用类、对象的概念进行建模。 2. 如接上面的程序: Person p2=p; 如果堆内存里的对象没有任何变量指向该对象,那程序将无法再访问该对象,这个对象就变成了垃圾,Java的垃圾回收机制将回收该对象,释放该对象所占的内存区。 Java7 增强了包装类的功能,为所有包装类提供了一个静态的compare(xxx var1,xxx val2)方法,以方便进行值比较 四、类的设计原则 一、类的设计原则 1.单一职责原则(SRP
正如上图所示,大致分为3个步骤: 1、最开始,我们的程序是存在于硬盘中的,当启动运行时,程序会被加载(load)到内存中去,这里的内存可以看做我们的内存条; 2、此时 Java的数据类型 先来复习一下Java的数据类型,Java中数据类型分为两种,基本数据类型和引用数据类型,如下图: ? newName); 到了函数这块,会有一点点复杂,因为SetName(String name)函数有一个类型为引用类型参数name,而且传入的实参为newName,这时newName中存储的值(地址2) 同理,当执行了SetName(String name)函数中的this.name=name时,会把栈内存中name中存储的值(地址2)赋值给堆内存中person的name,此时person中的name 多少懂一些java基础的您肯定已经猜出运行结果了: 运行结果: ?
(int,int) = ⋐ int (*pfarr[2])(int,int)={&Add,&Sub}; return 0; } 函数指针数组的用途:转移表. 所以我们需要将e1和e2进行强制类型转换成int*,将他们做差,将结果返回。 ); //test3(); return 0; } 如果我们想排序结构体数组,那我们就写一个test2和test3,test2比较年龄,test3比较名字。 按照年龄比较 //2. Stu*)e2)->age; } void test2() { struct Stu arr[] = { {"zhanhsan", 20}, {"lisi", 30}, {"wangwu", 12}
两两相邻的元素比较 //2. { return (*(int*)p1 - *(int*)p2);//通过改变p1和p2的位置来改变升降序 } void print(int arr[], int sz) { int i = 0 { return ((struct Stu*)p1)->age - ((struct Stu*)p2)->age; } void test2() { struct Stu arr[] = { { *buf2 = tmp; buf1++; buf2++; } } void bubble_sort(void* base, int num, int size, int (*cmp) { return ((struct Stu*)p1)->age - ((struct Stu*)p2)->age; } //测试bubble_sort 排序结构体数据 void test2()
https://blog.csdn.net/huyuyang6688/article/details/44056119 学习Java中的线程时,自然而然地联想到之前学过的操作系统中处理器那一块的知识 Java中的线程是通过java.lang.Thread类来实现的,每一个Thread对象都代表一个新的线程。 Java中实现线程有两种方法: 1、继承Thread类,并且重写其run方法(用来封装整个线程要执行的命令),调用start方法启动线程。 温馨提示:因为Java中不支持多继承,所以实现线程时,一旦继承了Thread类,就无法再继承其他类了。但Java支持实现多个接口,所以推荐采用第二中方法,比较灵活。 例: import java.util.*; public class TestSleep { public static void main(String[] args) { MyThread
SpringCloud进阶(2)–Nacos基础2 集群分区 在一个分布式应用中,一个相同的服务可能会在不同的机器、位置上启动,当我们一个服务去调用另一个服务,如果被调用的服务存在多个分布式,我们应该优先选择调用方同一区域的服务进行调用
();//后退操作,返回上一个访问历史 //window.history.forward();//前进操作,访问下一个访问历史 //window.history.go(2) // 通过getElemnetById("id")函数,来通过id属性值获取标签,【推荐】 var _box = document.getElementById("box2" 获取样式的值 100px // 2. appendChild(t2); d2.className = "test"; container.appendChild(d2); </script> </body [](image/2.jpg)
那么,我们就理解了,对于多少位,应该是这样一个范围: 那么,就让我们根据一些练习题练习一下,看看是否掌握了吧 int i=-20,等于2的4次方+2的2次方,因为都是4个字节,所以都是32个比特位。 1111 1111 1111 1111 1110 1011 补码:1111 1111 1111 1111 1111 1111 1110 1100 unsigned int j=10 等于2的 3次方+2的1次方 0000 0000 0000 0000 0000 0000 0000 1010 + 1111 1111 1111 1111 1111 运行下面这个程序: 我们会发现输出结果是1 2 3。 第一种比较方法不推荐,因为我们会误认为是整数比较。第二种方法也不推荐,false只有C99支持。
Java基础 Java入门时我们都是学了什么? Java集合 ArrayList源码解析 Vector源码解析 CopyOnWriteArrayList源码解析 LinkedList源码解析 HashMap源码解析 ConcurrentHashMap 源码解析 LinkedHashMap源码解析 TreeSet源码解析 HashSet源码解析 LinkedHashSet源码解析 Java 多线程 线程的状态 线程的使用 Synchronized 线程通信 ThreadLocal Lock Java并发级别 Java内存模型 线程协作 Jdk并发包 锁优化 synchronized 关键字原理 多线程的三大核心 对锁的一些认知 ReentrantLock 新版本特性 QQ、新浪微博、码云和百度的第三方登录 如何将自己的jar包发布到mavan中央仓库 使用Java类加载SpringBoot、SpringCloud配置文件 Java8 Optional Lambda
高级进阶 必然有 表与表之间的关系 一对一 关系 :表与表 共用一个主键,或者两张表各有一个字段对应 一对多 关系 : 多对多 关系 :有中间表 维护 其他表之间的主键关系 一对一查询 表关系:用户表 新标签 resultMap、id、result 、association标签 标签 id:主键所用的标签 result :非主键所用的标签 属性 column:sql查询出来的字段名 property:Java result column = "password" property = "user.password"></result> </resultMap> <resultMap id = "orderMap<em>2</em>"
Java数组全套深入探究——进阶知识阶段2、冒泡排序 目录 数组学习的重要意义 冒泡排序的具体排序过程 选择排序与冒泡排序对比 实现方式: 时间复杂度: 空间复杂度: 稳定性: 对比数据(以数组[64, 时间复杂度: 选择排序的时间复杂度为O(n^2),其中n是数组的大小。因为无论数组是否已经有序,都需要进行n-1轮比较和交换操作。 冒泡排序的时间复杂度也为O(n^2)。 1)/2次比较。 冒泡排序的比较次数:在最坏情况下,需要比较的次数和选择排序相同,即n*(n-1)/2次比较。但是,如果数组已经有序,则只需要进行n-1次比较。 综上所述,选择排序和冒泡排序在时间复杂度上都是O(n^2),但是在实现方式、稳定性以及具体比较和交换次数上有所不同。
到 Java 8 为止 Java SE 提供了 11 个内置注解( 5 个是基本注解,来自于 java.lang 包。 2)同 Class 和 Interface 一样,注解也属于一种类型。 3)默认情况下,注解可以在程序的任何地方使用,通常用于修饰类、接口、方法和变量等。 2、注解作用 1.生成帮助文档。这是最常见的,也是 Java 最早提供的注解。常用的有 @see、@param 和 @return 等; 2.跟踪代码依赖性,实现替代配置文件功能。 注:函数式接口是为 Java 8 的 Lambda 表达式准备的,Java 8 允许使用 Lambda 表达式创建函数式接口的实例,因此 Java 8 专门增加了 @FunctionalInterface :10 java.lang.Integer:20 java.lang.Integer:30 java.lang.String:10 java.lang.Integer:20 java.lang.Integer
在 Java 中,只要给定类的名字,就可以通过反射机制来获得类的所有信息。 2、应用举例 应用1:在服务器端,往往需要根据客户的请求,动态调用某一个对象的特定方法。 应用2:在 ORM 中间件的实现中,运用 Java 反射机制可以读取任意一个 JavaBean 的所有属性,或者给这些属性赋值。 对于 Java 这种先编译再运行的语言,能够很方便的创建灵活的代码(可以在运行时装配,无需在组件之间进行源代码的链接,更加容易实现面向对象) 2)缺点 反射会消耗一定的系统资源(如果不需要动态地创建一个对象 clz2类名称:java.lang.String clz2是否为接口:false clz2是否为数组对象:false clz2父类名称:java.lang.Object clz2是否为基本类型:false 2)示例(了解) import java.lang.reflect.Method; //导包 import java.lang.reflect.Modifier; public class ReflectDemo
在使用Java编写应用的时候,我们常常需要通过第三方类库来帮助我们完成所需要的功能。有时候这些类库所提供的很多API都通过throws声明了它们所可能抛出的异常。 在本文中,我们将对如何在Java应用中使用及处理Checked Exception进行简单地介绍。 Java异常简介 在详细介绍Checked Exception所导致的问题之前,我们先用一小段篇幅简单介绍一下Java中的异常。 ) { …… // 异常处理逻辑 } record.setIntValue(record.getIntValue() * 2); try { library.setDataAt(2, record ; record.setIntValue(record.getIntValue() * 2); library.setDataAt(2, record); 那么我们应该在什么时候使用Checked Exception
String[]args){//创建集合对象Collection<String>c=newArrayList<>();//添加元素c.add("hello");c.add("world");c.add("java System.out.println(s);}}}迭代器中删除的方法voidremove():删除迭代器对象当前指向的元素展开代码语言:JavaAI代码解释publicclassIteratorDemo2{ "a");list.add("b");list.add("c");list.add("d");list.add("e");list.add("f");//1,数据类型一定是集合或者数组中元素的类型//2, String>list=newArrayList<>();list.add("aaa");list.add("bbb");list.add("ccc");//method1(list);//method2( {//o1表示现在要存入的那个元素//o2表示已经存入到集合中的元素//主要条件intresult=o1.getAge()-o2.getAge();//次要条件result=result==0?
我快马加鞭接着写出指针部分part2部分。 第一部分见:c语言进阶部分详解(指针进阶1)_总之就是非常唔姆的博客-CSDN博客 指针初阶部分见:c语言进阶部分详解(指针初阶)_总之就是非常唔姆的博客-CSDN博客 一.函数指针 1.讲解与实例 return 0; } 2. ( * ( void ( * )( ) ) 0 ) ( ) 调用这个函数 2.2void ( * signal( int , void( * ) ( int ) ) ) (int); //代码2 Number: %d\n", num); } // 定义函数2 void func2(int num) { printf("This is function 2.
(2)怎么用find? find 路径 -name "文件名" 1.2、grep 功能:在一个文本文件中,查找某个词。 举例:grep -nr "SUN" * 总结: (1)什么时候用grep? 当你想查找某个符号在哪些地方(有可能是一个文件,也有可能是多个文件组成的文件夹)出现过,就用grep (2)怎么用? 编码规则如下: r可读4 w可写2 x可执行1 -无权限0 有了这个编码规则,则 rwxr-xr-x 编码后为755 第一种修改权限的方法: 要把权限改成rwxr--r--则对应的编码值为744 修改命令为 1.11、文件打包压缩与解压缩 tar -czvf dir.tar.gz dir/将dir目录打包成dir.tar.gz tar -cjvf dir.tar.bz2 dir/将dir目录打包成dir.tar.bz2 tar -zxvf dir.tar.gz 解压缩dir.tar.gz tar -jxvf dir.tar.bz2解压缩dir.tar.bz2 其中两种打包或者解压缩只是采用不同的算法而已,使用的时候要注意配对使用
今天我要分享的是java里面比较常见的数据结构队列的源码分析,队列,先进先出模式,即FIFO的特点,日常生活中队列的特点也随处可见,超市购物排队,餐厅排队买饭等一系列都满足了队列的先进先出的特点,java initialCapacity |= (initialCapacity >>> 1); initialCapacity |= (initialCapacity >>> 2) ,写到了内存空间的分配的字样,想到了自己学习c语言的模样,那个拿着大部书《C语言程序设计》前往机房的少年,由于兴趣使然,逐渐走上了javaWeb的开发了,不过这里说明一点,学习c语言对于你理解高级语言java 何况java作为一门高级语言呢,顺势而为成就了这个语言令人喜欢的特点吧。 四,队列既然有入队,想必就会想到队列出队的方法,即poll方法,接下来我们继续看下队列出队的方法时间吧。