- 浏览: 101198 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
小小诺:
博主实例2中的代码博主难道没有测试吗?“工资总额不能超过6万元 ...
PLSQL -
emilyzhanghong:
我一般都用工具导入导出,语句记不住.
ORACLE 导入导出
一.常量与变量
1.概念:变量就是内存中的一个存储区域,它有自己的名称和类型。在这个区域中的数据,可以在同一类型范围内不断变化。其实变量就是用来存储某些常量的内存空间。
那么为什么要定义变量呢??
原因就是,它所存储的数据可以在同一类型范围内不断变化,进而可以重复利用。
定义变量的格式:
数据类型 变量名 = 初始化值
注:格式是固定的,记住格式,以不变应万变。
理解:变量就如同数学中的未知数。
2.数据类型
4类八种 1.byte的取值范围是-128到127,即-2的7次方,到2的7次方减1。
2.老师用了一个很容易记得例子来描述基本数据类型所占的字节:
一个字节就相当于一两饭,byte 能装一两饭(指占一个字节),short,char能装2两饭,int,float能装4两饭, long,double能装8两饭。
注意:1.一个中文也是2个字节,所以用char来存储中文,也是可以的。Char的取值范围是0到65535。
2. 一个float类型,必须对其存储的小数数据结尾处添加f标识。表示只取该小数的单精度。
3.类型转换
分为两种:一种是自动类型转换(隐式类型转换),另一种是强制类型转换(即显式类型转换)。
自动转换:所有short,byte,char,自动转换为int型。(整型默认的是int型)
小数默认的是double型。
1如果一个操作数是long型,计算结果就是long型;
2 如果一个操作数是float型,计算结果就是float型;
3 如果一个操作数是double型,计算结果就是double型。
注意: 不同数据类型之间是不可以直接进行运算的,
需要转换成同一个类型才可以进行运算。
数值类型因为都代表具体整数和小数,是可以转换的。
通常以占内存空间较大的类型为主,进行转换。
强制转换: x=2;
在需要被转换的数据前面,加上你想要的转换成的类型即可,如:byte b = (byte)(x + 4)
面试题:
class VarTest
{
public static void main(String[] args)
{
//byte b = 3;
//b = b + 1;//错了。因为1默认就是int类型,所以b+1时,b会自动类型提升为int类型。
//相加的结果还是int类型,所以赋给b装不下。
//b = (byte)(b+1);//一般做这样强制转换的不多。
// byte b3 = 2 + 7;//2和7都是常量,而且加完的结果也是一个常量,9在byte范围内,所以自动转换成byte类型。
byte b1 = 2;//其实2是int类型,在编译时,编译器会判断具体的常量值是否在byte类型范围内。
//如果在,会将其转成byte类型存储到byte的空间中。这个转换动作是自动的。
byte b2 = 7;
//byte b4 = b1 + b2;//错误,因为b1 b2的值是不确定的。所以默认都是用int存储的。
//因为加完的结果有可能超出byte范围,丢失精度。
char ch = 'a';
System.out.println((char)(ch+4));//98//ch和1运算,ch进行提升为int类型,因为字符都有对应的编码表中的数字
//所以ch提升为int后,就是97.因为字符a对应的数字就是97.
//String s = "abc";//定义一个字符串数据。
System.out.println("4+5="+4+5);//任何数据和字符串相加都是相连接。连接后,会变成一个新的字符串。
//"4+5="+4="4+5=4"+5 = "4+5=45"
/*
结论:
当右边的数据是常量值时,编译器会判断是否在左边的类型范围之内,如果在,会自动转换成左边的类型。
当右边的数据是变量时,编译器会使用默认的类型进行存储。如果左边的类型占用空间小于默认类型,
如果不做强制转换,会容易丢失精度。编译会失败。
*/
}
二. 运算符
1. 算术运算符
包括:+ - * / % ++ - -。
需要注意的问题:1.去模时,左边小于右边,结果是左边。 如:2%3 结果就是 2
左边等于右边,结果是零。 如:2%2 结果为0
2.运算中,只参考被模数(指左边的数)的正负号。如:-2%3= -2 ; 2%-3 = 2
3.++ -- 的一些问题 :
int a = 3,b;
//b = a++;//自增就是在变量原有数据的基础上+1,然后将+1后的结果赋值给该变量。
b = ++a;
/*
如果是 b= a++;a在前面,a先参与其他运算,比如将a的值赋值给b。然后a在自增,将a+1的结果赋值给a。
如果是 b= ++a;++在前面,先运算,将a+1的结果赋值给a。然后,a在参与其他运算,比如:将a的结果赋值给b。
如果a++;不参与其他运算,而是单独一条语句,++在前在后都一样。
*/
2. 赋值运算符
包括:= , +=, -=, *=, /=, %=
注意: =:将右边赋值给左边。
+=:将左右两边的和赋值给左边。
面试题:
short s = 5;
s = s + 2;
s+=2;
问:代码是否有问题? 这两句代码有什么区别?
答:区别一:第一句代码不能通过编译,第二句代码可以通过编译(因为赋值运算符,会做自动转换动作。)。
区别二:第一句的代码是两步运算,第二句的代码是一步运算。它相当于s=2,只不过呢,它是把左右两边的和赋值给的s。
3.比较运算符
包括:> < >= <= == !=
比较运算符运算的结果只有两种值:要么是true。要么是false。
4. 逻辑运算符
逻辑,可以理解为关系。
它包括:与:& 或:| 非:! 异或:^ 短路与 && 短路或 ||
它们的作用是:用于连接两个boolean类型的表达式。
& 和 && 的区别:
&:无论左边的结果是true还是false,右边都会被运算。
&&:当左边为false时,右边是不参与运算的。
简单说:
&:两边都执行。
&&,只有左边是false右边不执行,剩下的剩下情况都执行。
| 和 || 的区别:
|:无论左边的结果是true还是false,右边都会被运算。
||:当左边为true时,右边是不参与运算的。
简单说:
|:两边都执行。
||,只有左边是true右边不执行,剩下的剩下情况都执行。
5. 位运算符
它是专门用于操作二进制位的运算符。
左移:<< :左移就是乘以2的次幂。左移几位,就乘以2的几次幂。
右移:>> :右移就是除以2的次幂,右移几位,就除以2的几次幂。
注意:右移后,高位出现的空位,按照原来高位的值进行补位,如果原来最高位值是0,就用0补空位。
如果最高位是1,就用1补空位。
无符号右移:>>> : 右移后出现的空位,都用0补,不参考原来最高位的值。
~ 这个运算符,叫作反码。如:~6 = -7
注意:计算的时候,先转换为二进制,再进行运算。
如:6&3 即 110
& 011
010 它转化为十进制就是2
面试题:
问题是: 对两个整数变量的值进行互换(不需要第三方变量)
答案: int x = 3,y = 5;//要求置换后:x = 5,y = 3;
//这是利用了异或的特性。面试要答这个答案。 而开发时,要使用第三方变量的形式。
//因为异或这种形式,阅读性很差,而第三方变量容易阅读和理解。
x = x ^ y;//x = 3 ^ 5;
y = x ^ y;//y = (3 ^ 5) ^ 5 = 3;
x = x ^ y;//x = (3 ^ 5) ^ 3 = 5;
6. 三元运算符
格式是:(条件表达式)?表达式1:表达式二
三. 程序流程控制
1. 判断结构
包括:1.if(){ } 2.if() { } else 3. if(){} else if{} ……. Else
注意:三元运算符是if else的简写格式。
好处:简化书写。看起来更加简单明了。
弊端:只能是在if else执行完有具体数据结果时,才可以进行简写。
如:if(x > 2){ System.out.println(“ ok”);}
else
System.out.println(“no”); 这种就没有具体的数字结果,所以无法简写。
但是呢 int x=1 , y=3, z ;
If(y>x){ z = y;} else { z = x;} 这种的就可以简写,因为有数字结果。
简写就可以写成: z =(y > x)? y : x;
2. 选择结构
格式:
switch(表达式)
{
case 取值1:
执行语句;
break;
case 取值2:
执行语句;
break;
…...
default:
执行语句;
break;
}
特点:
1,和switch语句结束大括号相邻的break可以省略不写。写上也没问题。
2,switch语句的所有答案,没有固定的顺序。可以任意排放。但是执行时,肯定从第一个case执行。
3,switch语句结束,有两种方式。1,执行到break,2,执行到switch语句结束大括号。
4,被选择的值的类型是有限定的。只能接受byte short int char。四种类型的值。
5,当所有的case都没有匹配时,就会执行default语句。
switch特殊情况:
当匹配的case没有对应的break,那么switch语句会继续执行下面可以执行代码,不会在判断其他case。
将能执行的代码执行完,直到遇到break,或者执行到switch语句。
但是什么时候使用判断结构,什么时候使用选择结构呢???
f和switch的应用场景:
1,对几个值进行判断的时候,
可以用if,也可以用switch。但是建议使用switch。因为swtich效率稍高。
注意:switch有局限性,1,只能是固定个数的值,不能太多。2,类型有限定,只能是byte short int char。
2,对于数据区间的判断,使用if语句。
对于运算的结果是boolean类型的数据,也可以使用if语句。
相对而言,if较为常用。switch较为少用。
所以在JDK不断升级过程中,对switch也进行了升级。
JDK5.0. switch语句多一种支持的数据类型 enum.枚举。
JDK7.0 switch语句又多一种支持的数据类型 String 字符串类型。
四. 总结:
今天的很多东西,在以前已经学过,但是很多细节上的知识,我在以前是没学到的。今天我觉得收获最大的应该就是赋值运算了,如:a = a + 1; a += 1。它们的区别,以前没了解过,今天一听课,才恍然大悟。明天讲解循环,函数。数组。感觉学的东西越来越多,我还应该更努力的去学习才行。
师傅,今天没有问题呢, 。其实我也不想这么花哨的,但是为了以后复习看起来有针对性,我就不得不整成这样了,加颜色的部分,我是得侧重看的,以后要是工作了,我就不会这样弄了。其实花哨了也浪费了好多时间。唉。师傅,我睡觉去了,明天任务很重,后天我休息。我到时候把这3天的都再压缩总结一下。辛苦师傅啦!!嘿嘿。
发表评论
-
db2 with函数使用
2012-08-15 10:59 955WITH T1 AS( SELECT CGBT.SEGM ... -
db2 数据 对象备份
2012-07-28 17:03 732CREATE OR REPLACE FUNCTION RSPD ... -
Java_sokect 网络通信
2012-05-10 23:52 869客户端程序 package tcp; import j ... -
jdk下载以及Windows 安装
2011-12-29 20:13 1254http://www.oracle.com/technetwo ... -
JAVA基本功<8>_面向对象
2011-12-15 00:22 637一.面向对象的特点: ... -
JAVA基本功<7>_JDBC
2011-12-15 00:19 1007一、jdbc基本概念 jdbc : Java Database ... -
JAVA基本功<6>
2011-12-15 00:16 693一. 1. 循环结构 1. while 语句格式: ... -
JAVA基本功<4>
2011-12-15 00:09 6991:人机交互的方式: 一 ... -
J2SE基本功<3>
2011-09-27 15:35 652public class Test1 { public ... -
日期处理
2011-09-12 23:50 728http://changguangjuan.blog.163. ... -
泛型总结
2011-09-08 09:58 678package daan; /* 使用泛型类的限制和 ... -
J2SE基本功<2>
2011-09-07 09:06 576http://blog.csdn.net/java334452 ... -
J2SE基本功<1>
2011-08-16 22:55 583一、Java是一门高级语言,具有跨平台性(一次编译到处运行)1 ... -
IO文件读取
2011-08-01 08:51 646斯蒂芬 -
String数组的二分排序
2011-07-31 18:04 1425public class Bsearch { /* ... -
JAVA编程练手题
2011-07-04 23:48 27231:写一个方法(函数):判断一个单链表中是是否有环? 2:串行 ... -
代理模式
2011-06-16 09:54 574使用动态代理不需要为特定对象与方法编写特定的代理对象,可以 ... -
策略模式
2011-06-09 00:11 672策略模式:高内聚 低耦合 可扩展(OCP) 在策略与最终用 ... -
正则表达式
2011-05-30 15:13 618import java.util.regex.Matcher; ... -
JSP 连接MySQL数据库
2011-05-29 20:23 684<%@ page contentType="t ...
相关推荐
其中的一道试题: <br>面向对象程序设计以_(1)_为基本的逻辑构件,用_(2)__来描述具有共同特征的一组对象,以_(3)_为共享机制,共享类中的方法和数据。<br><br>(1) A.模块 B.对象 C.结构 D.类<br>(2) A.类型 B....
java基础试题,看看你的java基本功
java基本功面试专题 2W字详细资料,值得收藏
疯狂java:突破程序员基本功的16课(修订版)完整书签文字版
疯狂Java 突破程序员基本功16课1 完全清晰版 5分超低分 挥泪相送啦!这是第二部分 记得下第一部分哇!
疯狂Java 突破程序员基本功的16课PDF
疯狂Java:突破程序员基本功的16课2
突破程序员的java基本功代码
对于提升java程序员的基本功十分有帮助,让你深入理解java的内在。也可用于面试
《疯狂Java 突破程序员基本功的16课》PDF版本下载
疯狂Java:突破程序员基本功的16课.修订版。。
内容讲解的很详细,对java程序员有一个质的提升,欢迎大家下载
<5>FrAddreader.java 该文件是添加新读者界面的封装类,定义并设置了添加新读者界面相关组件及显示效 果,还定义了提交、返回按钮的事件监听。功能:点击提交按钮,对输入的信息进行验证 ,通过就写入数据库然后返回...
疯狂Java:突破程序员基本功的16课 ,增加对Java细节的学习理解和掌握,提高基本知识
疯狂Java 突破程序员基本功16课1 完全清晰版 5分超低分 挥泪相送啦!这是1 记得下第二部分哇!
Java基本功之中断线程的理解[参考].pdf
疯狂Java:突破程序员基本功的16课.修订版 疯狂Java:突破程序员基本功的16课.修订版.pdf
李刚 著 ISBN:9787115263049