java快速复习 一 基础语法
最近看很多算法书,比较不错的有不少都是java语言描述,所以用一天时间快速研究并整理java ,参考资料:java入门经典
Call this file "Example2.java".
class Example2 {
public static void main(String args[]) {
int a; //声明变量
a = 100; //赋值
if(a = 100) print(a); // if(condition) statement;
int x ;
char y = 'x';
byte z = 22;
int d = 3, e, f = 5;
for(x = 0; x<10; x = x+1) // for(initialization; condition; iteration) statement;
System.out.println("This is x: " + x);
}
}
java文件名和类名要相同,运行Java解释器实际上是指定你想要解释器运行的类的名字,它会自动搜索包含该名字且带有.class扩展名的文件。如果找到,它将运行含在该指定类中的代码。
所有的Java应用程序都通过调用main( )开始执行。关键字public是一个访问说明符(access specifier),它允许程序员控制类成员的可见性。如果一个类成员前面有public,则说明该成员能够被声明它的类之外的代码访问(与public相对的是private,它禁止成员被所属类之外的代码访问)。在本例中,main( )必须被定义为public类型因为当程序开始执行时它需要被它的类之外的代码调用。
关键字static允许调用main( )而不必先实现该类的一个特殊实例
关键字void仅通知编译器main()不返回任何值
Java是区分大小写的。
即使一个方法不需要参数,你仍然需要在方法名后面放置一对空括号。main( )仅是解释器开始工作的地方。一个复杂的程序可能包含几十个类,但这些类仅需要一个main( )方法以供解释器开始工作。
java 数据类型
整数:该组包括字节型(byte),短整型(short),整型(int),长整型(long),
它们有符号整数。
浮点型数:该组包括浮点型(float),双精度型(double),它们代表有小数精度
要求的数字。
字符:这个组包括字符型(char),它代表字符集的符号,例如字母和数字。
布尔型:这个组包括布尔型(boolean),它是一种特殊的类型,表示真/假值。
在Java中,字符串实际上是对象类型。因为Java对字符串是作为对象实现的,因此,它有广泛的字符串处理能力,而且功能既强又好用。
变量作用域和生存期
大多数其他计算机语言定义了两大类作用域:全局和局部。在JAVA中不适用。
程序块被包括在一对大括号中。一个程序块定义了一个作用域(scope)。这样,你每次开始一个新块,你就创建了一个新的作用域。你可能从先前的编程经验知道,一个作用域决定了哪些对象对程序的其他部分是可见的,它也决定了这些对象的生存期。
方法定义的作用域以它的左大括号开始。但是,如果该方法有参数,那么它们也被包括在该方法的作用域中。 if for 这些都是方法。
作为一个通用规则,在一个作用域中定义的变量对于该作用域外的程序是不可见。
作用域可以进行嵌套。例如每次当你创建一个程序块,你就创建了一个新的嵌套的作用域。这样,外面的作用域包含内部的作用域。这意味着外部作用域定义的对象对于内部作用域中的程序是可见的
变量在其作用域内被创建,离开其作用域时被撤消。
如果一个声明定义包括一个初始化,那么每次进入声明它的程序块时,该变量都要被重新初始化
类型转换
下列2个条件都能满足将一种类型的数据赋给另外一种类型变量时,将执行自动类型转换
这2种类型是兼容的。
目的类型数的范围比来源类型大
例如,int型的范围比所有byte型的合法范围大,因此不要求显式强制类型转换语句
对于拓宽转换,数字类型,包括整数(integer)和浮点(floating-point)类型都是彼此兼容的
数字类型和字符类型(char)或布尔类型(bollean)是不兼容的
不兼容类型的强制转换
int a;
byte b;
// ...
b = (byte) a;
当把浮点值赋给整数类型时一种不同的类型转换发生了:截断(truncation)。你知道整数没有小数部分。这样,当把浮点值赋给整数类型时,它的小数部分会被舍去
class Conversion {
public static void main(String args[]) {
byte b;
int i = 257;
double d = 323.142;
System.out.println("\nConversion of int to byte.");
b = (byte) i;
System.out.println("i and b " + i + " " + b);
System.out.println("\nConversion of double to int.");
i = (int) d;
System.out.println("d and i " + d + " " + i);
System.out.println("\nConversion of double to byte.");
b = (byte) d;
System.out.println("d and b " + d + " " + b);
}
}
表达式中类型的自动提升
byte a = 40;
byte b = 50;
byte c = 100;
int d = a * b / c; //中间项结果a*b很容易超过它的任何一个byte型操作数的范围。为处理这种问题,当分
析表达式时,Java自动提升各个byte型或short型的操作数到int型。这意味着子表达式a*b使
用整数而不是字节型来执行
自动类型提升的问题
byte b = 50;
b = b * 2; // Error! Cannot assign an int to a byte!
该程序试图将一个完全合法的byte型的值50*2再存储给一个byte型的变量。但是当表达
式求值的时候,操作数被自动地提升为int型,计算结果也被提升为int型。这样,表达式的
结果现在是int型,不强制转换它就不能被赋为byte型 byte b = 50;
b = (byte)(b * 2); //正解
类型提升一直以最高级的类型为目标提升。
数组
声明数组
int month_days[]; //type var-name[ ];
声明并初始化为0
month_days = new int[12]; //array-var = new type[size];
赋值
month_days[0] = 31;
month_days[1] = 28;
声明并初始化
int month_days[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31,30, 31 };
二维数组
int twoD[][] = new int[4][5];
第二种声明形式以下两种等价
int al[] = new int[3];
int[] a2 = new int[3];
Java不支持或不允许指针因为这样做将允许Javaapplet(小应用程序)突破Java运行环境和主机之间的防火墙 后面说解决方案。
运算符
+ - * / % ++ += -= *= /= %= --
关系运算符
== != > < >= <=
逻辑运算符 & | ^ || && ! &= |= ^= == != ?:
注意java有三元运算
expression1 ? expression2 : expression3
ratio = denom == 0 ? 0 : num / denom;
if(condition)
statement;
else if(condition)
statement;
else if(condition)
statement;
else
statement;
switch (expression) {
case value1:
// statement sequence
break;
case value2:
// statement sequence
break;
.
.
.
case valueN:
// statement sequence
break;
default:
// default statement sequence
}
表达式expression必须为byte,short,int或char类型。每个case语句后的值value必须是与表达式类型兼容的特定的一个常量(它必须为一个常量,而不是变量)。重复的case值是不允许的
switch可以嵌套
三种循环
while(condition) {
// body of loop
}
do {
// body of loop
} while (condition);
for(initialization; condition; iteration) {
// body
}
Java允许你在for循环的初始化部分和反复部分声明多个变量,每个变量之间用逗号分开。
for(a=1, b=4; a<b; a++, b--) {}
break,continue和return 都支持
java快速复习 一 基础语法的更多相关文章
- Java学习笔记之---基础语法
Java学习笔记之---基础语法 一. Java中的命名规范 (一)包名 由多个单词组成时,所有字母小写(例如:onetwo) (二)类名和接口 由多个单词组成时,所有单词首字母大写(例如:OneTw ...
- JavaScript快速入门-ECMAScript基础语法
一.JavaScript引入方式 1.行内式 <script> alert(123); </script> 2.外链式 <script src='custom.js'&g ...
- JAVA企业级开发-xml基础语法&约束&解析(04)
一.什么是xml html:超文本标记语言.它主要是用来封装页面上要显示的数据,最后通过浏览器来解析html文件,然后把数据展示在浏览器上.同样我们可以使用JS和DOM技术对html文件进行解析和操作 ...
- java学习笔记之基础语法(一)
1.java语言基础由关键字.标识符.注释.常量和变量.运算符.语句.函数和数组等组成. 2.1关键字 定义:被java语言赋予了特殊含义的单词 特点:关键字中所有的字母都是小写. 2.2用于定义数据 ...
- Java连载47-多态基础语法、作用
一.多态的语法 1.两个类之间没有继承关系的,使用多态是不能编译的. 2.无论向上还是向上转型,都需要有继承关系. 3.什么时候需要向下转型? 当调用的方法或者属性是子类型特有的,在父类型中不存在,就 ...
- Java入门笔记 01-Java基础语法
一.数据类型和运算符 1.注释可以提高程序的可读性.可划分为 单行注释 // 多行注释 /.../ 文档注释 /**...*/ 2.标识符的命名规则: 标识符必须以字母.下划线_.美元符号$开头. 标 ...
- JAVA预科:Markdown基础语法
JAVA预科:Markdown语法 什么是Markdown?Markdown是一种轻量级的「标记语言」,通常为程序员群体所用,目前它已是全球最大的技术分享网站 GitHub 和技术问答网站 Stack ...
- Scala - 快速学习03 - 基础语法
1- 变量 变量 mutable variable 在程序运行过程中其值可能发生改变的量 关键词var定义变量,定义时直接进行求值 常量 immutable variable 在程序运行过程中其值不会 ...
- java与C#的基础语法区别--持续更新
1.判断字符串是否相等 java : equals()比较的是对象的内容(区分字母的大小写格式),但是如果使用“==”比较两个对象时,比较的是两个对象的内存地址,所以不相等.即使它们内容相等,但是不同 ...
随机推荐
- NOIP2018提高组初赛游记
AH省的,好像水军多,走的都比较早(莫非是真·大佬!!) 本人考了71,较去年退步了.(去年还考80多的来着) 题目坑.. 第一.二大题选择 第三题年份,看了试卷标题,第二十二届,算出来后没有这个选项 ...
- 百万年薪python之路 -- 并发编程之 多线程 三
1. 阻塞,非阻塞,同步,异步 进程运行的三个状态: 运行,就绪,阻塞. 从执行的角度: 阻塞: 进程运行时,遇到IO了,进程挂起,CPU被切走. 非阻塞: 进程没有遇到IO 当进程遇到IO, ...
- MySQL GROUP_CONCAT()函数 -- 字段合并查询
在做查询的时候遇到一个问题,今天分享一下解决方法. 先看一下我想要什么效果. 清单名称类型要点,后面两列为清单步骤(外键表) 但我并不想让主表的内容重复那么多遍,于是 distinct去重.子查询.左 ...
- Android应用程序版本升级时签名冲突
这种错误特别容易在调试中出现,原因是你手机上的应用是直接用eclipse或者android studio安装的,而eclipse或者android studio有自己默认的签名:**debug.key ...
- leetcode系列---Two Sum C#code
/// <summary> /// 方法一:双循环 /// </summary> /// <param name="array"></pa ...
- Unity5-ABSystem(四):AssetBundle依赖
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/lodypig/article/detai ...
- app消息推送
Mui + 个推 实现消息推送 1.首先去个推 注册一个账号,新建一个消息推送应用 2.配置Mui配置文件 3.使用HBuilder 打包 app 4.然后在到个推后台 发送数据 后台Java代码(官 ...
- Java HashSet对txt文本内容去重(统计小说用过的字或字数)
Java HashSet对txt文本内容去重(统计小说用过的字或字数) 基本思路: 1.字节流读需要去重的txt文本.(展示demo为当前workspace下名为utf-8.txt的文本) 2.对读取 ...
- [考试反思]1101csp-s模拟测试97:人品
上来粘6个图皮一下.(以后粘排行榜是不是都应该粘两份啊...文件出入的确挺难受的) 话说最近RP为什么会这么高啊???我干什么好事了???不知道. 这次考试的题挺有水准的,但是我的分数挺没水准的. T ...
- P4568 [JLOI2011]飞行路线(分层图)
机房dalao推荐写的...(标签分层图) 经过前几题的分层图的洗礼,我深刻地体会到了分层图的优点和好处(主要是不想打dp....) 先说题吧.... 很明确,模型是最短路,但是,怎么跑k个,是个问题 ...