Java学习——String

    String:字符串,
    1.声明为final,不能被继承
    2.实现Serializable接口,支持序列化
      实现Comparable接口,可以比较大小
    3.内部定义了final char[] value用于存储字符串数据
    4.String代表不可变的字符序列,称 不可变·性

    5.通过字面量的方式(区别于new给一个 字符串赋值,此时的字符串值声明在字符串常量池中)。
    6.字符串常量池中是不会存储相同内容字符串的。

 

public class StringTest{

	public static void main(String[] args) {
		String s1 = "abc";
		String s2 = "abc";
		// s1 = "hello";
		System.out.println(s1 == s2);
		System.out.println("s1="+s1);
		System.out.println("s2="+s2);	
	}
}

 

    /*
        String,的实例化方式:
            方式一:通过字面量定义的方式
            方式二:通过new +构造器的方式

     */

        String s4 = new String("abc");
        String s5 = new String("abc");
        System.out.println(s4 == s5);

答案是false.

4.2代码举例
String s1 = "javaEE" ;
String s2 = "hadoop";
String s3 = "javaEEhadoop" ;
String s4 = "javaEE" + "hadoop";
String s5 = s1 + "hadoop" ;
String s6 = "javaEE" + s2;
String s7 = s1 + s2;
System.out. println(s3 == s4);//true
System. out. println(s3 == s5);//false
System. out.println(s3 == s6);//false
System. out. println(s3 == s7);//false 
System. out. println(s5 == s6);//false 
System. out.println(s5 == s7);//false 
System. out.println(s6 == s7);//false 
String s8 = s6. interln();//返回值得到的s8使用的常量值中已经存在的"javaEEhadoop”
System.out. println(s3 == s8);//true
String s1 = "javaEEhadoop";
String s2 = "javaEE" ;
String s3 = s2 + "hadoop";
System. out. println(s1 == s3);//false
final String s4 = "javaEE";//s4: 常量
String s5 = s4 + "hadoop";
System. out. printlnqs1 == s5);//true

 String、StringBuffer. StringBuilder 三者的异同?
String:不可变的字符序列;底层使用char[]存储
StringBuffer:可变的字符序列:线程安全的,效率低:底层使用char[]存储
StringBuitder:可变的字符序列; jdk1.5新增的,线程不安全的,效率高;底层使用char[]存储

//问题1. System. out. printin{sb2. length());//3|
//问题2.扩容问题:如果要添如的数据底层数组盛不下了,那就需要扩容底层的数组,默认情况下,并容为原来容量的2倍+ 2,同时将原有数组中的元素复制到新的数组中。
指导意义:开发中建议大家使用: StringBuffer(int capacity) 或StringBuilder(int capacity)

计算当前的时间:System. currentTimeMillis( );
对比String、StringBuffer. StringBuilder三者的效率:
从高到低排列: StringBuilder > StringBuffer > String

1. java.lang.System类
System类提供的public static long currentTimeMillis()用来返回当前时间与1970年1月日0时0分0秒之间以毫秒为单位的时间差。单位:ms。//时间戳
➢此方法适于计算时间差。

●计算世界时间的主要标准有:
➢UTC(Coordinated Universal Time)
➢GMT(Greenwich Mean Time)
➢CST(Central Standard Time)
 

2.java.util.Date类

java.sql.Date

(1)两个构造器的使用(2)两个方法的使用

//构造器一:创建一个对应当前时间的Date对象
Date date1 = new Date(); //java.util.Date

System.out.println(date1. toString());//Sat Feb 16r16:35:31 GMT+08:00 2019
long l = date1. getTime();
System.out.println(l);//1550306204104

//构造器二:
Date date2 = new Date(l) ;
System. out . print1n(date2. toString());

//如何将java. util. Date.对象转换为java. sqL . Date对象(除了多态)

//情况一:
Date date4 = new java.sqL.Date(2343243242323L);
java.sqL.Date date5 = (java.sqL.Date) date4;
//情况二:
Date date6 = new Date();
java.sql.Date date7 = new java.sqL.Date(date6.getTime());

