茄子回顾Java,从零开始!(Java基础 一)

Java基础

1、JDK是什么?JRE是什么?JDK和JRE的区别?

JRE:Java Runtime Environment ,Java虚拟机、库函数、运行Java应用程序和Applet所必须文件
JDK:Java Development Kit:JRE的超集,包含编译器和调试器等用于程序开发的文件

Java运行环境的三项主要功能:

  • 加载代码 :由class loader 完成
  • 校验代码 :由bytecode verifier 完成
  • 执行代码 :由 runtime interpreter完成

2、HelloWorld

编译:利用编译器(javac)将源程序编译成字节码文件,文件名:源文件名.class,
javac命令编译HelloWorld.java文件为HelloWorld.class文件,
运行:利用虚拟机(解释器,java)解释执行class字节码文件。java命令

3、标识符(不能是关键字)

  • 标识符可以由字母、数字、下划线(_)、美元符($)组成,但不能包含 @、%、空格等其它特殊字符,不能以数字开头。譬如:111stu 就是不合法。
  • 标识符不能是 Java关键字和保留字(Java预留的关键字,以后的升级版本中有可能作为关键字),但可以包含关键字和保留字。如:不可以使用 void 作为标识符,但是 Stuvoid 可以。
  • 标识符是严格区分大小写的。并且没有长度限制的。 一定要分清楚 Student和 student是两个不同的标识符!

4、数据类型

数据类型.jpg
数据类型对应位数.jpeg

5、基本数据类型转换

自动类型转换:容量小的数据类型可以自动转换为容量大的数据类型。
强制转换:显示转换,丢失精度

6、String、StringBuffer、StringBuilder

String是引用类型。可以用String str= new String("abc");的形式来创建,也可以用String str ="abc";的形式来创建

String str = "abc"创建对象的过程
1 首先在常量池中查找是否存在内容为"abc"的字符串对象
2 如果不存在则在常量池中创建一个"abc"的字符串对象,并让str引用 该对象
3 如果存在则直接让str引用该对象

String str = new String("abc")创建对象的过程
1首先定义一个str的String类型的引用并存放在栈中
2在字符串常量池中查看是否存在内容为"abc"字符串对象
3若存在则跳过这个步骤,若不存在,则在字符串常量池中创建一个内容为"abc"的字符串对象
4执行new操作,在堆中创建一个指定的对象"abc",这里堆的对象是字符串常量池“abc”对象的一个拷贝对象
5让str指向堆中“abc”这个对象(也就是存储这个对象的在堆中的地址)

常用操作:

  • (1) 字符串的连接
    public String concat(String str)
    该方法的参数为一个String类对象,作用是将参数中的字符串str连接到原来字符串的后面.
  • (2)求字符串的长度
    public int length()
    返回字串的长度,这里的长度指的是字符串中Unicode字符的数目.
  • (3)求字符串中某一位置的字符
    public char charAt(char ndex)
    该方法在一个特定的位置索引一个字符串,以得到字符串中指定位置的字符.值得注意的是,在字符串中第一个字符的索引是0,第二个字符的索引是1,依次类推,最后一个字符的索引是length()-1.
  • (4)字符串的比较
    比较字符串可以利用String类提供的下列方法:
    public boolean equals(Object anObject)
    该方法比较两个字符串,和Character类提供的equals方法相似,因为它们都是重载Object类的方法.该方法比较当前字符串和参数字符串,在两个字符串相等的时候返回true,否则返回false.
  • (5)从字符串中提取子串
    public String substring(int beginIndex)
    该方法从beginIndex位置起,从当前字符串中取出剩余的字符作为一个新的字符串返回.
  • (6) 字符串中单个字符的查找
    字符串中单个字符的查找可以利用String类提供的下列方法:
    public int indexOf(int ch)
    该方法用于查找当前字符串中某一个特定字符ch出现的位置.该方法从头向后查找,如果在字符串中找到字符ch,则返回字符ch在字符串中第一次出现的位置;如果在整个字符串中没有找到字符ch,则返回-1.
  • (7) 字符串中多余空格的去除
    public String trim()
    该方法只是去掉开头和结尾的空格,并返回得到的新字符串.值得注意的是,在原来字符串中间的空格并不去掉.

运行速度:StringBuilder > StringBuffer > String
StringBuilder:非线程安全,StringBuffer:线程安全

