JAVA笔记03 变量和运算符 面试题以及笔记
标识符的命名规则需要注意哪几点?
定义
就是给类,接口,方法,变量等起名字的字符序列
组成规则
- 英文大小写字母
- 数字
- $和_
注意事项
- 不能以数字开头
- 不能是java中的关键字
- 区分大小写
常见的命名规则(见名知意)
A:包全部小写
单级包:小写
- 举例:liuyi,com
多级包:小写,并用.隔开
- 举例:cn.itcast,com.baidu
B:类或者接口
一个单词:首字母大写
- 举例:Student,Demo
多个单词:每个单词首字母大写
- 举例:HelloWorld,StudentName
C:方法或者变量
一个单词:首字母小写
- 举例:name,main
多个单词:从第二个单词开始,每个单词首字母大写
- 举例:studentAge,showAllNames()
D:常量
全部大写
一个单词:大写
- 举例:PI
多个单词:大写,并用_隔开
- 举例:STUDENT_MAX_AGE
基本数据类型有哪几类?包含String吗?
Java的数据类型分两种:
1.基本类型:int,byte,float,double,char
2. 对象类型(类): Integer,Byte,Float,Double,Char,String,其它一切java提供的,或者你自己创建的类。
其中Integer又叫 int的包装类。而Byte和Float也类似,一般包装类的名字首写是数值名的大写开头。
String类你可以理解成 char[]数组去想就明白了。因为数组是一个类,所以String也就是一个类了。它不是基本数据类型。
或者你还可以这样想, java分为
1。数据;
2。类对象
两种类型,数据是运算的基本单元,这些运算一般类似+ - * % 等数学运算,而类对象的运算是必须你定义的。或者系统有帮你定义的。这些运算一般都是一些函数如set和get方法。
什么叫包装类?
在java中有时候的运算必须是两个类对象之间进行的,不充许对象与数字之间进行运算。所以需要有一个对象,这个对象把数字进行了一下包装,这样这个对象就可以和另一个对象进行运算了。
比如我们也可以定义一个类:
class Integer{
int i=0;
public Integer(int i){
this.i=i;
}
}
这样这个Integer就是一个包装类,他包装了一个整数值,然后可以在里面写一些运算符重载的方法使它支持某些运算。这个时候可以赋值:
Integer it=new Integer(10);
现在变量it就是一个对象,不是一个数字。
每种基本数据类型都定义一个变量。
//这里偷懒了,变量名尽量不要这么定义,值得注意的就是float类型后要加后缀
private
byte
bb =
1
;
private
short
s =
2
;
private
int
i =
1
;
private
long
l =
2
;
private
float
f =
0
.5f;
private
double
d =
0.05
;
private
char
c =
'a'
;
private
boolean
b =
false
;
写出基本数据类型自动转化的流程图。
整型默认的是什么类型,浮点型(实数型)默认的是什么类型?
在基本JAVA类型中,如果不明确指定,整数型的默认是int类型,带小数的默认是double类型
对于包名,类名接口名,变量名和函数名,常量名我们习惯如何格式来命名?
Java包的名字都是由小写单词组成。但是由于Java面向对象编程的特性,每一名Java程序员都可以编写属于自己的Java包,为了保障每个Java包命名的唯一性,在最新的Java编程规范中,要求程序员在自己定义的包的名称之前加上唯一的前缀。由于互联网上的域名称是不会重复的,所以程序员一般采用自己在互联网上的域名称作为自己程序包的唯一前缀。
例如: net.frontfree.javagroup
类的名字必须由大写字母开头而单词中的其他字母均为小写;如果类名称由多个单词组成,则每个单词的首字母均应为大写例如TestPage;如果类名称中包含单词缩写,则这个所写词的每个字母均应大写,如:XMLExample,还有一点命名技巧就是由于类是设计用来代表对象的,所以在命名类时应尽量选择名词。
例如: Circle
interface RasterDelegate;
interface Storing;
方法的名字的第一个单词应以小写字母作为开头,后面的单词则用大写字母开头。
例如: sendMessge
变量(Variables) 除了变量名外,所有实例,包括类,类常量,均采用大小写混合的方式,第一个单词的首字母小写,其后单词的首字母大写。变量名不应以下划线或美元符号开头,尽管这在语法上是允许的。
变量名应简短且富于描述。变量名的选用应该易于记忆,即,能够指出其用途。尽量避免单个字符的变量名,除非是一次性的临时变量。临时变量通常被取名为i,j,k,m和n,它们一般用于整型;c,d,e,它们一般用于字符型。 char c;
int i;
float myWidth;
实例变量(Instance Variables) 大小写规则和变量名相似,除了前面需要一个下划线 int _employeeId;
String _name;
Customer _customer;
常量的名字应该都使用大写字母,并且指出该常量完整含义。如果一个常量名称由多个单词组成,则应该用下划线来分割这些单词。
例如: MAX_VALUE
定义一个变量需要注意什么?
/*
* 定义变量的注意事项:
* 1)定义一个变量,变量不能重复定义,否则报错
* 2)定义变量,变量的作用域的范围,在当前的这个方法中有效的
* 3)在同一行上是可以定义多个变量,但是不建议
* 4)定义变量,不能以数字开头
* */
public class DataTypeDemo2 {
public static void main(String[] args) {
//定义变量
int a = 10 ;
//重复定义
// int a = 20 ;//错误
// int m = 10,n = 20 ,z = 30 ;//在同一行上可以定义多个变量
int m = 10 ;
int n = 20 ;
int z = 30 ;
//不能以数字开头
// int 1y = 20 ;//错误
}
/*public static void add(){
//类的成员方法
}*/
}
强制类型转化可能出现的问题
让我意识到这个问题是做了一道求标准差的题目,本来题目要求精度不高,答案却总是相差一些。和室友进行比较,发现大致思路一样,并不是很麻烦要用高精度算法求解的。
先上代码:
#include <stdio.h>
#include <math.h>
int main (void)
{
int num,sum,i;
int a[100];
double pro,sum1;
sum = sum1 = 0; //定义并初始化变量
scanf ("%d",&num);
for (i=0; i<num; i++)
{
scanf ("%d",&a[i]);
sum = (double)sum + a[i]; //求和 14行
}
ave = (double)sum / num; //求平均数 16行
for (i=0; i<num; i++)
{
sum1 = sum1 + pow (pro - a[i],2); //求方差
}
printf ("%f\n",sqrt (sum1 / num)); //求标准差并输出
return 0;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
上面的代码是可以输出正确答案的,一开始我不是用double来把sum给强制类型转换的,我是用1.0*sum来转换的。其实这两种方法的结果是一样。
现在有个问题:
因为第14行已经对sum进行强制类型转换,那么是不是第16行的类型转换可以省略了,反正ave已经定义为double型了
答案是:错误!
第14行对sum进行的强制类型转换只对右边的sum生效,后边得出的值为浮点型,但是把这个浮点型数值赋值给左边的整型sum,则后面的小数部分会丢失。所以第16行的double不能省!
但是这也是有巧合存在,因为第14行运算的输入的数都为整型,所以小数部分丢不丢失无所谓,更严谨一些应该把sum定义为浮点型。
(同样把整型数赋值给浮点型数,也只是在整型数后面补0而已)
为抵抗洪水,战士连续作战89小时,编程计算共多少天零多少小时?
今天是周二,100天以后是周几?
考查运算符的优先级
写出输出的结果.
class Demo{
public static void main(String[] args){
int x=0,y=1;
if(++x==y-- & x++==1||--y==0)
System.out.println("x="+x+",y="+y); //x = 2,y = 0;
else
System.out.println("y="+y+",x="+x);
}
}
插入代码,实现n和m值的交换
//方式一:
int n = 5,m = 13;
//int temp = n;
//n = m;
//m = temp;
System.out.println("n="+n+",m="+m);
//方式二:
//n = n + m;
//m = n - m;
//n = n - m;
System.out.println("n="+n+",m="+m);
//方式三:
n = n ^ m;
m = n ^ m ;
n = n ^ m;
System.out.println("n="+n+",m="+m);
如何手动实现整型数值60的二进制到十六进制的转换
//方式一:自动实现
String str1 = Integer.toBinaryString(60);
String str2 = Integer.toHexString(60);
//方式二:手动实现
int i1 = 60;
int i2 = i1&15;
String j = (i2 > 9)? (char)(i2-10 + 'A')+"" : i2+"";
int temp = i1 >>> 4;
i2 = temp & 15;
String k = (i2 > 9)? (char)(i2-10 + 'A')+"" : i2+"";
System.out.println(k+""+j);
根据运算符的功能,我们把运算符分成哪几类?
运算符按照其要求的操作数数目来分,可以有单目运算符、双目运算符和三目运算符,它们分别对应于1个、2个、3个操作数。运算符按其功能来分,有算术运算符、赋值运算符、关系运算符、逻辑运算符、位运算符和其他运算符。
算术
单目:+(取正)-(取负) ++(自增1) - -(自减1)
双目:+ - * / %(取余)
三目:a>b?true:false 说明:当a大于b的时候,为true(也就是冒号之前的值),否则为false;这整个运算符包括一个关系运算符(可以是“>”"<""!="等等),一个“?”,一个“:”,冒号前后需要有两个表达式或者是值或者是对象。
关系
都是双目运算符
等于符号:==,不等于符号:!= ,大于符号:>, 小于符号:<,大于等于符号:>= ,小于等于符号:<= 。
位与逻辑
位运算符 与(&)、非(~)、或(|)、异或(^)
&:双目运算符,运算时均把运算数转换为二进制再做比较,规则:当相同的位上均为1时结果为1,否则结 果为0.如:1010&1101,转为二进制:10001001101&1111110010比较结果为:1000000转为十进制: 64所以1010&1101=64;
| :当两边操作数的位有一边为1时,结果为1,否则为0。如1100|1010=1110
~:0变1,1变0
^:两边的位不同时,结果为1,否则为0.如1100^1010=0110
逻辑运算符
与(&&)、非(!)、或(||)
赋值
= += -= *= /= %= &= ^= |= <<= >>=
instanceof
该运算符是双目运算符,左面的操作元是一个对象,右面是一个类或接口。当左面的对象是右面的类(或右边类的子孙类)创建的对象、或者是右边接口的实现类(或实现类的子孙类)的对象时,该运算符运算结果是true,否则是false。
小明要到美国旅游,可是那里的温度是以华氏度为单位记录的。它需要一个程序将华氏温度(80度)转换为摄氏度,并以华氏度和摄氏度为单位分别显示该温度。
提示:摄氏度与芈氏度的转换公式为:摄氏度 = 5/9.0*(华氏度-32)
练习前++,后++,三元运算符
写出输出结果:
class Demo{
public static void main(String[] args){
int a=3,b=8;
int c=(a>b)?a++:b++;
System.out.println("a="+a+"\tb="+b+"\tc="+c); //
int d=(a>b)?++a:++b;
System.out.println("a="+a+"\tb="+b+"\td="+d); //
int e=(a<b)?a++:b++;
System.out.println("a="+a+"\tb="+b+"\te="+e); //
int f=(a<b)?++a:++b;
System.out.println("a="+a+"\tb="+b+"\tf="+f); //
}
}
----------------------------------------------------
比较 + 与 +=
short s1 = 1; s1 = s1 + 1;有什么错?
short s1 = 1; s1 += 1;有什么错
答:short s1 = 1; s1 = s1 + 1; (s1+1运算结果是int型,需要强制转换类型)
short s1 = 1; s1 += 1;(可以正确编译)
Java有没有goto
答:java中的保留字,现在没有在java中使用
用最有效率的方法算出2乘以8等于几
答:2 << 3
char型变量中能不能存贮一个中文汉字?为什么?
答:是能够定义成为一个中文的,因为java中以unicode编码,一个char占16个字节,
所以放一个中文是没问题的
定义float f=3.4;是否正确?
答:不正确。精度不准确,应该用强制类型转换,如下所示:float f=(float)3.4
String是最基本的数据类型吗
答:基本数据类型包括byte、int、char、long、float、double、boolean和short。
java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,
我们应该用StringBuffer类
JAVA笔记03 变量和运算符 面试题以及笔记的更多相关文章
- java第二章 变量和运算符
Java 基础应用编程—— 变量和运算符 1.Java程序结构 数据类型:确定要存储在内存中的数据的类型. 变量:是存储数据的基本单元 2.变量的概念 变 ...
- Java基础以及变量和运算符、包机制、javadoc生成
目录 注释.标识符.关键字 注释 标识符 关键字 标识符注意点 数据类型 强类型语言 弱类型语言 Java的数据类型 基本类型(primitive type) 数值类型 boolean类型 什么是字节 ...
- javaSE练习1——变量和运算符
一.已知a,b均是整型变量,写出将a,b两个变量中的值互换的程序.(知识点:变量和运算符综合应用): package com.test; public class t01 { public stati ...
- Java2变量和运算符
课后作业:[必做题] 1√AB互换 已知a,b均是整型变量,写出将a,b两个变量中的值互换的程序.(知识点:变量和运算符综合应用) [必做题] package com.two; public clas ...
- Java入门(三):变量和运算符
上次谈到了Java的基本数据类型,今天接着聊Java的变量.运算符. 一.变量 1.变量的分类 变量分为成员变量.局部变量和常量,其中成员变量又分为实例变量.类变量. 2.变量的定义 语法:变量类型( ...
- 一:1.2【print&input与变量和运算符】
[路径] 绝对路径:从根目录开始链接的路径 --->cd C:\Windows\Boot\DVD\EFI\en-US 相对路径:不从根目录开始链接的路径 ----> cd Boot\DV ...
- PostgreSQL自学笔记:5 数据类型和运算符
5 数据类型和运算符 5.1 PostgreSQL 数据类型介绍 5.1.1 整数类型 整型类型 字节 取值范围 smallint 2字节 -2^15 ~ 2^15 int integer 4字节 - ...
- Java 基础 变量和运算符
Java基础语法 第1章 变量 1.1 变量概述 1.2 计算机存储单元 1.3 基本类型之4类8种 1.4 常量与类型 1.5 定义变量(创建变量) 1.6 变量使用的注意事项 1.7 数据类型 ...
- Java变量和运算符
1.变量 变量概述 什么是变量?变量是一个内存中的小盒子(小容器),容器是什么?生活中也有很多容器,例如水杯是容器,用来装载水:你家里的大衣柜是容器,用来装载衣裤:饭盒是容器,用来装载饭菜.那么变量是 ...
随机推荐
- 【转】spring IOC和AOP的理解
spring 的优点?1.降低了组件之间的耦合性 ,实现了软件各层之间的解耦 2.可以使用容易提供的众多服务,如事务管理,消息服务等 3.容器提供单例模式支持 4.容器提供了AOP技术,利用它很容易实 ...
- 杭电2024 C语言合法标识符
链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=2024 开始真的对这题是一点头绪都没有,简直了.然后事实证明是我想多了,这题主要是把概念给弄清楚 ...
- 夯实Java基础(二十四)——Java8新特征之Optional类
1.概述 对于Java程序员来说,到目前为止出现次数最多的应该是NullpointException,它是导致Java应用程序失败的最常见原因.之前处理空指针我们必须先通过条件先去判断,然后再确认是否 ...
- 【转】android之在activity中控制另一个activity的UI更新_如何在activity之间传递handler
来自:http://blog.csdn.net/jason0539/article/details/18055259 遇到一个问题,需要在一个activity中控制另一个acitivity做一些更新, ...
- 电脑中安装了两个版本的jdk,后装的会把第一个覆盖掉
电脑中之前装过一个1.8的jdk,后来工作需要又装了个1.7的,但是1.7的没有在系统环境变量中进行配置,而是通过setclasspath文件设置的,但是后来我发现,虽然没有改变系统环境变量中的JAV ...
- [转]简单总结一下解决 添加 inline-block 后多出来的空隙
添加 inline-block 后: 查询.借鉴的原网址:http://www.zhangxinxu.com/wordpress/?p=2357 html 结构: <ul class=" ...
- C# Stream篇(三) -- TextWriter 和 StreamWriter
TextWriter 和 StreamWriter 目录: 为何介绍TextWriter? TextWriter的构造,常用属性和方法 IFormatProvider的简单介绍 如何理解StreamW ...
- java程序员的就业指导(重点)
想要成为合格的Java程序员或工程师到底需要具备哪些专业技能,面试者在面试之前到底需要准备哪些东西呢?本文陈列的这些内容既可以作为个人简历中的内容,也可以作为面试的时候跟面试官聊的东西,你可以把这些内 ...
- myeclipse汉化
MyEclipse默认安装在计算机用户目录下面,安装完成后对MyEclipse快捷方式使用鼠标右键属性---打开文件位置--进入安装的目录下面即可看到 zh_CN.7z解压缩将zh_CN目录文件放到 ...
- rsa免密钥登陆
#第一步 生成密钥,一路回车就行 ssh-keygen -t rsa #第二步 将密钥拷贝到目标服务器上,注意双引号 ssh-copy-id -i ~/.ssh/id_rsa.pub "ro ...