- 浏览: 1589862 次
- 来自: 上海
文章分类
- 全部博客 (374)
- Java (101)
- Struts (54)
- Oracle (30)
- JavaScript (16)
- Spring (27)
- Hibernate (16)
- MyEclipse (3)
- JSF (1)
- FreeMarker (2)
- SiteMesh (2)
- JfreeChart (2)
- Ibatis (2)
- JSP (12)
- MyBatis (4)
- SWFupload (1)
- EJB (4)
- Jboss (4)
- WebService (2)
- Linux (16)
- Android (2)
- XML (6)
- Java 网络编程 (13)
- AXIS2 (1)
- FTP (1)
- Jswing (1)
- Socket (3)
- 杂文选集 (6)
- solr (2)
- PS (1)
- Tomcat (7)
- JDBC (9)
- Highcharts (1)
- maven (1)
- Nodejs (0)
- navicat (2)
- Exception (5)
- eclipse (3)
- jQuery (1)
- springMVC (4)
- MySQL (11)
- SVN (1)
- Sql Server (1)
- zookeeper (1)
- JVM (1)
- Groovy (2)
- Git (1)
- Nginx (1)
- DynamicReport (1)
- IDEA (2)
- JasperReports (1)
- Postgresql (2)
- Mac (1)
- gradle (1)
- 数据结构算法 (1)
最新评论
-
hpu145:
引用引用
java 千分位的添加和去除 -
被遗忘的下路:
少了个junit-4.8.2的包
SSH2整合完整案例(四十三) -
白天看黑夜:
java过滤emoji字符处理,希望能帮到你http://ww ...
emoji 表情图片解决方法 -
caipeiming:
这个挺好JavaScript实现input输入框控件只允许输入 ...
js 控制文本框只能输入中文、英文、数字等 -
双子树:
东西太好啦受教啊
Struts2 JSP中将list,set ,Map传递到Action然后<s:iterator>遍历(三十五)
java的语言的基础组成
常量
变量
数据类型
类型转换
运算符
代码1
赋值运算符
比较运算符 只可能是 true 和false
逻辑运算符
位运算符号
//异或 ^
// ~ 取反
位移运算的巧用 求一个数的16进制位数
注意下使用 >>> 才对 不是 >>
流程控制语句
if 和三元运算符 的比较
switch的使用
switch 在 5.0 的时候 增加了对枚举类型的判断
在 7.0 的时候增加了对字符串类型的判断
1.关键字: 被java赋予了特殊意义的单词 2.标识符: 类名 函数 26个字母 0-9 _ $ ,不能数字开头 不使用关键字 包名: 全小写 类名 接口名: XxxYxxZzzz 所有单词首字母大写 变量和函数名: xxxYyyZzzz: 第一个单词首字母小写,其余单词首字母大写 常量名: XXX_YYY_ZZZ 所有字母都大写.多单词每个单词用"_" 连接 3.注释 : 单行, 多行, 文档 , 不能嵌套注释 4.常量和变量: 5.运算符 6.语句 7.函数 8.数组
常量
整数的表示方式 十进制:0-9, 八进制 0-7 用0 开头, 十六进制:0-9 A-F 用0x开头, 二进制 1 和0 小数点 布尔类型常量 字符常量 字符串常量 null常量 1.一个字节用 8个二进制位 表示 8个开关 表示 2.8进制是 3个二进制表示一位 (3个二进制的最大数是 7) 3.16进制是 4个二进制表示一位 (4个二进制的最大数是 15) 4.8为的二进制的最大值 就是 255 ,可以想到 IP地址中 最大数就是 255,说明ip使用字节表示的 . Interge.toBinaryString(-6); \\java中将二进制 转换成 十进制的方法 Interge.toBinaryString(6);
变量
变量:就是将不确定数据进行存储,也就在内存中开辟一个存储空间. 有明确的数据类型, 变量名, 数据 来完成
数据类型
数据类型: 基本数据类型 引用数据类型 基本数据类型 : 数值型 整数类型byte(8位二进制-128~127) short(16二进制32767) int(32位二进制65535) long(64位二进制) 浮点类型(float(32位进制),double (64二进制) 字符型 char (0-32767) 16位 布尔型 boolean 引用数据类型 : 类 class 接口 interface 数组 []
类型转换
1.自动类型提升,将两个不同类型数值运算 提升为同一种类型 然后再进行运算. 2.强制类型转换,有风险,可能会损失精度. 一般用于保留整数部分 3.float和int进行运算的时候 结果为 float 类型
运算符
1.算术运算符 : + - * / % ++ -- 2.赋值运算符 3.比较运算符 4.逻辑运算符 5.位运算符 6.三元运算符
代码1
//注意整型元算时候 小数点后面的都会舍弃 public static void main(String [] args){ int x=4272; x=x/1000*1000; //4270/1000=4.27-->int x=4 -->*1000--->int x=4000 System.out.println(x); // 4000 } 取模 左边小于右边 结果 为左边 左边=右边 结果 为 0 右边为 1 结果 为 0 出现 负数 只看 左边 1 % -5 结果 为 1 -1 % 5 结果 为 -1 public static void main(String[] args){ int a=3,b; b=a++; ---> b=3 a=4 b=++a; ---> b=a=4 // ++ 在前 先加 // ++ 在后 后加 System.out.println("5+5="+5+5); // 5+5=55 (不是五十五) 是 五五 System.out.println("5+5="+(5+5)); // 5+5=10 } 转义字符 \
转移字符:通过 \ 来转变后面字符或者符号的意义
\n: 换行
\b:退格 相当于 backspace
\r:按下回车键.window系统中回车符是由连个字符来表示\r\n 在linux DOS下面是使用 \r 表示
\t: 制表符.相当于tab键
System.out.println("hello \n world");
System.out.println("\"hello\"");
System.out.println("\\hello\\");
赋值运算符
public static void main(String[] args) { // += -= *= /= %= 前面都是一个运算符 不是两个运算符 int x=3; x+=4; ==> x=x+4; short s=4; s=s+5; // 先将 x自动类型提升 为 int 然后 =5 等于 9 然后 int 9 赋值给 short s 丢失精度 编译失败 ,需要强制类型转换 s+=5; //编译通过 会自动完成强制类型转换 所以就通过了. int a,b,c; a=b=c=5; //编译通过 }
比较运算符 只可能是 true 和false
// != > < >= <= == instanceof public static void main(String[] args) { System.out.println("hello" instanceof String); }
逻辑运算符
& and | or ^ 异或 ! not 非 && and (短路) || or (短路) public static void main(String[] args) { //短路 案例 int x=4; System.out.println(x>4 && x++<5); System.out.println(x); // 4 System.out.println(x>4 & x++<5); System.out.println(x); //5 /* & && 和 | || & : 无论左边 是true 还是 false 右边都运算 && : 当左边为false时, 右边不运算 | : 两边都运算 || : 左边为false 的时候 , 右边不运算 */ /* & 与 true & true =true; true & false = false false & true = false false & false =false 只要有一个false 结果就是false 两边都为 true 的时候 才为 true */ /* | 或 true | true =true true | false =true false | true =true false | false =false 只要有个 true 结果为 true 都为 false 的时候就为 false */ /* ^ 异或 true ^ true =false true ^ false =true false ^ true =true false ^ false= true 两边结果相同 为 false 两边结果不同 为 true */ /* ! !true =false; !!true=true; !!!true=true; */ }
位运算符号
// <<左移动 >>右移 >>>无符号右移 &与 |或 ^异或 ~反码 3<<2 二进制 11 1100 ==> 12 6>>2 ==> 6/ 2*2=1 110 1 = 1 6>>1=3 ==> 6/ 2=3 3<<2 =12 3<<3=24 3*2*2=12 3*2*2*2 =24 左移动 << 就是 * 2的n位次幂 右边 补 0 右移动 >> 就是 / 2 的n位次幂 移动后 高位 补什么由原高位值定 >> 移动后 高位 补什么由原高位值定 >>> 不管 是负数还是正数 高位 都用 0 补 // &: 与 6 & 3= 2 110 0 是假 1 是真 & 011 ----- 010 ==> 假真假 ==>2 // |: 或 6 | 5 =7 110 | 101 ------- 111 ==>真真真 ==> 7
//异或 ^
// ^ 异或 6 ^ 5 == 3 110 0 假 1 真 ^ 101 ------- 011 ==> 假真真 ==> 3 异或: 一个数 异或一个数两次 结果还是 那个数.
// ~ 取反
// ~ 反码 规律 N = -N-1 一个数取反 = 这个数的相反数 -1 ~6 = -7 0000... 0110 ~ 1111... 1001 -->取反 -7 0000.....0001 -->减1 1111.....1000 0000.....0111 --> 取反 ==>7 -6 == 6的二进制取反 + 1 ==> 6的取反 = -6 -1 =-7 A = B + C ==> B = A-C ~ 9 来试试 是不是 = -9 -1 =-10 0000 .... 1001 取反 1111 .....0110 A:一个负数不好算 就算他的正数取反数B 所以减一 - 0000 .... 0001 ------------------- 1111 .... 0101 B的取反 去掉反 ==> B 0000 .....1010 B=10 ===> A=-10 =10取反+1
问题1. 2 乘以 8 的最有效运算 就是 2<<3 =2*2(3)= 2*8=16 问题2: 两个数的 互换 public static void main(String [] args){ int n=3,m=8; 方法一: 使用中间变量 temp 方法二: 两个数比较大的时候 容易丢失精度 n=n+m; m=n-m; n=n-m; 方法三: 技巧性方式没有丢失精度 n=n^m; m=n^m; // (n^m)^m = n n=n^m; // (n^m)(n^m)^m = m }
位移运算的巧用 求一个数的16进制位数
注意下使用 >>> 才对 不是 >>
流程控制语句
1.判断结构 2.选择结构 3.循环结构
if 和三元运算符 的比较
public static void main(String [] args0){ int a=3; if(a>2) System.out.println("a"); if(a>3) System.out.println("b"); int x=2,b; b=(x>3)? 100:200; b=(x>1)? System.out.println("a"):200; 这样就不行 /* if esle 的简写格式为: 变量= (条件表达式) ? 表达式1: 表达式2; 三元运算符: 好处: 可以简化if else 代码 qu 弊端: 因为是一个运算符,所以运算完后必须有一个结果. */ }
switch的使用
switch 在 5.0 的时候 增加了对枚举类型的判断
在 7.0 的时候增加了对字符串类型的判断
public static void main(String[] args){ int x=3; switch(x){ //byte short int char default: //default 总是最后执行的 ,如果 default没有break 下面都不会判断 System.out.println("d"); // 4 case 2: System.out.println("a"); // 1 判断 5 不判断 case 4: System.out.println("b"); // 2 判断 6 不判断 --> 跳出 break; case 6: System.out.println("c"); // 3 判断 break; //结果 d a b } switch(x){ case 3: case 4: case 5: System.out.println("春季"); case 6: case 7: case 8: System.out.println("夏季"); case 9: case 10 case 11: System.out.println("秋季"); case 12: case 1: case 2: System.out.println("冬季"); default: System.out.println("you are so best!"); } /* if 和switch 很像 具体什么场景下,应用那个语句呢? 如果判断的具体数值不多,而是符合 byte short int char 这四种类型 虽然 两个语句都可以使用, 建议使用switch 语句 ,因为 效率稍高 其他情况,对区间判断,对结果为 boolean 类型判断 ,使用 if ,if使用范围更广 */ }
发表评论
-
检测一个字符串是否在jvm的常量池中
2018-12-18 17:34 997public static boolean inPool( ... -
UTC时间, GMT时间 ,夏令时
2017-08-18 15:12 2281经常混淆于此,特地研究了一下,记录在此以备忘。 整个地 ... -
java 反射List
2017-02-18 01:58 5654package com.enhance.reflect; ... -
JDK1.5 Exchange 两个线程互换数据
2016-08-04 18:00 986import java.util.concurrent ... -
JDK1.5 CountDownLatch
2016-08-04 16:25 1055/* * 还有一个利用场景: ... -
java CyclicBarrier 循环障碍阻塞
2016-08-03 23:54 1008//一个同步辅助类,它允许一组线程互相等待,直到到达某个公 ... -
java 信号灯 Semaphore
2016-08-03 23:53 1823更多介绍http://blog.csdn.net/java20 ... -
java 使用读写锁设计一个缓存模型
2016-08-03 23:49 1416import java.util.HashMap; ... -
java 读写锁
2016-08-03 23:46 814import java.util.Random; i ... -
java 多个线程之间同步通信
2016-08-02 17:16 2396import java.util.concurrent ... -
jdk1.5 锁 Lock 和 Condition
2016-08-02 17:03 925// lock 练习 public class Lock ... -
JDK1.5 获取线程执行结果 Callable Future
2016-08-02 15:08 1172import java.util.Random; i ... -
JDK1.5 线程池
2016-08-02 14:48 801import java.util.concurrent ... -
java 多线程ThreadLocal
2016-08-02 00:13 1145import java.util.Random; ... -
java 定时器 Timer
2016-08-01 16:53 3892import java.util.Calendar; ... -
java 多线程同步+通信
2016-08-01 16:48 964/** *父子线程 交替打印10 次, 100次 ... -
java 线程同步
2016-08-01 16:43 1021import java.util.concurrent.l ... -
java多线程练习
2016-08-01 16:35 1840Java 传统多线程 Java 多线程同步 Java 多线 ... -
java 传统多线程
2016-08-01 16:34 1004/** * 传统多线程 */ public ... -
java 图片,剪切,缩放
2016-01-06 10:21 2230package out; import ja ...
相关推荐
《Java2 编程21天自学通》是一本针对初学者设计的Java编程教程,旨在帮助读者在21天内快速掌握Java2的核心概念和技术。这个教程可能包含多个章节,涵盖从基础语法到高级特性的全面讲解。下面将详细阐述Java2编程中的...
### JAVA入门教程21天学通JAVA2第三版——关键知识点解析 #### 一、JAVA入门书籍推荐 - **《Java语言》**:适合初学者,全面覆盖Java基础语法及面向对象的基本概念。 - **《Thinking in Java》**:虽然内容深入且...
java2 21天自学通 中文版 pdf
21天学通JAVA2(第三版
2. 动态性和安全性:Java支持动态编译和运行,增强了软件的灵活性和安全性。它的内存管理和异常处理机制为开发者提供了更安全的编程环境。 3. 网络应用:Java在网络应用上的潜力得到了充分展现,如Java Applets和...
Java 2编程21天学自学通是一本旨在引导初学者在21天内掌握Java编程基础的自学教材。本书涵盖了从入门到进阶的全方位Java知识,旨在帮助读者建立起坚实的编程基础,以便进一步深入Java世界。以下是根据书名和描述所...
2. **基本语法**:学习Java的基础语法,包括数据类型(如整型、浮点型、字符型和布尔型)、变量、常量、运算符、流程控制(如if条件语句、for和while循环)、以及方法的定义和调用。 3. **类与对象**:Java是面向...
Java编程语言以其强大的功能、跨平台的特性以及丰富的开源库,成为了全球软件开发者的首选工具之一。对于初学者来说,掌握Java技术可以打开许多职业发展机会。"Java100天速成"是一个专为新手设计的学习计划,旨在...
《Java 2 编程21天自学通》是一本旨在帮助初学者在短时间内掌握Java编程语言的教程。"pdg"标签可能指的是该压缩包包含的文件格式,这种格式通常用于电子书或文档,而这里可能是教程的章节或者部分内容。尽管具体的...
【标题】"java视频教程_黑马Java零基础辅导班[第一期]第2天课件源码" 提供的是一个针对初学者的Java编程教学资源,由知名教育机构"黑马"提供,旨在帮助完全没有Java背景的学员快速入门。课程内容可能是以视频的形式...
这不仅是一场快速学习的挑战,也是一个深度理解Java编程基础的全面之旅。通过本课程,学员将从零开始,逐步建立起扎实的Java编程基础,为未来在软件开发领域的发展打下坚实的基础。 第一天:Java简介与环境配置 1. ...
Java的发展历程部分提到了Java之父:詹姆斯高斯林(James Gosling)。他开发的Java语言因为其“一次编写,到处运行”的特性,极大地推动了编程语言的发展。JDK(Java Development Kit)的发展历史也成为了Java学习者...
2. **JAVA语法基础**:了解JAVA的基础语法,包括数据类型(如整型、浮点型、字符型、布尔型)、变量、常量、运算符、流程控制语句(如if、for、while、switch)以及数组的使用。 3. **面向对象编程**:理解类、对象...
本文将深入探讨一位经验丰富的Java程序员如何利用Swing库在两天内开发出一款连连看游戏,并分享其背后的技术细节。 连连看,这个深受各年龄层喜爱的小游戏,其实现原理并不复杂,主要涉及图形界面设计、事件处理和...
在本项目中,我们主要探讨的是如何利用Java技术来实现对天地图的矢量和影像瓦片的下载、叠加以及图片融合功能。这个基于SpringBoot和Maven的项目提供了便捷的方式来处理这些地理空间数据。 首先,我们要理解"天地图...
第五篇为框架技术篇,介绍了Struts 2、Hibernate、Spring这三个目前非常流行的轻量级Java Web开发框架。第六篇为项目实战篇,通过整合前面的三个框架,开发一套用户管理系统。 《21天学通Java Web开发》适合Java Web...
### Java入门教程:9天快速入门JAVA #### 第一章:Java概述 ##### §1.1 Java语言出现的背景、影响及应用前景 **一、背景** Java 的诞生源自 SUN MicroSystems 公司的一项名为 Oak 的项目。1991 年,该项目由 ...
Java学习100天速成课件是一份全面的教程,旨在帮助初学者或有一定基础的开发者在短时间内深入理解Java SE(标准版)的核心概念和技术。这份课件涵盖了多个关键领域,包括线程(Thread)、输入输出(IO)、套接字...
} else if (second >= 60 * 60 * 24 * 2 && second * 60 * 24 * 7) {//大于2D小时 小于 7天 long day = ((second / 60) / 60) / 24; interval = day + "天前"; } else if ( second * 60 * 24 * 365 && ...