java中equals进行字符串比较总是false

text2字符串是从数据库取出的
a2是定义的字符串
为什么两个字符串完全相同用equals比较还是显示 false

3个回答

怎么得出完全相同的结论的?分别getBytes()对比一下内容。

qq_36287253
星辰大海.class 牛b
大约一年之前 回复
QUSSERS1991
QUSSERS1991 谢谢 。。知道错在什么地方了 是数据库的那个字符串在设计数据库的时候用的nchar,固定长度的。。
5 年多之前 回复

你这两个字符串不相等啊。

QUSSERS1991
QUSSERS1991 谢谢 知道错在什么地方了 是数据库的那个字符串在设计数据库的时候用的nchar,固定长度的
5 年多之前 回复

你看到的是一样的,甚至print出来是一样的,也并不代表它存的也是一样的呀。 编码问题什么的?

QUSSERS1991
QUSSERS1991 谢谢 知道错在什么地方了 是数据库的那个字符串在设计数据库的时候用的nchar,固定长度的
5 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
java,字符串比较问题,相同的字符串,却得出false的比较结果

下面贴代码,一个是server,一个是client client: package testClient; import java.net.Socket; import java.util.*; import java.io.*; public class Client { public static void main(String[] args) throws Exception{ // TODO Auto-generated method stub String str=null; Socket client=new Socket("localhost",8819); Scanner scan=new Scanner(client.getInputStream()); PrintWriter p=new PrintWriter(client.getOutputStream(),true); Scanner scan2=new Scanner(new InputStreamReader(System.in)); scan2.useDelimiter("\n"); System.out.println("请输入要发送给服务端的字符串"); if(scan2.hasNext()) str=scan2.next().toString(); p.println(str); client.shutdownOutput(); while(!scan.hasNext()); System.out.println(scan.next().toString()); } } 下面是server: package testServer; import java.net.*; import java.util.*; import java.io.*; public class server { public static void main(String[] args) throws Exception{ // TODO Auto-generated method stub String str=null; ServerSocket s=new ServerSocket(8819); System.out.println("已就绪,等待连接"); Scanner scan=new Scanner(new InputStreamReader(System.in)); Socket c=s.accept(); System.out.println("已连接上"); Scanner scan2=new Scanner(c.getInputStream()); scan2.useDelimiter("\n"); str=scan2.next(); if(str.equals(" hello world")) { PrintWriter w=new PrintWriter(c.getOutputStream()); w.println("已收到"); c.shutdownOutput(); }else { System.out.println("收到的字符串不正确"); System.out.println(str); } c.close(); } } 下面贴张输出结果的图: ![图片说明](https://img-ask.csdn.net/upload/201512/28/1451287112_697621.png) 请问是怎么回事?输出的字符串已说明接收到的str就是“hello world",但是str.equals("hello world")的结果却为false,请问这是怎么回事?

java中,socket拿到字符串如何处理问题!

UDP通信之后拿到字符串,我要对他进行截取处理! byte[] inBuf=new byte[1024]; DatagramPacket inPacket=new DatagramPacket(inBuf,inBuf.length); socket.receive(inPacket); receiveInfo= new String(inPacket.getData()); 我要写一个方法字符串截取 private String stringTopoint(String str,int len){ String ret = ""; StringBuilder sb = new StringBuilder(); for(int i=0;i<len;i++){ ret=sb.substring(3, 6); } return ret; }但是我拿到数据是字节的,我又要对字符串处理,我要怎么调用我写的方法呢?求大神赐教

java:在控制台输入字符串,内容明明和自己定义的字符串相同,却不相等?

我在控制台用InputStreamReader和BufferReader输入字符串并获取,但是获取的字符串和我自己定义的字符串内容明明相同,用==判断,结果却为false,为什么? 代码如下: import java.io.*; public class demo4{ public static void main(String args[]){ try{ String a = "abc"; InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); String b = br.readLine(); if(a == b){ System.out.println("ok"); }else{ System.out.println("not ok"); System.out.println(b); } }catch(Exception e){ e.printStackTrace(); } } }

java处理隐藏字符串的问题,识别清除非法字符

System.out.println("‭".equals("‬")); 这个返回值是false,这两个字符串都不是空字符串,会出现在手机号码的前后 js也会遇到同样的问题

Java实现在图片中嵌入字符串

我想在图片中嵌入字符串,以下程序实现了在图片中嵌入图片,请问要怎样改??? import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.awt.image.*; import java.io.*; public class Watermark extends JFrame implements ActionListener { Image iImage, oImage; BufferedImage bImage; int iw, ih; int[] pixels,//像素 cphpix; //加密图像数组 boolean loadflag = false, runflag = false; //图像处理执行标志 String imn, //图像文件名 imh, //加密图像标识"c_" wtr, title; //图像标题 ImageWatermark watermark; RAW reader; Common common; public Watermark() { setTitle("LSB图像水印"); this.setBackground(Color.lightGray); //菜单界面 setMenu(); watermark = new ImageWatermark(); reader = new RAW(); common = new Common(); //关闭窗口 closeWin(); setSize(530, 330); setVisible(true); } public void actionPerformed(ActionEvent evt) { Graphics graph = getGraphics(); MediaTracker tracker = new MediaTracker(this); if (evt.getSource() == openItem) { //打开要加水印的图片 JFileChooser chooser = new JFileChooser(); common.chooseFile(chooser, "./images/ch15", 0); int r = chooser.showOpenDialog(null); if(r == JFileChooser.APPROVE_OPTION) { if(runflag) { loadflag = false; runflag = false; } if(!loadflag) { String name = chooser.getSelectedFile().getAbsolutePath(); //取文件名 String filename = chooser.getSelectedFile().getName(); int len = filename.length(); //取扩展名 String exname = filename.substring(len-3, len); //取文件名imn imn = filename.substring(0, len-4); //取加密标识imh imh = filename.substring(0, 2); if(exname.equalsIgnoreCase("raw")) { pixels = reader.readRAW1D(name, iw, ih); ImageProducer ip = new MemoryImageSource(iw, ih, pixels, 0, iw); iImage = createImage(ip); } else { //装载图像 iImage = common.openImage(name, tracker); //取载入图像的宽和高 iw = iImage.getWidth(null); ih = iImage.getHeight(null); repaint(); } if(!imh.equals("j_")) title = "原图"; else title = "受攻击"; loadflag = true; } } } //LSB图像水印嵌入 else if(evt.getSource() == wlsbimageItem) { if(loadflag) { setTitle(" LSB图像水印 "); //选择水印路径 JOptionPane.showMessageDialog(null, "请选择要嵌入的水印!"); JFileChooser iconfileChooser = new JFileChooser("F:"); int returnVal2 = iconfileChooser.showOpenDialog(iconfileChooser);//打开"打开文件"对话框 String waterpath = iconfileChooser.getSelectedFile().getAbsolutePath();//你选择的文件夹的路径 pixels = common.grabber(common.openImage( waterpath, tracker), iw, ih); //读入水印图像 int[] water = watermark.readWater(pixels, iw, ih); pixels = common.grabber(iImage, iw, ih); System.out.println("水印"+pixels); //嵌入水印 pixels = watermark.chaosEmbed(pixels, water, iw, ih); showPix(graph, pixels, iw, ih, "原图", "含水印图"); runflag = true; //写入.raw含水印文件 reader.writeRAW("./images/ch15/water/w_" + imn + ".raw", pixels, iw, ih); JOptionPane.showMessageDialog(null, "在目录images/ch15/water,\n" + "保存含水印图像w_" + imn+".raw成功!"); } else JOptionPane.showMessageDialog(null,"请先打开一幅图!"); } //LSB图像水印提取 else if(evt.getSource() == dlsbimageItem) { //选择要提取水印图片的路径 JOptionPane.showMessageDialog(null, "请选择要提取水印的图片!"); JFileChooser iconfileChooser = new JFileChooser("./images/ch15/water"); int returnVal2 = iconfileChooser.showOpenDialog(iconfileChooser);//打开"打开文件"对话框 String picwaterpath = iconfileChooser.getSelectedFile().getAbsolutePath();//你选择的文件夹的路径 pixels = reader.readRAW1D(picwaterpath, iw, ih); ImageProducer ip = new MemoryImageSource(iw, ih, pixels, 0, iw); oImage = createImage(ip); pixels = common.grabber(oImage, iw, ih); //提取水印图像 pixels = watermark.getWater(pixels, iw, ih); showPix(graph, pixels, iw, ih, "原图", "取出水印"); runflag = true; } else if (evt.getSource() == exitItem) System.exit(0); } public void paint(Graphics g) { if (iImage != null) { g.clearRect(0, 0, 530, 350); g.drawImage(iImage, 5, 50, null); g.drawString(title, 120, 320); } } public Image showPix(Graphics graph, int[] pixels, int w, int h, String istr, String ostr) { //将数组中的象素产生一个图像 ImageProducer ip = new MemoryImageSource(w, h, pixels, 0, w); Image oImage = createImage(ip); common.draw(graph, iImage, istr, oImage, ostr); runflag = true; return oImage; } public static void main(String[] args) { new Watermark(); } private void closeWin() { addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); } //菜单界面 public void setMenu() { Menu fileMenu = new Menu("文件"); openItem = new MenuItem("打开"); openItem.addActionListener(this); fileMenu.add(openItem); exitItem = new MenuItem("退出"); exitItem.addActionListener(this); fileMenu.add(exitItem); Menu spwaterMenu = new Menu("空域水印"); wlsbimageItem = new MenuItem("LSB图像水印嵌入"); wlsbimageItem.addActionListener(this); spwaterMenu.add(wlsbimageItem); dlsbimageItem = new MenuItem("LSB图像水印提取"); dlsbimageItem.addActionListener(this); spwaterMenu.add(dlsbimageItem); MenuBar menuBar = new MenuBar(); menuBar.add(fileMenu); menuBar.add(spwaterMenu); setMenuBar(menuBar); } MenuItem openItem; MenuItem exitItem; MenuItem wlsbimageItem; //lsb嵌入图像水印 MenuItem dlsbimageItem; //lsb检测图像水印 } import java.awt.Image; import java.io.*; public class ImageWatermark { Common common = new Common(); // LSB嵌入水印 public int[] chaosEmbed(int[] pix, int[] water, int iw, int ih) { for (int i = 0; i < iw * ih; i++) { int emb;// 含水印灰度 int gray;// 灰度值 // 取(i,j)处的灰度 gray = pix[i] & 0xFF; if (gray % 2 == 1) gray = gray - 1;// 最低位清零 emb = gray + water[i];// 最低位嵌入水印 pix[i] = 255 << 24 | emb << 16 << 8 | emb; } return pix; } // 读入水印图,并转为二值图像矩阵 public int[] readWater(int[] pix, int iw, int ih) { int gray;// 灰度值 for (int i = 0; i < iw * ih; i++) { gray = pix[i] & 0xFF;// 取(i,j)处的灰度 if (gray > 128) pix[i] = 0;// while else pix[i] = 1;// black } return pix; } //提取水印图像 public int[] getWater(int[] pix, int iw, int ih) { int g; for (int i = 0; i < iw * ih; i++) { g = pix[i] & 0xFF; if (g % 2 == 0) g = 255; else g = 0; pix[i] = 255 << 24 | g << 16 | g << 8 | g; } return pix; } // 读入32*32水印图,并转为二值图像矩阵 public int[] readImWater(int[] pix, int iw, int ih) { int gray;// 灰度值 for (int i = 0; i < iw * ih; i++) { gray = pix[i] & 0xFF;// 取[i,j]处的灰度 if (gray > 128) pix[i] = 255;// white else pix[i] = 0;// black } return pix; } }

java中equals()方法比较

class V{ } public class T1 { public static void main(String[] args) { V v = new V(); V v1 = new V(); System.out.println(v.equals(v1)); }} 为什么输出是false

请问下hashcode在字符串比较equals和==中的作用

equals比较的是内容 也就是说 String a="AAA"; String b="AA"+new String("A"); System.out.println(a.equals(b)); 这时候输出的是true ==比较的是地址 System.out.println(a==b); 这时候输出的是false 然后我又输出a和b的hashcode 发现a和b的hashcode是一样的 我原本以为==比较的是hashcode 但是结果并不是,那么==比较地址要通过什么输出? 还有Java中能让a==b为true吗? 上次一个面试官问我 我答修改hashcode

比较 Java enum 成员: 或者 equals ()?

<div class="post-text" itemprop="text"> <p>I know that Java enums are compiled to classes with private constructors and a bunch of public static members. When comparing two members of a given enum, I've always used <code>.equals()</code>, e.g.</p> <pre><code>public useEnums(SomeEnum a) { if(a.equals(SomeEnum.SOME_ENUM_VALUE)) { ... } ... } </code></pre> <p>However, I just came across some code that uses the equals operator <code>==</code> instead of .equals():</p> <pre><code>public useEnums2(SomeEnum a) { if(a == SomeEnum.SOME_ENUM_VALUE) { ... } ... } </code></pre> <p>Which operator is the one I should be using?</p> </div> <p>转载于:https://stackoverflow.com/questions/1750435/comparing-java-enum-members-or-equals</p>

struts2 标签字符串比较问题

url形式如下: http://**.com/*.do?pageSimple=true struts2标签,如下三种为什么判断都等于false: &lt; s: property value='#parameters.pageSimple==true'/&gt; &lt; s: property value='#parameters.pageSimple=="true"'/&gt; &lt; s: property value="#parameters.pageSimple=='true'"/&gt;

java中关于字符串匹配的问题,哪里出了问题

/* 需求:当前有一张关键词表和一个新闻文本 要把在文本中所包含的词表中的关键词标识出来,(在这里我用的是前后加标识符) 然后输出到另一个文本 */ import java.io.*; public class adverbSiged { static File txtFile;// 将所有路径定义为全局变量 static File advFile; static File targetFile; static String beginSign = "#"; static String endSign = "**"; adverbSiged(File txtFile, File adverbFile, File targetFile) throws Exception { this.txtFile = txtFile; this.advFile = adverbFile; this.targetFile = targetFile; get(); } public void get() throws Exception { FileInputStream fisTxt = new FileInputStream(txtFile); BufferedReader bufAdv = new BufferedReader(new FileReader(advFile)); BufferedWriter bwTar = new BufferedWriter(new OutputStreamWriter( new FileOutputStream(targetFile), "utf-8")); // 将原文件读取至数组和txtStr中 int txtLenth = fisTxt.available(); byte[] txt = new byte[txtLenth]; fisTxt.read(txt); String txtStr = new String(txt); // 将原字符串每个字符和词汇表每个词比较 for (int i = 0; i < txtStr.length() - 1;) { String departStr = null; String line = null; boolean bool = false;//判断关键字表中是否有此关键字或词 while ((line = bufAdv.readLine()) != null) { departStr = txtStr.substring(i, i + line.length());//读取与关键字等长的子串 if (departStr.equals(line)) { bwTar.append(beginSign + line + endSign); bool = true; i = i + line.length();// 若找到此关键词,那么源字符串的角标向后移动此关键字的长度个位置 } } if (bool == false) {// 如果在整个词表都没有匹配到,那么将这一个字符输出,角标向后移一位。 bwTar.append(txtStr.subSequence(i, i + 1)); i = i + 1; } bwTar.flush(); } fisTxt.close(); bufAdv.close(); bwTar.close(); } public static void main(String[] args) throws Exception { txtFile = new File("C:\\Users\\Administrator\\Desktop\\原文本.txt"); advFile = new File("C:\\Users\\Administrator\\Desktop\\词表.txt"); targetFile = new File("C:\\Users\\Administrator\\Desktop\\目标.txt"); new adverbSiged(txtFile, advFile, targetFile); } } //程序运行后原文本直接复制到了目标文本,没有任何改变,而且文本中确实包含关键词,帮看看哪里出错了,感谢

el表达式判断字符串,用equals()就可以用==就不行

<!-- 批复编辑框 --> <c:if test="${sessionScope.employee.isLead.equals('是')}"> <div align="left"> <br> <p>批复:</p> <p><font color="red">${error}</font></p> <form action="CommitCriticism" method="post"> <textarea cols="40" id="criticismContent" name="criticismContent" rows="10"></textarea> <script type="text/javascript">CKEDITOR.replace( 'criticismContent' )</script> <input type="hidden" name="messageID" value="${message.messageID}"/> <input type="submit" value="提交"/> <input type="reset" value="重置"/> </form> </div> </c:if> 如果写成<c:if test="${sessionScope.employee.isLead == ‘是’}">的话,即使符合条件也没有输出,为什么?

java字符串的问题!!

我先输入几个字符串,然后再输入一个字符串,然后让它和前面输入的字符串进行比较,统计和它不一样的个数,输出c, 求大神看看下面的代码为什么实现不了。 import java.util.Scanner; public class Untitled{ public static void main(String[] args){ Scanner input = new Scanner(System.in); String[] names = new String[10000]; int c=0; while (input.hasNext()) { int n = input.nextInt(); for (int i=0;i<=n;i++) { names[i] = input.nextLine(); } String a=input.nextLine(); for (int i=0;i<n;i++) { if ((a.equals(names[i]))==false) { c=c+1; } } System.out.print(c); } } * 1. 1. 1. }

Java中如何将下拉菜单中的字符串数据提取出来运用到文本框的数字运算显示中?

![图片说明](https://img-ask.csdn.net/upload/201704/29/1493469364_574330.png) /*上部的功能已经实现了,但是下面除了那个复选框,下拉菜单的值我还是没办法运用到文本框中,ActionEvent只能将字符串直接传给文本框,不能提取实现数字运算,而且方法也不支持return返回值,抛异常我也尝试过,但是接口的的实现上又出了毛病,实在没辙了,求问解决办法,感激不尽 */ import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import javax.swing.*; import java.text.ParseException; import javax.swing.DefaultComboBoxModel; import javax.swing.JComboBox; import javax.swing.JFormattedTextField; import javax.swing.JFrame; import javax.swing.JPanel; class layout extends JFrame implements ActionListener { int propor; String help; private JPanel mb1,mb2,mb3; JLabel bq1,bq2,bq3,bq3_5,bq4,bq5,bq6; private JFormattedTextField rmb; private JFormattedTextField coupon; private JFormattedTextField gold; private JFormattedTextField gold_2; private JFormattedTextField exp; private JComboBox pro; JCheckBox link; public layout() { super("坦克世界计算器"); mb1 = new JPanel(); mb2 = new JPanel(); rmb= new JFormattedTextField(new java.text.DecimalFormat("#0")); coupon= new JFormattedTextField(new java.text.DecimalFormat("#0")); gold= new JFormattedTextField(new java.text.DecimalFormat("#0")); gold_2= new JFormattedTextField(new java.text.DecimalFormat("#0")); exp= new JFormattedTextField(new java.text.DecimalFormat("#0")); rmb.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.NumberFormatter(new java.text.DecimalFormat("#0")))); coupon.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.NumberFormatter(new java.text.DecimalFormat("#0")))); gold.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.NumberFormatter(new java.text.DecimalFormat("#0")))); gold_2.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.NumberFormatter(new java.text.DecimalFormat("#0")))); exp.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.NumberFormatter(new java.text.DecimalFormat("#0")))); rmb.addKeyListener(new java.awt.event.KeyAdapter() { public void keyReleased(java.awt.event.KeyEvent evt) { String old = rmb.getText(); JFormattedTextField.AbstractFormatter formatter = rmb.getFormatter(); if (!old.equals("")) { if (formatter != null) { String str = rmb.getText(); try { long page = (Long) formatter.stringToValue(str); coupon.setText(20*page + ""); gold.setText(40*page + ""); } catch (ParseException pe) { rmb.setText("0"); } } } } }); coupon.addKeyListener(new java.awt.event.KeyAdapter() { public void keyReleased(java.awt.event.KeyEvent evt) { String old = coupon.getText(); JFormattedTextField.AbstractFormatter formatter = coupon.getFormatter(); if (!old.equals("")) { if (formatter != null) { String str = coupon.getText(); try { long page = (Long) formatter.stringToValue(str); rmb.setText(page/20 + ""); gold.setText(page/20 + ""); } catch (ParseException pe) { coupon.setText("0"); } } } } }); gold.addKeyListener(new java.awt.event.KeyAdapter() { public void keyReleased(java.awt.event.KeyEvent evt) { String old = gold.getText(); JFormattedTextField.AbstractFormatter formatter = gold.getFormatter(); if (!old.equals("")) { if (formatter != null) { String str = gold.getText(); try { long page = (Long) formatter.stringToValue(str); rmb.setText(page/40 + ""); coupon.setText(page/20 + ""); } catch (ParseException pe) { gold.setText("0"); } } } } }); gold_2.addKeyListener(new java.awt.event.KeyAdapter() { public void keyReleased(java.awt.event.KeyEvent evt) { String old = gold_2.getText(); JFormattedTextField.AbstractFormatter formatter = gold_2.getFormatter(); if (!old.equals("")) { if (formatter != null) { String str = gold_2.getText(); try { long page = (Long) formatter.stringToValue(str); exp.setText(page*propor + ""); } catch (ParseException pe) { gold_2.setText("0"); } } } } }); exp.addKeyListener(new java.awt.event.KeyAdapter() { public void keyReleased(java.awt.event.KeyEvent evt) { String old = exp.getText(); JFormattedTextField.AbstractFormatter formatter = exp.getFormatter(); if (!old.equals("")) { if (formatter != null) { String str = exp.getText(); try { long page = (Long) formatter.stringToValue(str); gold_2.setText(page/propor + ""); } catch (ParseException pe) { exp.setText("0"); } } } } }); bq1=new JLabel("人民币",SwingConstants.CENTER); bq2=new JLabel("点券",SwingConstants.CENTER); bq3=new JLabel("金币",SwingConstants.CENTER); bq3_5=new JLabel(" "); bq4=new JLabel("金币",SwingConstants.CENTER); bq5=new JLabel("兑换比例",SwingConstants.CENTER); bq6=new JLabel("经验",SwingConstants.CENTER); pro= new JComboBox(); pro.setModel(new DefaultComboBoxModel(new String[] { "1:40", "1:35", "1:25"})); pro.setActionCommand("1");//设置动作命令 pro.addActionListener(this);//设置事件响应器 link=new JCheckBox("是否链接"); mb1.setLayout(new GridLayout(2,3,60,0)); mb2.setLayout(new GridLayout(2,4,10,0)); mb1.add(bq1); mb1.add(bq2); mb1.add(bq3); mb1.add(rmb); mb1.add(coupon); mb1.add(gold); mb2.add(bq3_5);mb2.add(bq4); mb2.add(bq5); mb2.add(bq6); mb2.add(link); mb2.add(gold_2); mb2.add(pro); mb2.add(exp); this.setLayout(new GridLayout(2,1)); this.add(mb1); this.add(mb2); this.setBounds(300, 280, 400, 200);//相当于setLocation+setSize this.setResizable(false); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public void actionPerformed(ActionEvent e){//当鼠标选择下拉菜单的值时 String comd =e.getActionCommand();//得到动作命令 if(comd.equals("1")){ help=((String) pro.getSelectedItem());//设置文本框的内容 } } } public class calculator { public static void main(String[] args) { new layout().setVisible(true); } } /*一般来说不可以,可以考虑用异常来达到目的,如: class MyException extends Exception { public MyException(String message) { super(message); } } class MyClass { public void doSomething()throws MyException { //do something String mystr="mystr" throw new MyException(mystr); } }*/

String的常量池,==与equals的比较

string String str1=new String("abc"); String str2=new String("abc"); System.out.println(str1==str2); System.out.println(str1.equals(str2));为什么str.equals(str2) 为true??真的搞不懂

Java中字符串直接赋值和new一个对象,得到的地址值是什么样子的

public class StringDemo2 { public static void main(String[] args) { String s1 = "hello"; String s2 = new String("hello"); String s3 = "hello"; System.out.println("s1:" + s1.getClass().getName() + "@" + s1.hashCode()); System.out.println("s2:" + s2.getClass().getName() + "@" + s2.hashCode()); System.out.println("s3:" + s3.getClass().getName() + "@" + s3.hashCode()); System.out.println("s1==s2:" + (s1 == s2)); System.out.println("s1.equals(s2):" + s1.equals(s2)); System.out.println("s1==s3:" + (s1 == s3)); System.out.println("s1.equals(s3):" + s1.equals(s3)); } } ![图片说明](https://img-ask.csdn.net/upload/201609/04/1472955787_199744.png) s1==s2结果是false,说明它们的地址值是不同的。但是为什么s1.getClass().getName() + "@" + s1.hashCode()ode(2/s1.getClass().getName() + "@" 2 s1.hashCode()却是一样的???

字符串逆序输出,并判断前后是否相等

package lab10_4; /** * * @author Administrator */ import java.util.Scanner; public class Lab10_4 { /** * @param args the command line arguments */ public static void main(String[] args) { // TODO code application logic here Scanner scan=new Scanner(System.in); System.out.print("请输入一个字符串:"); StringBuffer s=new StringBuffer(scan.nextLine()); System.out.print("逆序后的字符串是:"); StringBuffer s1=new StringBuffer(""); for( int i=s.length()-1;i>=0;--i){ System.out.print(s.charAt(i)); s1.append(s.charAt(i)); } s1.toString(); s.toString(); System.out.println(); System.out.print(s.equals(s1)); } } ![图片说明](https://img-ask.csdn.net/upload/201604/26/1461639254_62152.png) 为什么输出的是false

java核心技术卷一 equals方法 EqualTest.java

``` public class EqualTest { public static void main(String[] args) { Employee alice1 = new Employee("Alice Adams", 75000, 1989, 12, 15); Employee alice2 = alice1; Employee alice3 = new Employee("Alice Adams", 75000, 1989, 12, 15); Employee bob = new Employee("Bob Brandson", 50000, 1989, 10, 1); System.out.println("alice1 == alice2: "+(alice1==alice2)); System.out.println("alice1 == alice3: "+(alice1==alice3)); System.out.println("alice1.equals(alice3): "+alice1.equals(alice3)); System.out.println("alice1.equals(bob): "+alice1.equals(bob)); System.out.println("bob.toString(): "+bob); Manager car1 = new Manager("Carl Cracker", 80000, 1987, 12, 15); Manager boss = new Manager("Carl Cracker", 80000, 1987, 12, 15); boss.setBonus(5000); System.out.println("boss.toString(): "+boss); System.out.println("carl.equals(boss): "+car1.equals(boss)); System.out.println("alice1.hashCode(): "+alice1.hashCode()); System.out.println("alice3.hashCode(): "+alice3.hashCode()); System.out.println("bob.hashCode(): "+bob.hashCode()); System.out.println("car1.hashCode(): "+car1.hashCode()); } } import java.util.Date; import java.util.GregorianCalendar; import java.util.Objects; public class Employee { private String name; private double salary; private Date hireDay; public Employee(String n,double s,int year,int month,int day){ name = n; salary = s; GregorianCalendar calendar = new GregorianCalendar(year,month-1,day); hireDay = calendar.getTime(); } public String getName(){ return name; } public double getSalary(){ return salary; } public Date getHireDay(){ return hireDay; } public void raiseSalary(double byPercent){ double raise = salary * byPercent / 100; salary += raise; } public boolean equals(Object otherObject){ //这里获得一个对象参数,第一个if语句判断两个引用是否是同一个,如果是那么这两个对象肯定相等 if(this == otherObject) return true; //这里判断这个参数是否引用空值 if(otherObject == null) return false; //getClass()方法是得到对象的类,这里就是如果两个对象的类不一样,那么就不相等 if(getClass()!=otherObject.getClass()) return false; //在以上判断完成,再将得到的参数对象强制转换为该对象,考虑到父类引用子类的对象的出现,然后再判断对象的属性是否相同 Employee other = (Employee)otherObject; return Objects.equals(name, other.name)&&salary ==other.salary&& Objects.equals(hireDay, other.hireDay); } //哈希散列,有自己的计算方法,根据字符串来得到一段数字 public int hashCode(){ return Objects.hash(name,salary,hireDay); } //toString()方法,可自动生成 @Override public String toString() { return getClass().getName()+ "[name=" + name + ", salary=" + salary + ", hireDay=" + hireDay + "]"; } } public class Manager extends Employee { private double bonus; public Manager(String n,double s, int year,int month,int day){ super(n, s, year, month, day); bonus = 0; } public double getSalary(){ double baseSalary = super.getSalary(); return baseSalary + bonus; } public void setBonus(double b){ bonus = b; } public boolean equals(Object otherObject){ if(!super.equals(otherObject)) return false; Manager other = (Manager)otherObject; return bonus == other.bonus; } public int hashCode(){ return super.hashCode()+17*new Double(bonus).hashCode(); } public String toString(){ return super.toString()+"[bonus=]"+bonus+"]"; } } ``` 这个程序里面有一部分,是public boolean equals(object otherObject)方法, 在这个方法的return语句里面莫名其妙的出现了一个Object.equals(a,b),我不明白这个是从哪里来的,求大神解释一下。

java 字符串写入文件后再读出不一样?

import java.io.*; public class TestString { public static void main(String[] args) throws Exception { String str = "1"; String password = "x"; char s[] = str.toCharArray(); char p[] = password.toCharArray(); int n = s.length; int m = p.length; for (int k=0; k<n; ++k) { int temp = s[k] + p[k%m]; s[k] = (char)temp; } System.out.println("1 : " + (int)s[0] + " " + s[0]); // 输出: 1 : 169 ? str = new String(s); File file = new File("Test.txt"); FileWriter fw = new FileWriter(file); fw.write(str); fw.flush(); fw.close(); FileReader fr = new FileReader(file); String sss = ""; int b; while ((b=fr.read()) != -1) { System.out.println("2 : " + b + " " + (char)b); // 输出: 2 : 63 ? sss = sss + (char)b; } System.out.println("str : " + str); // 输出: str : ? System.out.println("sss : " + sss); // 输出: sss : ? System.out.println(str.equals(sss)); // 输出: false } }

有关.equals判断遇到 左右都为空值 的情况怎么处理

a, b, c, d 字符串都有可能为null。 想满足类似于下面的判断。 if(a.equals(b) && c.equals(d)) { 处理; } 判断值是否相等。可是用equals左侧空值时报错。 不能用判断地址的‘==’。 请问下各位大大怎么处理呢。谢

程序员的兼职技能课

获取讲师答疑方式: 在付费视频第一节(触摸命令_ALL)片头有二维码及加群流程介绍 限时福利 原价99元,今日仅需39元!购课添加小助手(微信号:csdn590)按提示还可领取价值800元的编程大礼包! 讲师介绍: 苏奕嘉&nbsp;前阿里UC项目工程师 脚本开发平台官方认证满级(六级)开发者。 我将如何教会你通过【定制脚本】赚到你人生的第一桶金? 零基础程序定制脚本开发课程,是完全针对零脚本开发经验的小白而设计,课程内容共分为3大阶段: ①前期将带你掌握Q开发语言和界面交互开发能力; ②中期通过实战来制作有具体需求的定制脚本; ③后期将解锁脚本的更高阶玩法,打通任督二脉; ④应用定制脚本合法赚取额外收入的完整经验分享,带你通过程序定制脚本开发这项副业,赚取到你的第一桶金!

Windows版YOLOv4目标检测实战:训练自己的数据集

课程演示环境:Windows10; cuda 10.2; cudnn7.6.5; Python3.7; VisualStudio2019; OpenCV3.4 需要学习ubuntu系统上YOLOv4的同学请前往:《YOLOv4目标检测实战:训练自己的数据集》 课程链接:https://edu.csdn.net/course/detail/28745 YOLOv4来了!速度和精度双提升! 与 YOLOv3 相比,新版本的 AP (精度)和 FPS (每秒帧率)分别提高了 10% 和 12%。 YOLO系列是基于深度学习的端到端实时目标检测方法。本课程将手把手地教大家使用labelImg标注和使用YOLOv4训练自己的数据集。课程实战分为两个项目:单目标检测(足球目标检测)和多目标检测(足球和梅西同时检测)。 本课程的YOLOv4使用AlexyAB/darknet,在Windows系统上做项目演示。包括:安装软件环境、安装YOLOv4、标注自己的数据集、整理自己的数据集、修改配置文件、训练自己的数据集、测试训练出的网络模型、性能统计(mAP计算)和先验框聚类分析。还将介绍改善YOLOv4目标检测性能的技巧。 除本课程《Windows版YOLOv4目标检测实战:训练自己的数据集》外,本人将推出有关YOLOv4目标检测的系列课程。请持续关注该系列的其它视频课程,包括: 《Windows版YOLOv4目标检测实战:人脸口罩佩戴检测》 《Windows版YOLOv4目标检测实战:中国交通标志识别》 《Windows版YOLOv4目标检测:原理与源码解析》

lena全身原图(非256*256版本,而是全身原图)

lena全身原图(非256*256版本,而是全身原图) lena原图很有意思,我们通常所用的256*256图片是在lena原图上截取了头部部分的256*256正方形得到的. 原图是花花公子杂志上的一个

快速入门Android开发 视频 教程 android studio

这是一门快速入门Android开发课程,顾名思义是让大家能快速入门Android开发。 学完能让你学会如下知识点: Android的发展历程 搭建Java开发环境 搭建Android开发环境 Android Studio基础使用方法 Android Studio创建项目 项目运行到模拟器 项目运行到真实手机 Android中常用控件 排查开发中的错误 Android中请求网络 常用Android开发命令 快速入门Gradle构建系统 项目实战:看美图 常用Android Studio使用技巧 项目签名打包 如何上架市场

Java调用微信支付

Java 使用微信支付 一. 准备工作 1.

汽车租赁管理系统需求分析规格说明书

汽车租赁管理系统需求分析规格说明书,这只是一个模板,如果有不会的可以借鉴一下,还是蛮详细的。。。。

C/C++跨平台研发从基础到高阶实战系列套餐

一 专题从基础的C语言核心到c++ 和stl完成基础强化; 二 再到数据结构,设计模式完成专业计算机技能强化; 三 通过跨平台网络编程,linux编程,qt界面编程,mfc编程,windows编程,c++与lua联合编程来完成应用强化 四 最后通过基于ffmpeg的音视频播放器,直播推流,屏幕录像,

程序员的算法通关课:知己知彼(第一季)

【超实用课程内容】 程序员对于算法一直又爱又恨!特别是在求职面试时,算法类问题绝对是不可逃避的提问点!本门课程作为算法面试系列的第一季,会从“知己知彼”的角度,聊聊关于算法面试的那些事~ 【哪些人适合学习这门课程?】 求职中的开发者,对于面试算法阶段缺少经验 想了解实际工作中算法相关知识 在职程序员,算法基础薄弱,急需充电 【超人气讲师】 孙秀洋&nbsp;| 服务器端工程师 硕士毕业于哈工大计算机科学与技术专业,ACM亚洲区赛铜奖获得者,先后在腾讯和百度从事一线技术研发,对算法和后端技术有深刻见解。 【课程如何观看?】 PC端:https://edu.csdn.net/course/detail/27272 移动端:CSDN 学院APP(注意不是CSDN APP哦) 本课程为录播课,课程无限观看时长,但是大家可以抓紧时间学习后一起讨论哦~

机器学习初学者必会的案例精讲

通过六个实际的编码项目,带领同学入门人工智能。这些项目涉及机器学习(回归,分类,聚类),深度学习(神经网络),底层数学算法,Weka数据挖掘,利用Git开源项目实战等。

Python入门视频精讲

Python入门视频培训课程以通俗易懂的方式讲解Python核心技术,Python基础,Python入门。适合初学者的教程,让你少走弯路! 课程内容包括:1.Python简介和安装 、2.第一个Python程序、PyCharm的使用 、3.Python基础、4.函数、5.高级特性、6.面向对象、7.模块、8.异常处理和IO操作、9.访问数据库MySQL。教学全程采用笔记+代码案例的形式讲解,通俗易懂!!!

我以为我对Mysql事务很熟,直到我遇到了阿里面试官

太惨了,面试又被吊打

深度学习原理+项目实战+算法详解+主流框架(套餐)

深度学习系列课程从深度学习基础知识点开始讲解一步步进入神经网络的世界再到卷积和递归神经网络,详解各大经典网络架构。实战部分选择当下最火爆深度学习框架PyTorch与Tensorflow/Keras,全程实战演示框架核心使用与建模方法。项目实战部分选择计算机视觉与自然语言处理领域经典项目,从零开始详解算法原理,debug模式逐行代码解读。适合准备就业和转行的同学们加入学习! 建议按照下列课程顺序来进行学习 (1)掌握深度学习必备经典网络架构 (2)深度框架实战方法 (3)计算机视觉与自然语言处理项目实战。(按照课程排列顺序即可)

Java62数据提取代码

利用苹果手机微信下面的wx.data文件提取出62数据,通过62可以实现不同设备直接登陆,可以通过文件流的方式用脚本上传到服务器进行解析

Python代码实现飞机大战

文章目录经典飞机大战一.游戏设定二.我方飞机三.敌方飞机四.发射子弹五.发放补给包六.主模块 经典飞机大战 源代码以及素材资料(图片,音频)可从下面的github中下载: 飞机大战源代码以及素材资料github项目地址链接 ————————————————————————————————————————————————————————— 不知道大家有没有打过飞机,喜不喜欢打飞机。当我第一次接触这个东西的时候,我的内心是被震撼到的。第一次接触打飞机的时候作者本人是身心愉悦的,因为周边的朋友都在打飞机, 每

2018年全国大学生计算机技能应用大赛决赛 大题

2018年全国大学生计算机技能应用大赛决赛大题,程序填空和程序设计(侵删)

Lena图像处理测试专业用图,高清完整全身原图

Lena图像处理测试专业用图,高清完整全身原图,该图片很好的包含了平坦区域、阴影和纹理等细节,这些都有益于测试各种不同的图像处理算法。它是一幅很好的测试照片!其次,由于这是一个非常有魅力女人的照片。

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

verilog实现地铁系统售票

使用 verilog 实现地铁售票

Python+OpenCV计算机视觉

Python+OpenCV计算机视觉系统全面的介绍。

Python可以这样学(第四季:数据分析与科学计算可视化)

董付国老师系列教材《Python程序设计(第2版)》(ISBN:9787302436515)、《Python可以这样学》(ISBN:9787302456469)配套视频,在教材基础上又增加了大量内容,通过实例讲解numpy、scipy、pandas、statistics、matplotlib等标准库和扩展库用法。

150讲轻松搞定Python网络爬虫

【为什么学爬虫?】 &nbsp; &nbsp; &nbsp; &nbsp;1、爬虫入手容易,但是深入较难,如何写出高效率的爬虫,如何写出灵活性高可扩展的爬虫都是一项技术活。另外在爬虫过程中,经常容易遇到被反爬虫,比如字体反爬、IP识别、验证码等,如何层层攻克难点拿到想要的数据,这门课程,你都能学到! &nbsp; &nbsp; &nbsp; &nbsp;2、如果是作为一个其他行业的开发者,比如app开发,web开发,学习爬虫能让你加强对技术的认知,能够开发出更加安全的软件和网站 【课程设计】 一个完整的爬虫程序,无论大小,总体来说可以分成三个步骤,分别是: 网络请求:模拟浏览器的行为从网上抓取数据。 数据解析:将请求下来的数据进行过滤,提取我们想要的数据。 数据存储:将提取到的数据存储到硬盘或者内存中。比如用mysql数据库或者redis等。 那么本课程也是按照这几个步骤循序渐进的进行讲解,带领学生完整的掌握每个步骤的技术。另外,因为爬虫的多样性,在爬取的过程中可能会发生被反爬、效率低下等。因此我们又增加了两个章节用来提高爬虫程序的灵活性,分别是: 爬虫进阶:包括IP代理,多线程爬虫,图形验证码识别、JS加密解密、动态网页爬虫、字体反爬识别等。 Scrapy和分布式爬虫:Scrapy框架、Scrapy-redis组件、分布式爬虫等。 通过爬虫进阶的知识点我们能应付大量的反爬网站,而Scrapy框架作为一个专业的爬虫框架,使用他可以快速提高我们编写爬虫程序的效率和速度。另外如果一台机器不能满足你的需求,我们可以用分布式爬虫让多台机器帮助你快速爬取数据。 &nbsp; 从基础爬虫到商业化应用爬虫,本套课程满足您的所有需求! 【课程服务】 专属付费社群+每周三讨论会+1v1答疑

获取Linux下Ftp目录树并逐步绑定到treeview

在linux下抓取目录树,双击后获取该节点子节点(逐步生成)。另外有两个类,一个是windows下的(一次性获取目录树),一个是linux下的(足部获取目录树)

YOLOv3目标检测实战系列课程

《YOLOv3目标检测实战系列课程》旨在帮助大家掌握YOLOv3目标检测的训练、原理、源码与网络模型改进方法。 本课程的YOLOv3使用原作darknet(c语言编写),在Ubuntu系统上做项目演示。 本系列课程包括三门课: (1)《YOLOv3目标检测实战:训练自己的数据集》 包括:安装darknet、给自己的数据集打标签、整理自己的数据集、修改配置文件、训练自己的数据集、测试训练出的网络模型、性能统计(mAP计算和画出PR曲线)和先验框聚类。 (2)《YOLOv3目标检测:原理与源码解析》讲解YOLOv1、YOLOv2、YOLOv3的原理、程序流程并解析各层的源码。 (3)《YOLOv3目标检测:网络模型改进方法》讲解YOLOv3的改进方法,包括改进1:不显示指定类别目标的方法 (增加功能) ;改进2:合并BN层到卷积层 (加快推理速度) ; 改进3:使用GIoU指标和损失函数 (提高检测精度) ;改进4:tiny YOLOv3 (简化网络模型)并介绍 AlexeyAB/darknet项目。

手把手实现Java图书管理系统(附源码)

【超实用课程内容】 本课程演示的是一套基于Java的SSM框架实现的图书管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的java人群。详细介绍了图书管理系统的实现,包括:环境搭建、系统业务、技术实现、项目运行、功能演示、系统扩展等,以通俗易懂的方式,手把手的带你从零开始运行本套图书管理系统,该项目附带全部源码可作为毕设使用。 【课程如何观看?】 PC端:https://edu.csdn.net/course/detail/27513 移动端:CSDN 学院APP(注意不是CSDN APP哦) 本课程为录播课,课程2年有效观看时长,大家可以抓紧时间学习后一起讨论哦~ 【学员专享增值服务】 源码开放 课件、课程案例代码完全开放给你,你可以根据所学知识,自行修改、优化

微信小程序开发实战之番茄时钟开发

微信小程序番茄时钟视频教程,本课程将带着各位学员开发一个小程序初级实战类项目,针对只看过官方文档而又无从下手的开发者来说,可以作为一个较好的练手项目,对于有小程序开发经验的开发者而言,可以更好加深对小程序各类组件和API 的理解,为更深层次高难度的项目做铺垫。

Java 最常见的 200+ 面试题:面试必备

这份面试清单是从我 2015 年做了 TeamLeader 之后开始收集的,一方面是给公司招聘用,另一方面是想用它来挖掘在 Java 技术栈中,还有那些知识点是我不知道的,我想找到这些技术盲点,然后修复它,以此来提高自己的技术水平。虽然我是从 2009 年就开始参加编程工作了,但我依旧觉得自己现在要学的东西很多,并且学习这些知识,让我很有成就感和满足感,那所以何乐而不为呢? 说回面试的事,这份面试...

Java基础知识面试题(2020最新版)

文章目录Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系什么是跨平台性?原理是什么Java语言有哪些特点什么是字节码?采用字节码的最大好处是什么什么是Java程序的主类?应用程序和小程序的主类有何不同?Java应用程序与小程序之间有那些差别?Java和C++的区别Oracle JDK 和 OpenJDK 的对比基础语法数据类型Java有哪些数据类型switc...

三个项目玩转深度学习(附1G源码)

从事大数据与人工智能开发与实践约十年,钱老师亲自见证了大数据行业的发展与人工智能的从冷到热。事实证明,计算机技术的发展,算力突破,海量数据,机器人技术等,开启了第四次工业革命的序章。深度学习图像分类一直是人工智能的经典任务,是智慧零售、安防、无人驾驶等机器视觉应用领域的核心技术之一,掌握图像分类技术是机器视觉学习的重中之重。针对现有线上学习的特点与实际需求,我们开发了人工智能案例实战系列课程。打造:以项目案例实践为驱动的课程学习方式,覆盖了智能零售,智慧交通等常见领域,通过基础学习、项目案例实践、社群答疑,三维立体的方式,打造最好的学习效果。

微信小程序 实例汇总 完整项目源代码

微信小程序 实例汇总 完整项目源代码

基于西门子S7—1200的单部六层电梯设计程序,1部6层电梯

基于西门子S7—1200的单部六层电梯设计程序,1部6层电梯。 本系统控制六层电梯, 采用集选控制方式。 为了完成设定的控制任务, 主要根据电梯输入/输出点数确定PLC 的机型。 根据电梯控制的要求,

相关热词 c#分级显示数据 c# 不区分大小写替换 c#中调用就java c#正则表达式 验证小数 c# vscode 配置 c#三维数组能存多少数据 c# 新建excel c#多个文本框 c#怎么创建tcp通讯 c# mvc 电子病例
立即提问