7. JVM中字符串常量池存放位置说明:
jdk 1.6 (jdk 6.0 ,java 6.0):字符串常量池存储在方法区(永久区)
jdk1.7:字符串常量池存储在堆空间
jdk 1.8:字符串常量池存储在方法区(元空间)

需要看源码的java类

1、数据结构相关的类,如String、ArrayList,LinkedList,HashMap和ConcurrentHashMap等等。
2、线程并发相关的类,如Synchronized、ReentrantLock、ReadWriteLock、AQS和线程池的实现等 

utils包 还有 spring源码

docker基础(镜像、容器、常用命令、官方帮助文档查看方式)
docker安装与使用
搭建docker私有仓库
docker swarm集群搭建
docker compose部署脚本
docker service服务编排
docker stack分布式集群部署
docker容器管理可视化工具
. maven插件打包docker镜像
. docker部署运行java程序
docker应用:搭建ELK
docker应用:搭建RabbitMQ、MySql等寻常软件
docker+微服务,实现动态扩容

===================================
. K8S容器编排设计架构
.核心理念介绍
搭建K8S环境
通过K8S调度Docker运行
核心概念详解之Pod、Nodes、Service
搭建K8S多台服务器集群
使用K8S部署SpringBoot程序集群
使用K8S实现负载均衡

================================

▲掌握Spring设计思想;官方文档阅读技巧;源码学习方式
▲核心组件遂个突破,I0C注入原理、事务实现机制、MVC/AOP内部原理
▲WebFlux和Servlet的区别;通过常用的Spring拓展接口来实现特殊需求
▲理解Spring源码中的设计模式;带你写出一个框架:手写SpringlOC+MVC
=============================================================

▲Mybatis整体架构设计思路、底层源码剖析(参数、结果绑定, SqlSession、缓存机制)
▲实战阶段:掌握Mybatis插件开发;拓展自定义类型Type;手写Mybatis框架

===============================================================

▲四大神器之-: Springboot 核心思想“约定优于配置”,Starter机制快速开发功能
▲AutoConfigure自动化配置;带你写自己的Starter+自动配置组件
▲基于Actuator的分布式系统监控解决方案;拓展自定义的监控类型
▲通过SpringBoot-CL进行构建启动,7行代码完成一一个Web程序

=============================================================
▲SpringCloud接口调用机制原理分析、构建高可用的微服务、统- -网关接口设计
▲Eureka/Ribbon/Feign/Hystrix/Zuul源码解读

================================================================

▲JVM整体结构剖析
▲JAVA程序是怎么在JVM中运行的
▲全面掌握JVM是怎么管理内存的
▲详解垃圾回收机制(GC)那些事
▲调整HotSpot JVM参数跑的更快
▲内存泄漏问题实战解决
===================================================

▲学会避免JAVA低性能代码写法
▲JavaWeb程序的运行原理
▲从容器原理分析到手写Tomcat
▲设计压力测试,发现程序性能瓶颈
▲Tomcat性能调优实战
▲高性能Web程序设计方法论
================================================================

▲百分之80性能问题是数据库瓶颈
▲数据库性能问题90%的原因,是因为SQL语句没有优化
▲数据库存储引擎之间的异同分析
▲通过索引如何让Sql执行的更快
▲SQL语句执行计划分析性能问题点
▲互联网系统开发数据库SQL规范
================================================================

▲JAVA线程状态、线程池、线程通信...线程安全(锁/CAS/happens before..)
JDK源码剖析(AQS/Lock/Map/Future..j
▲详解NIO在文件、TCP/UDP网络处理上的优势
▲Netty高性能原理,线程模型、责任链模式、零拷贝

=================================================================

▲Activemq、rabbitmq、 kafka 消息中间件介绍,及高并发场景下的应用
▲压榨出Nginx负载均衡的极致性能,详解BAT是如何通过Lua定制化Nginx
▲使用Linux内核提供的LVS实现高性能的负载均衡
▲通过Keepalived实现系统不宕机

=================================================================

分布式系统接口调用技术: RPC详解
▲深入分析Apache顶级项目Zookeeper及在分布式系统中的应用
▲搞懂阿里Dubbo设计思想及源码套读
▲深度学习:带你手写Dubbo RPC框架
▲Dubbo扩展及分布式事务处理问题
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值