因为,String为字符串常量,而StringBuilder和StringBuffer均为字符串变量,即String对象一旦创建之后该对象是不可更改的,但后两者的对象是变量,是可以更改的。
首先创建一个String对象str,并把“abc”赋值给str,然后在第三行中,其实JVM又创建了一个新的对象也名为str,然后再把原来的str的值和“de”加起来再赋值给新的str,而原来的str就会被JVM的垃圾回收机制(GC)给回收掉了,所以,str实际上并没有被更改,也就是前面说的String对象一旦创建之后就不可更改了。所以,Java中对String对象进行的操作实际上是一个不断创建新的对象并且将旧的对象回收的一个过程,所以执行速度很慢。
而StringBuilder和StringBuffer的对象是变量,对变量进行操作就是直接对该对象进行更改,而不进行创建和回收的操作,所以速度要比String快很多。

7、变量(对应于常量 static final)

局部变量:方法或语句块内部定义的变量。生命周期是从声明位置开始 到”}”为止。在使用前必须先声明和初始化(赋初值)
成员变量(实例变量):方法外部、类的内部定义的变量。从属于对象,生命周期伴随对象始终,隶属于类。如果不自行初始化,他会自动初始化成该类型的默认初始值(数值型变量初始化成0或0.0,字符型变量的初始化值是16位的0,布尔型默认是false)
静态变量(类变量):使用static定义。 从属于类,生命周期伴随类始终,从类加载到卸载。如果不自行初始化,他会自动初始化成该类型的默认初始值(数值型变量初始化成0或0.0,字符型变量的初始化值是16位的0,布尔型默认是false)

成员变量在堆内存中,由于对象的存在,才在内存中存在;
局部变量在栈内存中;
局部变量必须初始化,否则不能运行;
成员变量有默认初始化值,因此可以不初始化;
当成员变量和局部变量名称一致时,默认使用局部变量

8、运算符

  • 算数运算符
  • 自增自减运算符
  • 关系运算符
  • 位运算符
  • 逻辑运算符
  • 赋值运算符
  • 三目运算符
  • instanceof运算符

9、代码结构

选择结构:
if else
switch case
switch 语句中的变量类型可以是: byte、short、int 、char。
从 Java SE 7 开始,switch 支持字符串类型了,同时 case 标签必须为字符串常量或字面量。

循环结构:
while 循环
do…while 循环
for 循环
增强for 循环
增强for循环有些缺点,
例如不能在增强循环里动态的删除集合内容,不能获取下标等

  • (1)对于非集合类(没有实现 Iterable接口)的数组遍历,增强型for循环和普通循环遍历原理相同,效率相同
  • (2)对于集合类(实现了Iterable接口),增强型for循环的遍历其本质就是迭代器 iterator的遍历,和普通循环遍历相比,各自有自己适用的场景,比如说普通for循环比较适合List类(数组类)遍历通过下标查找数据的,而增强型for循环则比较适合链表结构的集合的遍历。

10、数组

数组声明
int a[];
int[] a;

数组初始化
静态初始化:
int a[]={1,2,3,4};
动态初始化:
int a[]=new int[5]; 创建一个长度为5的int 数组。

数组遍历
可以使用普通for循环或者foreach循环遍历数组。

  • 数组是对象类型,声明数组时注意new的使用;
  • 声明数组时一定要考虑数组的最大容量,数组一旦被声明了,大小就固定了,不能修改容量。
  • java 支持多为数组,使用比较少。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,837评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,551评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,417评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,448评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,524评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,554评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,569评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,316评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,766评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,077评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,240评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,912评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,560评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,176评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,425评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,114评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,114评论 2 352

推荐阅读更多精彩内容

  • 一、Java 简介 Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计...
    子非鱼_t_阅读 4,175评论 1 44
  • 前言 最先接触编程的知识是在大学里面,大学里面学了一些基础的知识,c语言,java语言,单片机的汇编语言等;大学毕...
    oceanfive阅读 3,055评论 0 7
  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,145评论 0 13
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,612评论 18 399
  • 如果牵手真的那么难 就不会轻易说分开 如果幸福会来的很慢 至少你会一直都在 如果不把爱想的太满 就不会有些许挫败 ...
    范小希的单曲阅读 234评论 0 0