- 浏览: 1589880 次
- 来自: 上海
文章分类
- 全部博客 (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= false 两边结果相同 为 false 两边结果不同 为 true */ /* ! !true =false; !!true=true; !!!true=false; */ }
位运算符号
// <<左移动 >>右移 >>>无符号右移 &与 |或 ^异或 ~反码 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 & 6 = 6 // |: 或 6 | 5 =7 110 | 101 ------- 111 ==>真真真 ==> 7 一个数 或 自己 等于 自己 6 | 6 = 6
//异或 ^
// ^ 异或 6 ^ 5 == 3 110 0 假 1 真 ^ 101 ------- 011 ==> 假真真 ==> 3 异或: 一个数 异或一个数两次 结果还是 那个数. 一个数 异或 自己 = 0 6^6=0
// ~ 取反
// ~ 反码 规律 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
//求负数的 二进制
-6= 6的取反+1; 6取反= -6-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: 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 //当某一次匹配成功,而没有遇到"break" 的时候,接下来,程序 不会判断剩下的case 而是直接运行下面的可以执行语句,直到遇到 break 或者 switch 结尾 "}" //default 总是最后执行的,提前是没有遇到break; //如果运行到default后,但是 default里没有break,那么程序还会一直往下运行,知道遇到break; 或者 "}" 结束判断 } 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 2282经常混淆于此,特地研究了一下,记录在此以备忘。 整个地 ... -
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 815import 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 ...
相关推荐
例如,`5 << 2`的结果是20,因为5的二进制形式是0101,左移两位后变为10100,转换为十进制即为20。右移运算符则相反,将二进制数的所有位向右移动,左边的空位根据数据类型(有符号或无符号)可能被填充为0或符号位...
在Java基础学习的第二天,主要涵盖了以下几个重要知识点:计算机组成原理,DOS命令,进制转换,Java的发展历程,Java的三大平台,Java运行核心机制,JDK的安装与环境变量配置,以及Java的基本语法。 首先,计算机...
这份Java基础学习笔记深入浅出地介绍了Java编程中的核心概念,包括标识符规则、注释使用、数据类型理解、变量管理、运算符操作及进制转换技巧。通过详细讲解与实例演示,帮助初学者构建坚实的编程基础,掌握基本的...
- 常量与进制转换是理解数据存储方式的关键,掌握不同进制之间的转换方法对于处理数字非常重要。 - 数据类型的选择与变量的声明直接影响程序的性能和效率,正确使用运算符能够使程序更加高效和简洁。
第2章 Java基础类型与运算符 实例2 自动提升 9 实例3 自动转换 10 实例4 常用基础类型之强制转换 11 2.2 运算符 12 实例5 算术运算符 12 实例6 关系运算符 13 实例7 逻辑运算符 14 实例8 位运算符 15 实例...
第1章 Java基础 1.1 转换基本数据类型 1.2 Java的运算符 1.3 控制程序的流程 1.4 计算阶乘 1.5 实现命令行程序 第2章 Java面向对象程序设计 2. 1 复数类 2. 2 equals.chashCode...
在IT领域,计算器应用是日常计算任务的基本工具,尤其对于程序员和计算机科学爱好者而言,一个功能强大的计算器不仅可以处理基本的算术运算,还能提供高级功能,如开方、平方、求阶乘以及进制转换。此外,能够获取...
在Java编程语言中,位运算符是用于操作二进制位的特殊运算符。它们直接在整数类型的底层二进制表示上工作,提供了一种高效处理数据的方式。本实践练习主要关注Java中的位运算符及其应用。我们将通过分析`main.java`...
第2章 Java基础类型与运算符(教学视频:39分钟) 9 2.1 基础类型 9 实例2 自动提升 9 实例3 自动转换 10 实例4 常用基础类型之强制转换 11 2.2 运算符 12 实例5 算术运算符 12 实例6...
第2章 Java基础类型与运算符(教学视频:39分钟) 9 2.1 基础类型 9 实例2 自动提升 9 实例3 自动转换 10 实例4 常用基础类型之强制转换 11 2.2 运算符 12 实例5 算术运算符 12 实例6 关系...
第2章 Java基础类型与运算符(教学视频:39分钟) 9 2.1 基础类型 9 实例2 自动提升 9 实例3 自动转换 10 实例4 常用基础类型之强制转换 11 2.2 运算符 12 实例5 算术运算符 12 实例6 关系运算符 13 实例7 逻辑...
这是因为计算机内部使用二进制形式存储数值,而有些十进制小数无法精确表示为二进制形式,导致计算过程中出现精度误差。 #### 解决方案 为了解决浮点数的精度问题,可以采取以下几种方式之一: - **使用字符串...
在Java编程中,了解语言的细微之处至关重要,因为这可能会导致意想不到的行为。本PPT主要涵盖了五个有趣的Java谜题,帮助开发者理解Java的一些核心概念。 **谜题1:奇数判断** 在Java中,判断一个整数是否为奇数,...
第2章 Java基础类型与运算符(教学视频:39分钟) 9 2.1 基础类型 9 实例2 自动提升 9 实例3 自动转换 10 实例4 常用基础类型之强制转换 11 2.2 运算符 12 实例5 算术运算符 12 实例6 关系运算符 13 实例7 逻辑...
学习C语言的目标是掌握基本编程知识,包括数据类型、运算符和表达式、流程控制、函数、数组、指针、变量的作用域和存储方式、扩展数据类型以及专题如补码、字符串处理、进制转换和动态内存分配等。掌握基本语法规则...
实例094 整数进制转换器 115 实例095 查看数字的取值范围 116 实例096 ASCII编码查看器 117 实例097 Double类型的比较 118 5.4 面向对象的特征 119 实例098 经理与员工的差异 119 实例099 重写父类中的方法 121 实例...