Thank in Java
Think in Java
2.一切都是对象
2.1 引用操作对象
- Java 中一切都是对象,因此可以采用单一固定得语法。
- 操作对象得标识符实际上是对对象得一个 “引用”reference“。例如 遥控器 (引用)来 操纵电视(对象)
- 即使没有电视剧 , 遥控器 也可独立存在
- 创建引用的同时便进行初始化 String s = "abcd"
- 创建了引用 让它与一个新的对象相关联。 new "给我一个对象" String s = new String("abcd");
2.2.存储到什么地方
- 5 个地方可以存储数据
- 寄存器:最快的存储区, 处理器内部 不能直接控制,根据需求分配
- 堆栈:RAM中 (随机访问存储器)中,堆栈指针 可以从处理器哪里获得直接指出,向下移动分配新内存,向上移动,释放内存。仅次于寄存器 。Java系统必须知道存储再堆栈内所有项的确切生命周期,以便上下移动堆栈指针。这一约束限制了程序的灵活性,所以虽然某些 Java 数据存储再堆栈中,特别是 对象的引用 ,Java对象不存储其中
- 堆: 通用的内存地址 RAM区中 编译器不需要知道存储的数据再堆里存活了多长时间。 new一个对象 的时候,会自动再堆里进行存储分配。但是:用堆进行存储分配和清理可能比用堆栈需要更长的时间
- 常量存储: ROM只读存储器 常量值通常直接存放在程序代码内部,这样做是安全的,永远不会改变。
- 非RAM存储:如果数据完全存活于程序之外,那么它可以不受程序控制,在程序没有运行时也可以存在。流对象和持久化对象
2.3 基本类型
基本类型占存储空间的不变性,比大多数语言编写程序更具有移植性的原因

