如果您对Java学习笔记(四)Java语句优化和javajit优化感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解Java学习笔记(四)Java语句优化的各种细节,并对javajit优化进行深入
如果您对Java 学习笔记 (四) Java 语句优化和java jit优化感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解Java 学习笔记 (四) Java 语句优化的各种细节,并对java jit优化进行深入的分析,此外还有关于(Java 学习笔记) Java Threading (Java 线程)、Java 学习笔记 (一) If 语句、java 学习笔记 - if 语句、Switch 语句、Java 学习笔记 2.1.3 Java 基本语法 - Java 关键字与标识符的实用技巧。
本文目录一览:- Java 学习笔记 (四) Java 语句优化(java jit优化)
- (Java 学习笔记) Java Threading (Java 线程)
- Java 学习笔记 (一) If 语句
- java 学习笔记 - if 语句、Switch 语句
- Java 学习笔记 2.1.3 Java 基本语法 - Java 关键字与标识符
Java 学习笔记 (四) Java 语句优化(java jit优化)
这个问题是从headfirst java看到的。
需求:
一个移动电话用的java通讯簿管理系统,要求最有效率的内存使用方法.
下面两段程序的优缺点,哪个占用内存更少。
第一段:
1 Contact[]ca = new Contact[10];
2 while(x<10){
3 ca[x]=new Contact();
4 x=x+1;
5 }
6 //执行其余复杂工作
第二段:
1 Contact refc;
2 While(x<10){
3 refc = new Contact();
4 x=x+1;
5 }
6 //执行其余复杂的工作
书上的解答:
第二段有个重大缺陷.其所占用的内存是比较少,但是除了最后一个Contact对象外其它的都没办法存取. 因为从头到尾只有一个引用变量.此变量最后只能引用到最新建立出的对象.
(Java 学习笔记) Java Threading (Java 线程)
Java Threading (Java 线程)
● Process & Thread
Processes are the abstraction of running programs: A binary image, virtualized memory, various kernel resources, an associated security context, and so on.
Threads are the unit of execution in a process: A virtualized processor, a stack, and program state.
Threads are sometimes called lightweight processes. Both processes and threads provide an execution environment, but creating a new thread requires fewer resources than creating a new process.
Threads exist within a process — every process has at least one. Threads share the process''s resources, including memory and open files. This makes for efficient, but potentially problematic, communication.
Multithreaded execution is an essential feature of the Java platform. Every application has at least one thread — or several, if you count "system" threads that do things like memory management and signal handling. But from the application programmer''s point of view, you start with just one thread, called the main thread. This thread has the ability to create additional threads, as we''ll demonstrate in the next section.
●
● Processes
--Will by default not share memory
--Most file descriptors not shared
--Don''t share filesystem context
--Don''t share signal handling
● Threads
--Will by default share memory
--Will share file descriptors
--Will share filesystem context
--Will share signal handling
● Thread pool
Thread pool represents a group of worker threads that are waiting for the job and reuse many times,
● Thread life cycle & states
Java 学习笔记 (一) If 语句
接触到的教程中if语句所包含boolean表达式都是以数字作为举例,所以误以为string类型的值也可以这样判断,结果发现下面的脚本不工作:
1 String sysTitle = driver.getTitle();
2 String expectedTitle="DVA Demo";
3 if (sysTitle==expectedTitle) {
4 System.out.println(sysTitle);
5 }
要比较两个string, 应该用下面的方法:
1 String expectedTitle="DVA Demo";
2 String actualTitle=driver.getTitle();
3 If(actualTitle.equals(expectedTitle));{
4 System.out.println("Test Pass");
5 }
另外,碰到一个问题 ?
上述第二个例子中, if 后面boolean表达式后加了个分号,脚本是可以正常运行,没有问题的.
但是加上else语句后, 就会报错; 如果把if 后面boolean表达式所跟着的分号去掉,就不会报错.
1 //报错实例
2 if (sysTitle.equals(expectedTitle)); {
3 System.out.println(sysTitle);
4 } else {
5 System.out.println("Wrong Title");
6 }
7
8
9
10
11 //不报错实例
12 if (sysTitle.equals(expectedTitle)) {
13 System.out.println(sysTitle);
14 } else {
15 System.out.println("Wrong Title");
16 }
java 学习笔记 - if 语句、Switch 语句
条件语句
if、if...else、if...else if...else、嵌套的 if…else 语句
if(布尔表达式)
{
//如果布尔表达式为true将执行的语句
}
public class Select {
public static void main(String args[]){
int x=10;
if(x<20)
System.out.print("x<20");
}
}
结果
x<10
if(布尔表达式){
//如果布尔表达式的值为true
}else{
//如果布尔表达式的值为false
}
public class Select {
public static void main(String args[]){
int x=10;
if(x<10)
System.out.print("x<10");
else{
System.out.print("x>=10");
}
}
}
结果
x>=10
if(布尔表达式 1){
//如果布尔表达式 1的值为true执行代码
}else if(布尔表达式 2){
//如果布尔表达式 2的值为true执行代码
}else if(布尔表达式 3){
//如果布尔表达式 3的值为true执行代码
}else {
//如果以上布尔表达式都不为true执行代码
}
public class Select {
public static void main(String args[]){
int x=10;
if(x==5){
System.out.print("a");
}else if(x==9){
System.out.print("b");
}else if(x==10){
System.out.print("c");
}else{
System.out.print("x");
}
}
}
//嵌套
public class Select {
public static void main(String args[]){
int x = 30;
int y=10;
if(x==30){
if(y==10){
System.out.print("x=30 and y=10");
}
}
}
}
Java switch case 语句
case 满足条件语句后有 break; 则正常输出
若满足条件语句无 break; 则从满足条件后一直输出(直到有 break 止);
若无 break,所有 case 均不满足,则输出 default 语句;
switch case 语句语法格式如下:
switch(expression){
case value :
//语句
break; //可选
case value :
//语句
break; //可选
//你可以有任意数量的case语句
default : //可选
//语句
}
public class Swit {
public static void main(String args[]){
char grade=''C'';
switch(grade){
case ''A'':
System.out.print("优秀");
break;
case ''B'':
System.out.print("良好");
break;
case ''C'':
System.out.print("及格\n");
break;
default:
System.out.print("不及格\n");
}
System.out.print("等级:"+grade);
}
}
结果
及格
等级:C
Java 学习笔记 2.1.3 Java 基本语法 - Java 关键字与标识符
文章目录
- 零、本讲学习目标
- 一、Java 关键字
-
- (一)关键字概念
- (二)JDK8 关键字
- 二、Java 标识符
-
- (一)标识符定义
- (二)标识符构成规则
-
- 1、规则说明
- 2、案例演示
-
- (1)合法标识符示例
- (2)非法标识符示例
- (三)Java 标识符命名规范
-
- 1、简单说明
- 2、案例演示
- (四)编码规范:不要逆着规范做事
- 三、快捷操作
-
- (一)自动生成主方法框架
- (二)自动生成行输出语句框架
- (三)行复制 - Ctrl + D
- (四)行删除 - Ctrl + X
- (五)自动格式化代码 - Ctrl + Alt + L
- (六)IDEA 常用快捷键
- 四、课后作业
-
- 任务:输入与输出个人信息
-
- 1、规范声明变量
- 2、添加必要注释
- 3、程序运行效果
- 七、拓展阅读
-
- (一)学习路线
- (二)技术三阶段
- (三)对待新知识的态度
- (四)缘脑的应用
- (五)理解 — 记忆 — 练习
零、本讲学习目标
- 了解 Java 常用关键字
- 熟悉 Java 标识符构成规则
- 了解 Java 标识符命令规范
- 学会按照编程规范做事
一、Java 关键字
(一)关键字概念
关键字(Keyword)是编程语言里事先定义好并赋予了特殊含义的单词,也称作保留字(Reserved Word)。
(二)JDK8 关键字
- JDK 8 中有
50
个关键字,注意,这些关键字都是小写的。
1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|
abstract | assert | boolean | break | byte |
case | catch | char | class | const |
continue | default | do | double | else |
enum | extends | final | finally | float |
for | goto | if | implements | import |
instanceof | int | interface | long | native |
new | package | private | protected | public |
return | strictfp | short | static | super |
switch | synchronized | this | throw | throws |
transient | try | void | volatile | while |
- 大家看一看,哪些关键字在我们前面的学习中已经遇到过了?
二、Java 标识符
(一)标识符定义
- 在编程过程中,经常需要在程序中定义一些符号来标记一些名称,如包名、类名、方法名、参数名、变量名等,这些符号被称为标识符(identifier)。
(二)标识符构成规则
1、规则说明
- 标识符可以由任意顺序的大小写字母、数字、下划线(_)和美元符号($)组成,但标识符不能以数字开头,也不能是 Java 中的关键字。
构成 | 打头 | 避免 |
---|---|---|
字母、数字、_、$ | 不能以数字打头 | Java 关键字 |
- 说明:汉字也可以用作标识符,比如类名或变量名都可以用汉字,但是不建议大家这样做。
- 创建
c02.s01.p03
包,在包里创建购物程序
类
- 建议大家类名与变量名都用英文,在
c02.s01.p03
包里创建Shopping
类
2、案例演示
(1)合法标识符示例
age
nextLine
user123
test_01
_username
t$
- 在
c02.s01.p03
包里创建Example01
类
(2)非法标识符示例
123username // 数字打头
final // 使用关键字
user-name // 使用-字符
- 在
c02.s01.p03
包里创建Example02
类
(三)Java 标识符命名规范
1、简单说明
- 包名所有字母一律小写。例如:
net.hw.lesson03
。 - 类名和接口名每个单词的首字母都要大写。例如:
Map
接口、HashMap
类。 - 常量名所有字母都大写,单词之间用下划线连接。例如:
EXIT_ON_CLOSE
。 - 变量名和方法名的第一个单词首字母小写,从第二个单词开始每个单词首字母大写。例如:
nextLine
、getNextLine
。 - 在程序中,应该尽量使用有意义的英文单词来定义标识符,使得程序便于阅读。例如:使用
username
表示用户名,password
表示密码,age
表示年龄……。
2、案例演示
- 在
c02.s01.p03
包里创建Example03
类
- 说明:标识符命名规则(Naming Rules)是对错问题,而标识符命名规范(Naming Norms)是好坏问题。
(四)编码规范:不要逆着规范做事
-
新人动手编码前,必须先熟悉公司的规范,特别是编程规范。很多新人不喜欢这种条条框框的东西,觉得编程规范很烦人,总想自己发明创造,写出个性,彰显风格,其实这么做就大错特错了。
-
以谷歌为例。谷歌从创立以来就有着严格的编码规范,规定了很多细节性的东西,比如命名、注释、布局、格式等,每个语言都有对应的规范。举个简单的例子,谷歌对结尾命名有要求,通常,C++ 文件应以.cc 结尾,头文件应以 h。
-
类型名称要以大写字母开头,每个新单词都有一个大写字母,没有下划线,比如 My ExcitingClass。
-
变量(包括函数参数)和数据成员的名称均为小写,单词之间带有下划线。例如 a_local_variable。
-
类的数据成员(静态的和非静态的)都像普通的非成员变量一样命名,但是带有下划线。比如 std::string table_name_。
-
谷歌每一个工程师必须严格遵守上述规范,否则写出来的代码不可能通过代码评审(Code Review,实际工作中通常直接说成 review),更别提进入代码库了。
-
很多人可能觉得疑惑,为什么要规定得那么死呢?答案是:为了高效协作。一家公司有很多软件工程师,以及日益增长的代码库,如果大家遵循同一套规范,你会发现,代码库里的任何一行代码 —— 不管是你写的,还是身边的同事写的,甚至是一个跟你相差十几个时区的同事写的 —— 都有统一的结构、相同的命名规范…… 你只需要花很少的时间就能看懂,哪怕这个程序你不熟悉或完全没见过。这对提升团队效率的影响是巨大的。
-
其实不只是谷歌,国内外每家公司都有大量的团队协作场景,大家共同遵守规范是非常重要的。虽然没有完美的规则,但是一般来讲,公司制定的规范不会差到哪里去。作为新人,你在编码之前先熟悉这些规范,开发时严格遵守就好了,没必要逆着规范做事。
三、快捷操作
(一)自动生成主方法框架
- 输入
psvm
,敲回车即可生成主方法框架
- 其实,输入
main
,敲回车也可生成主方法框架,不信,你试一试~
(二)自动生成行输出语句框架
- 输入
sout
,敲回车即可生成行输出语句框架
(三)行复制 - Ctrl + D
- 按组合键
Ctrl
+D
可以实现行复制
(四)行删除 - Ctrl + X
- 按组合键
Ctrl
+X
可以实现行删除
(五)自动格式化代码 - Ctrl + Alt + L
- 菜单操作方式:Code | Reformat Code
- 组合键操作方式:Ctrl + Alt + L
(六)IDEA 常用快捷键
Alt+回车 导入包,自动修正
Ctrl+N 查找类
Ctrl+Shift+N 查找文件
Ctrl+Alt+L 格式化代码
Ctrl+Alt+O 优化导入的类和包
Alt+Insert 生成代码(如get、set方法、构造函数等)
Ctrl+E或者Alt+Shift+C 最近更改的代码
Ctrl+R 替换文本
Ctrl+F 查找文本
Ctrl+Shift+Space 自动补全代码
Ctrl+空格 代码提示
Ctrl+Alt+Space 类名或接口名提示
Ctrl+P 方法参数提示
Ctrl+Shift+Alt+N 查找类中的方法或变量
Alt+Shift+C 对比最近修改的代码
Shift+F6 重构-重命名
Ctrl+Shift+先上键
Ctrl+X 删除行
Ctrl+D 复制行
Ctrl+/ 或 Ctrl+Shift+/ 注释(// 或者/*...*/ )
Ctrl+J 自动代码
Ctrl+E 最近打开的文件
Ctrl+H 显示类结构图
Ctrl+Q 显示注释文档
Alt+F1 查找代码所在位置
Alt+1 快速打开或隐藏工程面板
Ctrl+Alt+ left/right 返回至上次浏览的位置
Alt+ left/right 切换代码视图
Alt+ Up/Down 在方法间快速移动定位
Ctrl+Shift+Up/Down 代码向上/下移动。
F2 或Shift+F2 高亮错误或警告快速定位
代码标签输入完成后,按Tab,生成代码。
选中文本,按Ctrl+Shift+F7 ,高亮显示所有该文本,按Esc高亮消失。
Ctrl+W 选中代码,连续按会有其他效果。
选中文本,按Alt+F3 ,逐个往下查找相同文本,并高亮显示。
Ctrl+Up/Down 光标跳转到第一行或最后一行下。
Ctrl+B 快速打开光标处的类或方法 。
四、课后作业
任务:输入与输出个人信息
- 大家可以参看案例
c02.s01.p01.Example01
,学会如何从键盘输入数据(数值型和字符串数据)。 - 从键盘输入个人信息(学号、姓名、年龄、专业、爱好、梦想)然后在控制台输出。
1、规范声明变量
String id;
String name;
String gender;
int age;
String major;
String hobbies;
String dream;
2、添加必要注释
- 学会给程序添加文档注释、多行注释和单行注释
3、程序运行效果
七、拓展阅读
(一)学习路线
- 程序员发展路线图
- 我们学习知识的路线:
技术
⟹ \Longrightarrow ⟹技术 + 管理
⟹ \Longrightarrow ⟹技术 + 管理 + 商业
- 随着阶段不一样,我们学习的知识也有所不同。刚开始我们只做开发,只需要学习技术知识就行了;后面我们做到了管理职位,不仅要懂技术还要学习管理知识;然后我们想要成为 CTO、CEO 或小老板,这必须要学习一些商业知识才行。
(二)技术三阶段
- 实现 ⟹ \Longrightarrow ⟹借鉴 ⟹ \Longrightarrow ⟹优化
(三)对待新知识的态度
-
我们要去接触新知识,尤其是开发者。每年都会有新技术出现,也许过几年你现在用的技术就落后了。我的建议是不管什么时候都要不断地学习。
-
关于接触新知识的态度,我是这样看的:
-
不要觉得对自己没有用,要看对社会有没有价值,如果有社会价值,就是一个好的新事物,学习它以后会给你带来商业价值。
-
不要觉得和以前知道的东西一样,要和以前知道的东西做比较。
-
不要觉得没有足够的时间去学习,你可以先了解,了解一样东西最多花 1 个小时时间。如果实在没时间学习,你可以先了解,等到需要用时再仔细学习。
(四)缘脑的应用
-
我们明白缘脑的原理后,不仅可以用到学习上面,还可以用到与人沟通、讲课等方面。
-
我们在与人沟通时怎样打消对方的防备心?你需要先用一两句话说清楚沟通的大概内容和沟通的目的,让对方的缘脑对你后面要说的事情有个大概的了解,到具体详说的时候,便可减少缘脑的阻碍,从而降低对方的防备心。
-
讲课也是一样,讲课时如果先说服了学生的缘脑,然后再讲具体内容,学生听着会更容易接受。听我讲过课的同学都知道我有个习惯,我在讲课的 PPT 上总会有一个目录页,在目录页给大家说清楚我要讲哪几大部分,各部分的关系是什么,也会说说新学的知识与以前学过的知识的关联,这都是在说服大家的缘脑,让大家不要对下面讲的新知识太排斥。
-
其实,缘脑的原理可以用到生活中的方方面面,大家自己还可以再想想能用到哪儿。
(五)理解 — 记忆 — 练习
-
做好说服缘脑的工作,知识顺畅地进入了我们的大脑,下一步要对知识进行加工处理。
-
我们要明白理解不等于记忆,记忆也不等于掌握。我们上学的时候,经常会觉得课堂上老师讲的时候好像都懂、都能理解,但是到第二天可能就忘记了前一天老师上课讲的内容,可见理解了不等于记忆了。即使记忆了也不等于就掌握这个知识了,就像开车,把开车的步骤要领都记住了,但是不实际去练习开车,其实自己还是不会。所以,我们要真正掌握一个知识,需要理解→记忆→练习。
本文同步分享在 博客 “howard2005”(CSDN)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与 “OSC 源创计划”,欢迎正在阅读的你也加入,一起分享。
今天关于Java 学习笔记 (四) Java 语句优化和java jit优化的讲解已经结束,谢谢您的阅读,如果想了解更多关于(Java 学习笔记) Java Threading (Java 线程)、Java 学习笔记 (一) If 语句、java 学习笔记 - if 语句、Switch 语句、Java 学习笔记 2.1.3 Java 基本语法 - Java 关键字与标识符的相关知识,请在本站搜索。
本文标签: