首页 技术 正文
技术 2022年11月9日
0 收藏 412 点赞 5,064 浏览 3567 个字

最近看很多算法书,比较不错的有不少都是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 都支持

微信扫一扫

支付宝扫一扫

本文网址:https://www.zhankr.net/37302.html

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:875 阅读:5,071
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:806 阅读:3,505
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:565 阅读:4,316
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:730 阅读:4,311
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:4,911
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:3,099
发表评论
暂无评论

还没有评论呢,快来抢沙发~

助力内容变现

将您的收入提升到一个新的水平

点击联系客服

在线时间:8:00-16:00

客服电话

400-888-8888

客服邮箱

ceotheme@ceo.com

扫描二维码

关注微信公众号

扫描二维码

手机访问本站