数组:
当创建了一个数组对象时,实际上是创建了一个 引用数组,并且每个引用都会被自动被初始化为一个特定的值, Null,当Java看到Null ,就知道这个引用还没有指向某个对象。在使用任何引用前 ,需要为其指定对象。如果使用是 还是 Null,Java会报错。 存放基本类型的数组,初始化为 0.
2.4 永远不要销毁对象
变量生命周期的概念,占据了程序设计工作中非常重要的部分。变量存活多久?如何销毁?什么时候销毁?什么周期混乱 会引起大量的程序Bug。Java 替我们完成了所有的清理工作。
2.4.1 作用域
- 大多数过程型语言都有作用域(scope)的概念。
- Java 由new创建的对象 ,只要你需要 就 一直存在
- Java有垃圾回收机制,监视 new 创建的所有对象,并辨别那些不会再被引用的对象。随后,释放这些对象的内存空间。(不必担心内存回收问题,你只要创建对象,一旦你不需要,自行消失 )
2.4.2 类
Java 中你所做的全部工作就是定义类,产生哪些类的对象,以及发送消息给这些对象
- class 创建 一个 类
- new 一个对象
- 类中的元素
- 字段 (数据成员)
- 方法 (成员函数)
- Java中方法只能作为类的一部分来创建。方法只有通过对象才能调用,且这个对象必须能执行这个方法调用。
- 你想使用 程序里面预先定义好的类 Import
2.4.3 static 关键字
static 字段对每个类来说都只有一份存储空间,非static字段则是对每个对象有一个存储空间,这一点对main 方法很重要 ,程序的入口
重要用法:
声明一个事物是static就意味这这个域或者方法不会包含它的那个类的任何对象实例管理在一起
未创建某个类的任何对象,也可以调用static方法,访问其static域
class StaticTest{
static int i = 47;
}
StaticTest st1 = new StaticTest();
调用方法:
- st1.i
- StaticTest.i ++
调用静态方法和调用静态变量相似
2.4.4 第一个 Java程序
Java最强大的优势就是,他又庞大的标准类库
// 打印日期
System.out.println(new Data());
传递的参数 是一个 Data对象,一旦创建它之后,就可以直接将它的值(自动转换为String类型)发送给println().当这条语句被执行完毕之后,Data对象就不再被使用,而垃圾回收器会发现这一情况,并再任意时候将其回收。
2.4.5 Javadoc
提取注释工具 /** */ 只能为 public 和 protected 成员进行文档注释。因为 public 和 protected 能再文件之外被使用。 private 可以用 -privateb标记
标签
- @see 引用其他类文档
- @link 超连接文本
- @docRoot 文件树页面的显示超链接
- @inheritDoc 从基类中继承相关的文档到当前类中
- @version 格式如下 @version version-information 提取版本信息
- @author author - information 提取作者信息
- @since 此类支持的JDK版本
- @param 方法文档中
- @return 方法文档中
2.5 编码风格
类名 驼峰原则
课后题
public class 练习1 {
static int i;
static char c;
public static void main(String[] args) {
System.out.println("int = " +i);
System.out.println("char = " + c);
}
}
===============================
int = 0
char =
class StaticTest{
static int i = 47;
}
class Incrementable{
static void increment(){
StaticTest.i++;
}
}
public class 练习8 {
public static void main(String[] args) {
System.out.println("StaticTest.i = "+StaticTest.i);
StaticTest st1 = new StaticTest();
StaticTest st2 = new StaticTest();
System.out.println("st1.i="+st1.i);
System.out.println("st1.i="+st2.i);
// i+1
Incrementable.increment();
System.out.println("StaticTest.i = "+StaticTest.i);
System.out.println("st1.i="+st1.i);
System.out.println("st1.i="+st2.i);
//st1.i = 3
st1.i = 3;
System.out.println("StaticTest.i = "+StaticTest.i);
System.out.println("st1.i="+st1.i);
System.out.println("st1.i="+st2.i);
StaticTest st3 = new StaticTest();
System.out.println("st3.i="+st3.i);
}
}
============================
StaticTest.i = 47
st1.i=47
st1.i=47
StaticTest.i = 48
st1.i=48
st1.i=48
StaticTest.i = 3
st1.i=3
st1.i=3
st3.i=3
Process finished with exit code 0
第九题
在java语言中,有一种自动包装机制,它的主要作用是用于将基本类自动转换成与基本类对应的包装类,以便将基本类可以应用于容器中,而不用程序手动建立包装类,使编程过程更加简单,还可以减少错误。
基本类型和包装器类型对应表:
基本类型 包装类型
boolean Boolean
char Character
byte Byte
short Short
int Integer
long Long
float Float
double Double
void Void
public class 练习9 {
public static void main(String[] args) {
boolean a = false;
Boolean A = a;
System.out.println(a);
System.out.println(A);
int b = 1;
Integer B = b;
System.out.println(b);
System.out.println(B);
}
}
========================================
false
false
1
1
public class 练习10 {
public static void main(String[] args) {
System.out.println("args[0] = " + args[0]);
System.out.println("args[1] = " + args[1]);
System.out.println("args[2] = " + args[2]);
}
}
Thank in Java的更多相关文章
- Spark案例分析
一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...
- 故障重现(内存篇2),JAVA内存不足导致频繁回收和swap引起的性能问题
背景起因: 记起以前的另一次也是关于内存的调优分享下 有个系统平时运行非常稳定运行(没经历过大并发考验),然而在一次活动后,人数并发一上来后,系统开始卡. 我按经验开始调优,在每个关键步骤的加入如 ...
- Elasticsearch之java的基本操作一
摘要 接触ElasticSearch已经有一段了.在这期间,遇到很多问题,但在最后自己的不断探索下解决了这些问题.看到网上或多或少的都有一些介绍ElasticSearch相关知识的文档,但个人觉得 ...
- 论:开发者信仰之“天下IT是一家“(Java .NET篇)
比尔盖茨公认的IT界领军人物,打造了辉煌一时的PC时代. 2008年,史蒂夫鲍尔默接替了盖茨的工作,成为微软公司的总裁. 2013年他与微软做了最后的道别. 2013年以后,我才真正看到了微软的变化. ...
- 故障重现, JAVA进程内存不够时突然挂掉模拟
背景,服务器上的一个JAVA服务进程突然挂掉,查看产生了崩溃日志,如下: # Set larger code cache with -XX:ReservedCodeCacheSize= # This ...
- 死磕内存篇 --- JAVA进程和linux内存间的大小关系
运行个JAVA 用sleep去hold住 package org.hjb.test; public class TestOnly { public static void main(String[] ...
- 【小程序分享篇 一 】开发了个JAVA小程序, 用于清除内存卡或者U盘里的垃圾文件非常有用
有一种场景, 手机内存卡空间被用光了,但又不知道哪个文件占用了太大,一个个文件夹去找又太麻烦,所以我开发了个小程序把手机所有文件(包括路径下所有层次子文件夹下的文件)进行一个排序,这样你就可以找出哪个 ...
- Java多线程基础学习(二)
9. 线程安全/共享变量——同步 当多个线程用到同一个变量时,在修改值时存在同时修改的可能性,而此时该变量只能被赋值一次.这就会导致出现“线程安全”问题,这个被多个线程共用的变量称之为“共享变量”. ...
- Java多线程基础学习(一)
1. 创建线程 1.1 通过构造函数:public Thread(Runnable target, String name){} 或:public Thread(Runnable target ...
- c#与java的区别
经常有人问这种问题,用了些时间java之后,发现这俩玩意除了一小部分壳子长的还有能稍微凑合上,基本上没什么相似之处,可以说也就是马甲层面上的相似吧,还是比较短的马甲... 一般C#多用于业务系统的开发 ...
随机推荐
- 4.5万字手把手教你实现MySQL TB级数据存储!!
写在前面 业界对系统的高可用有着基本的要求,简单的说,这些要求可以总结为如下所示. 系统架构中不存在单点问题. 可以最大限度的保障服务的可用性. 一般情况下系统的高可用可以用几个9来评估.所谓的几个9 ...
- 分贝单位的本质(下半篇),dBm、dBFS、dBV的妙处你想象不到
上半篇讲到了声音分贝的概念, 对于声音的单位:dB SPL和dB SIL,有兴趣了解并推算的朋友,可以点击以下链接(PC端效果更佳) http://www.sengpielaudio.com/calc ...
- JAVA开发手册-Markdown
前言 前 言 <Java 开发手册>是技术团队的集体智慧结晶和经验总结,经历了多次大规模一线实战的检验及不断完善.现代软件行业的高速发展对开发者的综合素质要求越来越高,因为不仅是编程知识点 ...
- Docker学习笔记之进入容器Bash
我们在创建容器的时候,如果容器的命令(command)不是/bin/bash的时候,使用docker attach命令是会卡住进不去容器的bash shell的.如下图所示: 所以,这里记录一个可以进 ...
- MySQL 使用MD5对数据进行加密
数据库MD5加密 -- ================ 测试 MD5 加密 ============== CREATE TABLE `testmd5`( id INT(11) NOT NULL AU ...
- nginx日志详细说明
Nginx日志主要分为两种:访问日志和错误日志.日志开关在Nginx配置文件(/etc/nginx/nginx.conf)中设置,两种日志都可以选择性关闭,默认都是打开的. 访问日志 访问日志主要记录 ...
- SAP ERP中权限参数和角色相关表
SAP版本:S/4 HANA 1809
- 小白的经典CNN复现(二):LeNet-5
小白的经典CNN复现(二):LeNet-5 各位看官大人久等啦!我胡汉三又回来辣(不是 最近因为到期末考试周,再加上老板临时给安排了个任务,其实LeNet-5的复现工作早都搞定了,结果没时间写这个博客 ...
- 【图像处理】RGB Bayer Color分析
Bayer色彩滤波阵列 拜耳色彩滤波阵列(Bayer Color Filter Array,CFA)是非常有名的彩色图片的数字采集格式.色彩滤波器的模式如上图所示,由一半的G,1/4的R,1/4的B组 ...
- Kafka分区分配策略(Partition Assignment Strategy)
众所周知,Apache Kafka是基于生产者和消费者模型作为开源的分布式发布订阅消息系统(当然,目前Kafka定位于an open-source distributed event streamin ...