JavaSE01、如何写一个Java代码
- Java
- 初识Java的main方法
- 用Sublime Text3编译运行
- 如何编译
- 程序运行原理
- 程序需注意的问题
- 没有out文件
- args
- 注释与打印
- 变量与类型
- 类型特性
- 变量类型
- 常量
- 类型转换与整型提升
- 运算符
- 逻辑控制
- 快捷键
Java
Java - 爪哇岛 盛产咖啡
Java之父 —— 高斯林
Write Once. Run anywhere.
一次运行,到处运行
环境:
JDK - Java开发者工具
IDEA - 集成开发环境
初识Java的main方法
public class HelloWorld {public statci void main(String[] args) { // Java中main函数的固定写法System.out.println("hello");}
}
用Sublime Text3编译运行
如何编译
程序运行原理
JDK:Java开发者工具
JRE:Java运行环境
JVM:Java虚拟机
一次编译,到处运行,只要你安装了JDK
程序需注意的问题
1、每次写完代码,必须保存,然后重新编译!!2、如果这个类是public修饰的,类名需要和文件名一致`public class HelloWorld`3、方法需在类里 --> 类(方法)4、不是一个文件对应一个字节码,而是一个类对应一个字节码 好处:用到哪个类,加载哪个类,而不是全加载!
没有out文件
args
数组越界:
注释与打印
三种注释方法:
/*** 文档注释 --> 类或方法的前面*/public class HelloWorld {public static void main(String[] args) {for(int i = 0; i< args.length; i++) {// System.out.println(args[i]); 行注释/* 块注释System.out.println(args[0]);System.out.println(args[1]);System.out.println(args[2]);System.out.println(args[3]);*/}System.out.println("hello");}
}
运行此代码产生错误问题:
javac 在编译的时候,默认用GDK格式编译代码,
解决方法:javac -encoding utf-8 HelloWorld.java
打印方法:
public class HelloWorld {public static void main(String[] args) {for(int i = 0; i< args.length; i++) {System.out.print("打印不换行");System.out.println("打印换行");System.out.printf("%d\n", 10);// 打印不换行打印换行// 10}
}
变量与类型
类型特性
1、int 多少字节?
int 4字节,无关多少位系统 — 可移植性高
Linux Mac Win 可要有字节码文件,就能编译 — 跨平台
public class HelloWorld {/*** int 4字节* @param args [description]*/public static void main(String[] args) {int a = 10;}}
2、有无符号?
Java 中的 int,没有所谓的无符号类型,统一是有符号的
public class HelloWorld { public static void main(String[] args) {int a = 10;System.out.println(a); // 10}
}
3、取值范围?
最高位为有符号位,剩余31位是数值位
这31位可表示 2^31 = 2,147,483,648 个数值
int 取值范围:-2^31 -> 2^31-1
-2147483648 — 0 — 2147483647
public class HelloWorld { public static void main(String[] args) {int a = 10;System.out.println(a); // 10// Integer - 包装类 是int的plus版本System.out.println(Integer.MAX_VALUE); // 2147483647System.out.println(Integer.MIN_VALUE); // -2147483648}
}
变量类型
1、变量命名
小驼峰:以(数字 字母 下划线 美元符号)组成,不能以数字开头
public class HelloWorld { public static void main(String[] args) {int maxMax = 10;int max_num = 10;int $max3num = 10;int ___________ = 100; // 可以,但不要用System.out.println(___________); // 100int 钱 = 300;System.out.println(钱); // 300// Unicode字符集:包含中文,固可使用}
}
2、变量能否不初始化?
Java 比较安全,如果不初始化就使用,编译器就会报错,不是警告!
int num; // err
3、long 长整形
8bit 64bit
long 的最大最小值:-2^63 2^63-1
取值范围:
public class HelloWorld { public static void main(String[] args) {long a = 10L;System.out.println(Long.MAX_VALUE); // 9223372036854775807System.out.println(Long.MIN_VALUE); // -9223372036854775808}
}
4、双精度浮点型变量
注意问题1:
注意问题2:
小数本身是没有一个精准的数字的,只能精确到几位
public class HelloWorld { public static void main(String[] args) {double num = 1.1;System.out.println(num*num); // 1.2100000000000002}
}
5、单精度浮点型变量
public class HelloWorld { public static void main(String[] args) {float f = 10.5;System.out.println(f);// 报错: 不兼容的类型: 从double转换到float可能会有损失// 正确写法:float f = 10.5f;}
}
6、 字符类型变量
public class HelloWorld { public static void main(String[] args) {char ch1 = 'a';System.out.println(ch1); // achar ch2 = '数';System.out.println(ch2); // 数}
}
汉字2字节,代码无问题,由此可得 char 区别于C语言是2字节
在C语言中使用ASCII 表示字符,在Java 中使用Unicode 表示字符,表示的字符种类更多,包括中文
7、 字节类型
public class HelloWorld { public static void main(String[] args) {byte b = 10; // 1字节 相当于C中的charSystem.out.println(b1); // 10}
}
字节类型取值范围:
public class HelloWorld { public static void main(String[] args) {byte b1 = 130; // errSystem.out.println(b2); // 错误: 不兼容的类型: 从int转换到byte可能会有损失byte b2 = 127; // ok}
}
1字节 --> 8bit 最高位符号位,7位数值位
-2^7 - 2^7-1
-128 - 127
8、短整型
public class HelloWorld { public static void main(String[] args) {short s = 10; // 2字节// -2^16 - 2^16-1}
}
9、布尔类型
在Java中,boolean只有两种取值,true真,false假
注:在JVM的规范中,没有规定布尔类型的大小,
布尔类型变量不能±,因为不是数值
public class TestDemo {public static void main(String[] args) {boolean flag = false;System.out.println(flag);}
}
10、字符串类型-(引用类型)
public class TestDemo {public static void main(String[] args) {String str = "hello";System.out.println(str);}
}
注意问题:
public class TestDemo {public static void main(String[] args) {System.out.println("hello"+"world"); // helloworldSystem.out.println("hello"+10+20); // hello1020// 其他数据类型和字符串使用加号拼接,结果就是一个字符串System.out.println(10+20+"hello"); // 30helloSystem.out.println("hello+(10+20)"); // hello+(10+20)System.out.println(10+""+20+"hello"); // 1020helloSystem.out.println("a = "+10+", b = " +20); // a = 10, b = 20/** 整数 byte short int long* 浮点数 float double* 基本数据类型 字符 char* 布尔 boolean* 数据类型* 引用类型 String 数组 类 接口 枚举……* */// 转义字符System.out.println("\"bit\""); // "bit"// 水平制表符\t - Tab键}
}
常量
public class TestDemo {public static void main(String[] args) {// 常量:// 1.字面值常量// 2.final修饰的变量 ->常量// 程序编译时,就已经确定值// 只能初始化一次// 11、变量:// 程序运行的时候们可以改变的量final int a = 10;// a = 20; // err}
}
类型转换与整型提升
强制类型转换
public class TestDemo {public static void main(String[] args) {int a = 10;long b = a; // okSystem.out.println(b);long d = 12;// int c = d; // err 报错(强类型语言)int c = (int)d; // 强制类型转换(有风险)// boolean不能boolean n = true;// int t = (int)n; // err// int->bytebyte num1 = 1;byte num2 = 2;byte sum = (byte)(num1 + num2); // 强制类型转换byte num3 = 1+2; // 1和2都是常量,在程序编译时,已经被编译为3了 --byte num3 = 3;}
}
整型提升
public class TestDemo {public static void main(String[] args) {// 整形提升:小范围提升为大范围,效率高// byte放int// byte a = 128; // err -128 127byte a = 1;byte b = 2;byte c = (byte)(a + b); // 小于4 提升System.out.println(c);int num1 = 10;long num2 = 10;int sum = (int)(num1+num2);}
}
int 和 String 之间的相互转换
public class TestDemo {public static void main(String[] args) {int num = 10;String ret = String.valueOf(num); // int->StringSystem.out.println(ret); // 10// String->intString str = "123";int ret2 = Integer.valueOf(str);System.out.println(ret+1); //}
}
运算符
1、算术运算符
public class TestDemo {public static void main(String[] args) {// %int a = 10;int b = 0;// System.out.println(a/b); // 抛出异常 程序结束 by zero-算术异常System.out.println("xxxxxxxxxxx"); // 不打印System.out.println(10 % 3); // 1System.out.println(-10 % 3); // -1System.out.println(10 % -3); // 1System.out.println(-10 % -3); // -1}
}
2、增量赋值运算符 += -= ……
public class TestDemo {public static void main(String[] args) {short s = 10;// s = (short)(s+9);s += 9; // +=自动强制类型转换System.out.println(s);}
}
3、自增自减 ++ –
区分前置(先++后使用),后置(先使用后++)
4、关系运算符 == != < > <= >=
关系运算符表达式结果是波尔值
if(布尔表达式)
public class TestDemo {public static void main(String[] args) {int i1 = 10;int i2 = 20;System.out.println(i1 == i2); // falseSystem.out.println(i1 != i2); // true}
}
5、逻辑运算符
public class TestDemo {public static void main(String[] args) {// 5、逻辑运算符// 逻辑与 &&// 表达式1 && 表达式2 --> 此2表达式都是布尔表达式// 短路:如果表达式1为假,就不执行表达式2// 逻辑或 ||// 表达式1 || 表达式2 --> 此2表达式都是布尔表达式// 短路:如果表达式1为真,就不执行表达式2// 逻辑非 !int a = 10;int b = 20;System.out.println(!!(a<b)); // trueSystem.out.println(10<20 && 10/0 == 0); // 短路System.out.println(10<20 || 10/0 == 0); // 短路}
}
6、位运算符
按位与& -- 对应为都是1,结果是1
按位或| -- 有1就是1
按位异或^ -- 相同为0,相异为1
按位取反~ -- 0变1,1变0
7、移位运算符
<< >> >>> 都是按二进制位移
左移 右边补0 相当于原数字*2的N次方
右移 左边补符号位 相当于原数字/2的N次方0000 1011>>1 0000 0101
8、条件运算符
public class TestDemo {public static void main(String[] args) {int a = 10;int b = 20;int max = a > b ? a : b; // 表达式1为布尔表达式}
}
逻辑控制
选择结构,循环结构,循序结构
1、分支语句
public class TestDemo {public static void main(String[] args) {// if...else// 1. 判断一个数是不是奇数Scanner scanner = new Scanner(System.in); // 从键盘获取数据// import java.util.Scanner; --> Alt_回车int n = scanner.nextInt();if( n % 2 == 0) {System.out.println("偶数");} else {System.out.println("奇数");}// 输入字符串String str = scanner.nextLine();// String str = scanner.next(); // 遇到空格结束System.out.println(str);// 有整数和字符串输入,要先读取字符串}
}
判断闰年
public class TestDemo {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int year = scanner.nextInt();// 1if(year % 100 == 0) {if(year % 400 == 0) {System.out.println(year+"是闰年!");}else {System.out.println(year+"不是闰年!");}}else {if(year % 4 == 0) {System.out.println(year+"是闰年!");}else {System.out.println(year+"不是闰年!");}}// 2if(year % 100 == 0 && year % 400 == 0) {System.out.println(year+"是闰年!");}else {if(year % 4 == 0) {System.out.println(year+"是闰年!");}else {System.out.println(year+"不是闰年!");}}// 3if(year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {System.out.println(year+"是闰年");}else {System.out.println(year+"不是闰年");}}
}
2、switch语句
不能用作switch参数的类型:long float double boolean
只能是整数,字符,字符串,枚举(JDK1.5开始,引入枚举,枚举也可作为switch参数)
3、循环结构
public class TestDemo {public static void main(String[] args) {// idea 如何调试 --> 甲壳虫/右击debug// debug -> 观察代码是怎么一步一步执行的int i = 0;int sum = 0;while(i<=5) { // 布尔表达式sum += i;i++;}System.out.println(sum);}
}
求阶乘
public class TestDemo {public static void main(String[] args) {int n = 5;int i = 1;int ret = 1;while(i <= n) {ret *= i;i++;}System.out.println(ret); // 120
}
求阶乘和
public class TestDemo {public static void main(String[] args) {int j = 1;int sum = 0;while(j <= 5) {int i = 1;int ret = 1;while (i <= j) {ret *= i;i++;}sum = sum + ret;j++;}System.out.println(sum);
}
continue
public class TestDemo {public static void main(String[] args) {// 既能被3整除,也能被5整除int i = 1;while(i <= 100) {if(i % 15 != 0) {i++;continue;}System.out.println(i);i++;}}
}
3、for
public class TestDemo {public static void main(String[] args) {// 快捷方式:fori回车for (;true;) {System.out.println("111"); // 死循环}}
/**
* Created with IntelliJ IDEA.
* Description:
* User: ${USER}
* Date: ${YEAR}-${MONTH}-${DAY}
* Time: ${TIME}
*/
快捷键
Ctrl+Alt+I,将选中的代码进行自动缩进编排
快捷键:普通搜索替换:Ctrl+F和Ctrl+R;全局搜索替换:Ctrl+Shift+F和Ctrl+Shift+R;
WIN + AIT + INS 新建文件,可搜索
Ctrl + AIT + V 最近的变量输出
AIT + V 自动生成变量
JavaSE01、如何写一个Java代码相关推荐
- 怎么才能学好Java编程写好Java代码?
动力节点Java培训最新上线Java实验班,等你来测试自己适不适合学习Java编程哦! 刚刚接触Java编程的朋友总会遇到一些情况,比如:跟着Java基础教程看过一遍后,自己写代码的时候却无从下手:写 ...
- 控制台编写JAVA程序教程_写一个java程序的步骤是什么?写java程序技巧
写Java程序是要按照步骤来的,这样才能写好一个java程序,那么接下来,我们就来给大家讲解一下写一个java程序的步骤是什么? (1)创建Java项目:"FileàNewàProjectà ...
- 自己写一个java.lang.reflect.Proxy代理的实现
前言 Java设计模式9:代理模式一文中,讲到了动态代理,动态代理里面用到了一个类就是java.lang.reflect.Proxy,这个类是根据代理内容为传入的接口生成代理用的.本文就自己写一个Pr ...
- 可以写一个表白代码吗
当然可以!想写一个表白代码的话,可以使用一些编程语言,例如 Python.Java.C++ 等等.如果你不熟悉编程语言,不妨先学习一下基本语法再试试. 举个例子,这是一个使用 Python 语言编写的 ...
- 【JAVA基础】名词解释与第一个JAVA代码
#JDK,KRE,JVM名词解释 JDK:Java Development Kit Java开发者工具 (只需要下载这个就好了,因为JDK包含JRE) JRE:Java Runtime Environ ...
- 写一个java微信支付的接口
要写一个 Java 微信支付接口,需要以下几个步骤: 注册微信支付商户,获取微信支付商户号和密钥. 准备微信支付需要的相关参数,包括商户订单号.订单金额.订单描述等. 使用 Java 实现微信支付下单 ...
- 一起重新开始学大数据-java篇-DAY01-第一个java代码helloworld
一起重新开始学大数据-java篇 -DAY01-第一个java代码helloworld 计算机: 按照指定程序,自动高速处理海量数据 计算机组成 硬件和软件组成 硬件: cpu:计算 内存:提供计算资 ...
- 手把手教你写一个Java的orm框架(4)
开始准备生成sql 在上一篇里,我们已经取到了我们在生成sql语句中所需要的信息,这一篇里我们开始根据class来生成我们需要的sql.在这之前我们先确认几件事情 sql里的参数我们使用占位符的形式. ...
- 原来热加载如此简单,手动写一个 Java 热加载吧
1. 什么是热加载 热加载是指可以在不重启服务的情况下让更改的代码生效,热加载可以显著的提升开发以及调试的效率,它是基于 Java 的类加载器实现的,但是由于热加载的不安全性,一般不会用于正式的生产环 ...
最新文章
- Docker Swarm Beta 发布,Docker 集群管理
- GitHub的AI程序员“抄袭”算法大神代码,连原版注释都抄上了
- 3.2计算机系统教案,计算机系统教案.ppt
- 计算机专业必须读的经典书籍
- [Deepin - Pycharm调试记录] Pyinstaller索引系统库问题
- Windows破解笔记-windows API中的SendMessage
- eureka注册中心之服务提供者
- 专访阿里云雁杨:因需求而进化,ECS云服务器追求弹性极致
- php安装sphinx扩展,安装php的sphinx扩展模块
- oracle安装失败 主机名_PeopleTool 8.58.04 安装
- 图像标注工具labelImg使用方法
- BZOJ2732[HNOI2012] 射箭
- 服务器内存傲腾基本参数信息,服务器装傲腾内存
- C语言--三次方程数值求解
- 翁恺c语言程序设计入门作业,程序设计入门——C语言
- NXP S32K146 CAN通讯 TJA1043(二)
- 如何解决苹果Mac电脑安装PS失败并出现错误代码131 182出现“错误代码107”解决办法
- 考研复试(控制工程专硕)及大学本科(物联网工程)知识点回顾(三)——模拟电子技术
- PS小知识(四)——影像出图调色及去除薄雾薄云
- 轨迹规划-贝塞尔曲线
热门文章
- aliyun gradle 代理_android studio gradle国内代理设置
- python3 global_Python3基础 global 在函数内部对全局变量进行修改
- 隐藏html文本节点,javascript-D3-仅显示/隐藏单击节点的文本
- c语言字符串怎么转为正数,把字符串转换为与之等价的整型值
- mysql 季度最后一天,MYSQL中取目前年份的第一天和当前周,月,季度的第一天/最后一天...
- 51单片机c语言计数程序,51单片机INTOINT1中断计数c语言源程序.doc
- [置顶] 手机通过socket控制电脑关机,重启,注销等功能
- 试用期间,云服务器操作系统可以更换吗?
- Objective-C与JavaScript交互的那些事
- 关于iOS中MVC和MVVM的区别和联系