Java学习-0
- Java简单介绍
- 第一个程序Hello World
- 基本数据类型
- 对象和类
- 数据声明
- 函数声明
- 参数传递
Java简单介绍
- Java的优点:简单、可移植性
- JDK (Java Development Kit) Java开发工具包
- JRE (Java Runtime Environment) Java运行环境
只要具有JRE,就可以运行Java代码,而与操作系统的类别无关 - 安装完JDK后,在电脑“编辑系统环境变量”---“环境变量”选项下,系统变量新建 变量名 JAVA_HONE 变量值 D:\Program Files\java\jdk-10.0.1(这是我的JDK位置) 系统变量找到Path变量,编辑新建D:\Program Files\java\jdk-10.0.1\bin
之后在cmd 中测试命令 Java 和 Javac ,有东西输出之后就可以用Javac在cmd里编译Java程序了(生成.class文件),用Java [option] [主类名]就可以运行程序了(java HelloWorld 而不是 java HelloWorld.class)。
第一个程序 Hello World
public class HelloWorld{
public static void main(String[] args){
System.out.println("Hello World!");
}
}
注意Java区分大小写,参数中的String的S必须大写。
基本数据类型
char
boolean
byte, short, int, long, float, double
char(字符型)
首先补充编码的知识
ASCII码(美国信息交换标准代码,7-bits ASCII码) 七位码,共128个字符,它主要用于显示现代英语和其他西欧语言。
GB2312,是中国国家标准的简体中文字符集,双字节字符集。
GBK,GBK字符集主要扩展了繁体中文字的支持,双字节字符集。
GB18030,GB 18030标准采用单字节、双字节和四字节三种方式对字符编码。
单字节部分使用0×00至0×7F码(对应于ASCII码的相应码)。
双字节部分,首字节码从0×81至0×FE,尾字节码位分别是0×40至0×7E和0×80至0×FE。
四字节部分采用GB/T 11383未采用的0×30到0×39作为对双字节编码扩充的后缀,这样扩充的四字节编码,其范围为0×81308130到0×FE39FE39。其中第一、三个字节编码码位均为0×81至0×FE,第二、四个字节编码码位均为0×30至0×39。
按照程序员的称呼,GB2312、GBK到GB18030都属于双字节字符集(DBCS)。
Unicode(万国码、统一码、单一码),16位,也就是两个字节代表一个字符。
UTF-8是一种8位的unicode字符集,编码长度是可变的,并且是ASCII字符集的严格超集,也就是说ASCII中每个字符的编码在UTF-8中是完全一样的。UTF-8字符集中,一个字符可能是1个字节,2个字节,3个字节或者4个字节长。一般来说,欧洲的字母字符长度为1到2个字节,而亚洲的大部分字符则是3个字节,附加字符为4个字节长。
更多关于编码参考文章http://blog.sina.com.cn/s/blog_4b4409c30100vw9t.html
在Java中采用Unicode编码,所以
char a = 'a';
和 char b = '中'
一样都占两个字节(区别于C和C++)
char c = '\u21fa'
表示转义字符,格式为\u加上4位16进制数
boolean(布尔型)
只有true 和 false 两个值,区别于C和C++。
在C和C++中,bool类型可以用数字赋值,非零即为真,零为假。但在Java中只有boolean flag = true;
和 boolean flag = false;
byte, short, int, long, float, double(数值型)
|类型|存储要求|取值范围|备注|
|:-|:-|:-|
|byte|1字节|-128~127||
|short|2字节|-32768~32767||
|int|4字节|超过21亿||
|long|8字节|很大很大|需要在数值后加后缀L|
|float|4字节|大约为±3.402E+38|需要在数值后加后缀F,有效位6~7位|
|double|8字节|大约为±1.797E+308|需要在数值后加后缀D,有效位15位|
float和double类型表示的的数值是离散的,可能有一些小数就是无法表示,只能为近似值。不加F后缀的浮点数值默认为double类型。
float和double不能做移位运算。整形移位运算相当于除或乘2的移的位数的次幂。-1在计算机中存储形式为全一,无论移多少位都不变。
对象和类
对象(哎)是现实世界中的一个实体。
类是具有相同特征的对象的属性的集合。
类的声明
[修饰符1][修饰符2][修饰符...]class Student
{
int i; //类内的变量可以不用定义时赋值,数值变量系统默认赋值为零;逻辑变量boolean默认为false
static int j = 1;
...
public void Func(float[] f)
{
...
int i = 0; //函数内的变量随手赋值是个好习惯,不赋值的话,在内存中是暂时没有这个变量的
...
}
public static void main(String[] args)
{
...
}
...
}
类实例化为对象
Student s1 = new Student();
Student s2;
s2 = s1;
//一个对象变量没有实际包含一个对象,而仅仅是引用一个对象。
//new操作符返回的也是一个引用,即这个对象的存储地址。
//上面代码中的s2 = s1;仅仅是把s1保存的引用复制一份给s2,并没有复制这个对象
//可以将一个对象变量赋值为null,表明这个对象变量目前没有引用任何的对象
//如果一个对象没有任何的对象变量引用它,那么这个对象就成为垃圾对象,会被系统自动清理
//例如上面代码,如果添加s1 = null;那么这个对象不是垃圾对象,因为还有s2引用(指向)它。
数据声明
没什么好说的。[变量类型] [变量名] = [初始值];
说一些命名的规则和习惯吧(提高代码可读性)。
a. 必须是字母开头的由字母、数字、下划线组成的序列,区分大小写。虽然在命名可以使用$,但是不要使用。
b. 类名使用 UpperCamelCase(大驼峰) 风格,即每个单词首字母都要大写。
c. 方法名、参数名、成员变量、局部变量都统一使用 lowerCamelCase(小驼峰) 风格,即从第二个单词开始首字母大写。如:studentName
d. 常量命名全部大写,单词间用下划线隔开,力求语义表达完整清楚,不要嫌名字长。
e. 杜绝完全不规范的缩写, 避免望文不知义。
...
函数声明
[修饰符1][修饰符2][修饰符..] [函数返回值] [函数名](参数1,参数2,参数..) {函数体}
参数传递
Java的函数参数传递只有一种方法:传值(call by value)
java 成员变量(成员变量就是方法外部,类的内部定义的变量)存储在堆中的对象里面;局部变量就是方法或语句块内部定义的变量,局部变量必须初始化,局部变量的数据存在于栈内存中,栈内存中的局部变量随着方法的结束而出栈。
例子:
public class Card
{
int rank;
public static void swap1(Card c1,Card c2)
{
Card temp = c1;
c1 = c2;
c2 = temp;
}
public static void swap2(Card c1,Card c2)
{
int temp = c1.rank;
c1.rank = c2.rank;
c2.rank = temp;
}
public static void main(String[] args)
{
Card c1 = new Card();
c1.rank = 5;
Card c2 = new Card();
c2.rank = 6;
swap1(c1,c2);
swap2(c1,c2);
}
}
结果是swap1并没有实现数值交换;swap2实现了数值的变换。
分析:在main函数中,首先生成两个对象存储在堆中,并有引用变量c1,c2分别指向两个对象。在调用swap1,main函数的栈空间里复制c1,c2传递给函数,在函数中一波操作猛如虎,两个复制品的指向对象互换,然后函数结束,两个复制品出栈,然而原c1和c2的指向并没有改变。在swap2里,改的直接是存储在堆里的对象的变量,指向没有变化,但是内部的数值已经交换了。
Java学习-0的更多相关文章
- 0037 Java学习笔记-多线程-同步代码块、同步方法、同步锁
什么是同步 在上一篇0036 Java学习笔记-多线程-创建线程的三种方式示例代码中,实现Runnable创建多条线程,输出中的结果中会有错误,比如一张票卖了两次,有的票没卖的情况,因为线程对象被多条 ...
- Java学习笔记(04)
Java学习笔记(04) 如有不对或不足的地方,请给出建议,谢谢! 一.对象 面向对象的核心:找合适的对象做合适的事情 面向对象的编程思想:尽可能的用计算机语言来描述现实生活中的事物 面向对象:侧重于 ...
- Java学习心得之 HttpClient的GET和POST请求
作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 Java学习心得之 HttpClient的GET和POST请求 1. 前言2. GET请求3 ...
- 0032 Java学习笔记-类加载机制-初步
JVM虚拟机 Java虚拟机有自己完善的硬件架构(处理器.堆栈.寄存器等)和指令系统 Java虚拟机是一种能运行Java bytecode的虚拟机 JVM并非专属于Java语言,只要生成的编译文件能匹 ...
- 0030 Java学习笔记-面向对象-垃圾回收、(强、软、弱、虚)引用
垃圾回收特点 垃圾:程序运行过程中,会为对象.数组等分配内存,运行过程中或结束后,这些对象可能就没用了,没有变量再指向它们,这时候,它们就成了垃圾,等着垃圾回收程序的回收再利用 Java的垃圾回收机制 ...
- 0028 Java学习笔记-面向对象-Lambda表达式
匿名内部类与Lambda表达式示例 下面代码来源于:0027 Java学习笔记-面向对象-(非静态.静态.局部.匿名)内部类 package testpack; public class Test1{ ...
- 0025 Java学习笔记-面向对象-final修饰符、不可变类
final关键字可以用于何处 修饰类:该类不可被继承 修饰变量:该变量一经初始化就不能被重新赋值,即使该值跟初始化的值相同或者指向同一个对象,也不可以 类变量: 实例变量: 形参: 注意可以修饰形参 ...
- 《Java学习笔记(第8版)》学习指导
<Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...
- Java学习笔记-多线程-创建线程的方式
创建线程 创建线程的方式: 继承java.lang.Thread 实现java.lang.Runnable接口 所有的线程对象都是Thead及其子类的实例 每个线程完成一定的任务,其实就是一段顺序执行 ...
随机推荐
- 【Kafka】Kafka数据可靠性深度解读
转帖:http://www.infoq.com/cn/articles/depth-interpretation-of-kafka-data-reliability Kafka起初是由LinkedIn ...
- Cassandra概念学习系列之Cassandra是什么?
不多说,直接上干货! http://cassandra.apache.org/ Apache Cassandra是一套开源分布式NoSQL数据库系统.它最初由Facebook开发,用于储存收件箱等简单 ...
- DOS命令行操作MySQL数据库中文乱码问题解决
我们在 dos 命令行操作中文时,会报错 ’); ERROR (HY000): Incorrect string value: '\xD5\xC5\xC8\xFD' for column 原因:因为 ...
- 解决windows10下总是很快自动黑屏进入睡眠问题
在用win10的过程中总是过几分钟不操作电脑,就自动黑屏睡眠了. 下面讲解一下如何解决这个问题: 第一步:win +r 输入regedit.exe 运行注册表管理器 第二步:定位到 HKEY_LOC ...
- 对于SQL Server 2008删除或压缩数据库日志的方法
由于数据库日志增长被设置为“无限制”,所以时间一长日志文件必然会很大,一个400M的数据库居然有4G的LOG文件,严重占用了磁盘空间.由于主要是做OLAP,所以数据库本身不会有大变动,所以日志也就没有 ...
- python-thread封装类创建线程
#!/usr/bin/python #coding=utf-8 from time import ctime,sleep import threading class Mythead(threadin ...
- Android OpenGL教程-第六课【转】
第六课 纹理映射: 在这一课里,我将教会你如何把纹理映射到立方体的六个面. 激动的时刻来了,加载图片了. 复习一下android加载图片的知识.放一个png到drawable里面. (图片文件名:ne ...
- 记录一次nginx502/504问题解决过程
最近自己在阿里云购买有段时间的服务器,一访问就出现nginx 504 Gateway Time-out. 想起以前是可以访问的,细想最近改动的配置应该不会涉及到这块啊. 就网上各种百度谷歌,最后终于找 ...
- SQL Serever学习5——数据库配置
数据库的主要属性 限制访问 用来设置数据允许用户访问的状态,或者说允许多少客户访问,有3个选项: MULTI_USER(多个),大多数数据库正常状态,允许多个用户同时访问该数据库. SINGLE_US ...
- js常用字符处理方法
JS自带函数concat将两个或多个字符的文本组合起来,返回一个新的字符串.var a = "hello";var b = ",world";var c = a ...